diff options
138 files changed, 4804 insertions, 3571 deletions
diff --git a/components/canvas_traits/lib.rs b/components/canvas_traits/lib.rs index db945750a0c..d148baf0550 100644 --- a/components/canvas_traits/lib.rs +++ b/components/canvas_traits/lib.rs @@ -552,3 +552,21 @@ pub fn byte_swap(data: &mut [u8]) { i += 4; } } + +pub fn byte_swap_and_premultiply(data: &mut [u8]) { + let length = data.len(); + + let mut i = 0; + while i < length { + let r = data[i + 2]; + let g = data[i + 1]; + let b = data[i + 0]; + let a = data[i + 3]; + + data[i + 0] = ((r as u32) * (a as u32) / 255) as u8; + data[i + 1] = ((g as u32) * (a as u32) / 255) as u8; + data[i + 2] = ((b as u32) * (a as u32) / 255) as u8; + + i += 4; + } +} diff --git a/components/devtools_traits/lib.rs b/components/devtools_traits/lib.rs index 2d8f5f0c197..ecaec49995b 100644 --- a/components/devtools_traits/lib.rs +++ b/components/devtools_traits/lib.rs @@ -252,7 +252,7 @@ bitflags! { #[derive(Deserialize, Serialize)] pub struct PageError { - #[serde(rename = "type")] + #[serde(rename = "_type")] pub type_: String, pub errorMessage: String, pub sourceName: String, @@ -270,7 +270,7 @@ pub struct PageError { #[derive(Deserialize, Serialize)] pub struct ConsoleAPI { - #[serde(rename = "type")] + #[serde(rename = "_type")] pub type_: String, pub level: String, pub filename: String, diff --git a/components/layout/Cargo.toml b/components/layout/Cargo.toml index e974cfa9b1d..460cd5f0c07 100644 --- a/components/layout/Cargo.toml +++ b/components/layout/Cargo.toml @@ -33,7 +33,7 @@ range = {path = "../range"} rustc-serialize = "0.3" script_layout_interface = {path = "../script_layout_interface"} script_traits = {path = "../script_traits"} -selectors = {version = "0.12", features = ["heap_size"]} +selectors = {version = "0.13", features = ["heap_size"]} serde_macros = "0.8" smallvec = "0.1" string_cache = {version = "0.2.26", features = ["heap_size"]} diff --git a/components/layout/table.rs b/components/layout/table.rs index 96475f4a9e2..a67312d1bc3 100644 --- a/components/layout/table.rs +++ b/components/layout/table.rs @@ -311,12 +311,13 @@ impl Flow for TableFlow { &mut self.collapsed_block_direction_border_widths_for_table); previous_collapsed_block_end_borders = PreviousBlockCollapsedBorders::FromPreviousRow( - row.final_collapsed_borders.block_end.clone()) + row.final_collapsed_borders.block_end.clone()); } first_row = false - } + }; } + computation.surrounding_size = computation.surrounding_size + self.total_horizontal_spacing(); @@ -425,7 +426,7 @@ impl Flow for TableFlow { collapsed_inline_direction_border_widths_for_table, &mut collapsed_block_direction_border_widths_for_table); } - }) + }); } fn assign_block_size<'a>(&mut self, _: &'a LayoutContext<'a>) { @@ -589,7 +590,7 @@ impl ColumnIntrinsicInlineSize { /// /// TODO(pcwalton): There will probably be some `border-collapse`-related info in here too /// eventually. -#[derive(RustcEncodable, Clone, Copy)] +#[derive(RustcEncodable, Clone, Copy, Debug)] pub struct ColumnComputedInlineSize { /// The computed size of this inline column. pub size: Au, @@ -629,27 +630,21 @@ fn perform_border_collapse_for_row(child_table_row: &mut TableRowFlow, next_block_borders: NextBlockCollapsedBorders, inline_spacing: &mut Vec<Au>, block_spacing: &mut Vec<Au>) { + let number_of_borders_inline_direction = child_table_row.preliminary_collapsed_borders.inline.len(); // Compute interior inline borders. for (i, this_inline_border) in child_table_row.preliminary_collapsed_borders .inline - .iter() + .iter_mut() .enumerate() { child_table_row.final_collapsed_borders.inline.push_or_set(i, *this_inline_border); + if i == 0 { + child_table_row.final_collapsed_borders.inline[i].combine(&table_inline_borders.start); + } else if i + 1 == number_of_borders_inline_direction { + child_table_row.final_collapsed_borders.inline[i].combine(&table_inline_borders.end); + } let inline_spacing = inline_spacing.get_mut_or_push(i, Au(0)); - *inline_spacing = cmp::max(*inline_spacing, this_inline_border.width) - } - - // Collapse edge interior borders with the table. - if let Some(ref mut first_inline_borders) = child_table_row.final_collapsed_borders - .inline - .get_mut(0) { - first_inline_borders.combine(&table_inline_borders.start) - } - if let Some(ref mut last_inline_borders) = child_table_row.final_collapsed_borders - .inline - .last_mut() { - last_inline_borders.combine(&table_inline_borders.end) + *inline_spacing = cmp::max(*inline_spacing, child_table_row.final_collapsed_borders.inline[i].width) } // Compute block-start borders. @@ -777,6 +772,7 @@ impl TableLikeFlow for BlockFlow { } /// Inline collapsed borders for the table itself. +#[derive(Debug)] struct TableInlineCollapsedBorders { /// The table border at the start of the inline direction. start: CollapsedBorder, diff --git a/components/layout/table_row.rs b/components/layout/table_row.rs index a941905e5e9..d3066ff0a6a 100644 --- a/components/layout/table_row.rs +++ b/components/layout/table_row.rs @@ -245,10 +245,13 @@ impl Flow for TableRowFlow { .style() .get_inheritedtable() .border_collapse == border_collapse::T::collapse; - // FIXME(pcwalton): Shouldn't use `CollapsedBorder::new()` here. - self.preliminary_collapsed_borders.reset(CollapsedBorder::new()); + let row_style = &*self.block_flow.fragment.style; + self.preliminary_collapsed_borders.reset( + CollapsedBorder::inline_start(&row_style, + CollapsedBorderProvenance::FromTableRow)); { + let children_count = self.block_flow.base.children.len(); let mut iterator = self.block_flow.base.child_iter_mut().enumerate().peekable(); while let Some((i, kid)) = iterator.next() { assert!(kid.is_table_cell()); @@ -268,6 +271,8 @@ impl Flow for TableRowFlow { // Perform border collapse if necessary. if collapsing_borders { perform_inline_direction_border_collapse_for_row( + row_style, + children_count, i, child_table_cell, &mut iterator, @@ -829,10 +834,20 @@ pub struct BorderCollapseInfoForChildTableCell<'a> { /// table row. This is done eagerly here so that at least the inline inside border collapse /// computations can be parallelized across all the rows of the table. fn perform_inline_direction_border_collapse_for_row( + row_style: &ServoComputedValues, + children_count: usize, child_index: usize, child_table_cell: &mut TableCellFlow, iterator: &mut Peekable<Enumerate<MutFlowListIterator>>, preliminary_collapsed_borders: &mut CollapsedBordersForRow) { + // In the first cell, combine its border with the one coming from the row. + if child_index == 0 { + let first_inline_border = &mut preliminary_collapsed_borders.inline[0]; + first_inline_border.combine( + &CollapsedBorder::inline_start(&*child_table_cell.block_flow.fragment.style, + CollapsedBorderProvenance::FromPreviousTableCell)); + } + let inline_collapsed_border = preliminary_collapsed_borders.inline.push_or_set( child_index + 1, CollapsedBorder::inline_end(&*child_table_cell.block_flow.fragment.style, @@ -845,12 +860,25 @@ fn perform_inline_direction_border_collapse_for_row( CollapsedBorderProvenance::FromNextTableCell)) }; - let block_start_border = + // In the last cell, also take into account the border that may + // come from the row. + if child_index + 1 == children_count { + inline_collapsed_border.combine( + &CollapsedBorder::inline_end(&row_style, + CollapsedBorderProvenance::FromTableRow)); + } + + let mut block_start_border = CollapsedBorder::block_start(&*child_table_cell.block_flow.fragment.style, CollapsedBorderProvenance::FromNextTableCell); + block_start_border.combine( + &CollapsedBorder::block_start(row_style, CollapsedBorderProvenance::FromTableRow)); preliminary_collapsed_borders.block_start.push_or_set(child_index, block_start_border); - let block_end_border = + let mut block_end_border = CollapsedBorder::block_end(&*child_table_cell.block_flow.fragment.style, - CollapsedBorderProvenance::FromPreviousTableCell); + CollapsedBorderProvenance::FromPreviousTableCell); + block_end_border.combine( + &CollapsedBorder::block_end(row_style, CollapsedBorderProvenance::FromTableRow)); + preliminary_collapsed_borders.block_end.push_or_set(child_index, block_end_border); } diff --git a/components/layout_thread/lib.rs b/components/layout_thread/lib.rs index 4cf5a435da7..d3be538e2b3 100644 --- a/components/layout_thread/lib.rs +++ b/components/layout_thread/lib.rs @@ -85,7 +85,7 @@ use net_traits::image_cache_thread::{ImageCacheChan, ImageCacheResult, ImageCach use profile_traits::mem::{self, Report, ReportKind, ReportsChan}; use profile_traits::time::{TimerMetadataFrameType, TimerMetadataReflowType}; use profile_traits::time::{self, TimerMetadata, profile}; -use script::layout_wrapper::ServoLayoutNode; +use script::layout_wrapper::{ServoLayoutDocument, ServoLayoutNode}; use script_layout_interface::message::{Msg, NewLayoutThreadInfo, Reflow, ReflowQueryType, ScriptReflow}; use script_layout_interface::reporter::CSSErrorReporter; use script_layout_interface::restyle_damage::{REPAINT, STORE_OVERFLOW, REFLOW_OUT_OF_FLOW, REFLOW}; @@ -629,6 +629,7 @@ impl LayoutThread { reflow_info.goal); self.perform_post_style_recalc_layout_passes(&reflow_info, + None, &mut *rw_data, &mut layout_context); @@ -901,6 +902,7 @@ impl LayoutThread { fn compute_abs_pos_and_build_display_list(&mut self, data: &Reflow, + document: Option<&ServoLayoutDocument>, layout_root: &mut Flow, shared_layout_context: &mut SharedLayoutContext, rw_data: &mut LayoutThreadData) { @@ -962,59 +964,69 @@ impl LayoutThread { Some(Arc::new(DisplayList::new(root_stacking_context, display_list_entries))) } - if data.goal == ReflowGoal::ForDisplay { - let display_list = (*rw_data.display_list.as_ref().unwrap()).clone(); + if data.goal != ReflowGoal::ForDisplay { + // Defer the paint step until the next ForDisplay. + // + // We need to tell the document about this so it doesn't + // incorrectly suppress reflows. See #13131. + document.expect("No document in a non-display reflow?") + .needs_paint_from_layout(); + return; + } + if let Some(document) = document { + document.will_paint(); + } + let display_list = (*rw_data.display_list.as_ref().unwrap()).clone(); - if opts::get().dump_display_list { - display_list.print(); - } - if opts::get().dump_display_list_json { - println!("{}", serde_json::to_string_pretty(&display_list).unwrap()); - } + if opts::get().dump_display_list { + display_list.print(); + } + if opts::get().dump_display_list_json { + println!("{}", serde_json::to_string_pretty(&display_list).unwrap()); + } - debug!("Layout done!"); - - self.epoch.next(); - - if let Some(ref mut webrender_api) = self.webrender_api { - // TODO: Avoid the temporary conversion and build webrender sc/dl directly! - let Epoch(epoch_number) = self.epoch; - let epoch = webrender_traits::Epoch(epoch_number); - let pipeline_id = self.id.to_webrender(); - - // TODO(gw) For now only create a root scrolling layer! - let mut frame_builder = WebRenderFrameBuilder::new(pipeline_id); - let root_scroll_layer_id = frame_builder.next_scroll_layer_id(); - let sc_id = rw_data.display_list.as_ref().unwrap().convert_to_webrender( - webrender_api, - pipeline_id, - epoch, - Some(root_scroll_layer_id), - &mut frame_builder); - let root_background_color = get_root_flow_background_color(layout_root); - let root_background_color = - webrender_traits::ColorF::new(root_background_color.r, - root_background_color.g, - root_background_color.b, - root_background_color.a); - - let viewport_size = Size2D::new(self.viewport_size.width.to_f32_px(), - self.viewport_size.height.to_f32_px()); - - webrender_api.set_root_stacking_context( - sc_id, - root_background_color, - epoch, - pipeline_id, - viewport_size, - frame_builder.stacking_contexts, - frame_builder.display_lists, - frame_builder.auxiliary_lists_builder.finalize()); - } else { - self.paint_chan - .send(LayoutToPaintMsg::PaintInit(self.epoch, display_list)) - .unwrap(); - } + debug!("Layout done!"); + + self.epoch.next(); + + if let Some(ref mut webrender_api) = self.webrender_api { + // TODO: Avoid the temporary conversion and build webrender sc/dl directly! + let Epoch(epoch_number) = self.epoch; + let epoch = webrender_traits::Epoch(epoch_number); + let pipeline_id = self.id.to_webrender(); + + // TODO(gw) For now only create a root scrolling layer! + let mut frame_builder = WebRenderFrameBuilder::new(pipeline_id); + let root_scroll_layer_id = frame_builder.next_scroll_layer_id(); + let sc_id = rw_data.display_list.as_ref().unwrap().convert_to_webrender( + webrender_api, + pipeline_id, + epoch, + Some(root_scroll_layer_id), + &mut frame_builder); + let root_background_color = get_root_flow_background_color(layout_root); + let root_background_color = + webrender_traits::ColorF::new(root_background_color.r, + root_background_color.g, + root_background_color.b, + root_background_color.a); + + let viewport_size = Size2D::new(self.viewport_size.width.to_f32_px(), + self.viewport_size.height.to_f32_px()); + + webrender_api.set_root_stacking_context( + sc_id, + root_background_color, + epoch, + pipeline_id, + viewport_size, + frame_builder.stacking_contexts, + frame_builder.display_lists, + frame_builder.auxiliary_lists_builder.finalize()); + } else { + self.paint_chan + .send(LayoutToPaintMsg::PaintInit(self.epoch, display_list)) + .unwrap(); } }); } @@ -1205,6 +1217,7 @@ impl LayoutThread { // Perform post-style recalculation layout passes. self.perform_post_style_recalc_layout_passes(&data.reflow_info, + Some(&document), &mut rw_data, &mut shared_layout_context); @@ -1327,7 +1340,7 @@ impl LayoutThread { false, reflow_info.goal); - self.perform_post_main_layout_passes(&reflow_info, &mut *rw_data, &mut layout_context); + self.perform_post_main_layout_passes(&reflow_info, None, &mut *rw_data, &mut layout_context); true } @@ -1385,6 +1398,7 @@ impl LayoutThread { } self.perform_post_style_recalc_layout_passes(&reflow_info, + None, &mut *rw_data, &mut layout_context); } @@ -1407,12 +1421,14 @@ impl LayoutThread { return } self.perform_post_style_recalc_layout_passes(&reflow_info, + None, &mut *rw_data, &mut layout_context); } fn perform_post_style_recalc_layout_passes(&mut self, data: &Reflow, + document: Option<&ServoLayoutDocument>, rw_data: &mut LayoutThreadData, layout_context: &mut SharedLayoutContext) { if let Some(mut root_flow) = self.root_flow.clone() { @@ -1487,17 +1503,19 @@ impl LayoutThread { flow_ref::deref_mut(&mut root_flow) as &mut Flow); }); - self.perform_post_main_layout_passes(data, rw_data, layout_context); + self.perform_post_main_layout_passes(data, document, rw_data, layout_context); } } fn perform_post_main_layout_passes(&mut self, data: &Reflow, + document: Option<&ServoLayoutDocument>, rw_data: &mut LayoutThreadData, layout_context: &mut SharedLayoutContext) { // Build the display list if necessary, and send it to the painter. if let Some(mut root_flow) = self.root_flow.clone() { self.compute_abs_pos_and_build_display_list(data, + document, flow_ref::deref_mut(&mut root_flow), &mut *layout_context, rw_data); diff --git a/components/plugins/lints/unrooted_must_root.rs b/components/plugins/lints/unrooted_must_root.rs index 4e4d2328324..3170bb190e7 100644 --- a/components/plugins/lints/unrooted_must_root.rs +++ b/components/plugins/lints/unrooted_must_root.rs @@ -53,6 +53,8 @@ fn is_unrooted_ty(cx: &LateContext, ty: &ty::TyS, in_new_function: bool) -> bool false } else if match_def_path(cx, did.did, &["core", "cell", "Ref"]) || match_def_path(cx, did.did, &["core", "cell", "RefMut"]) + || match_def_path(cx, did.did, &["style", "refcell", "Ref"]) + || match_def_path(cx, did.did, &["style", "refcell", "RefMut"]) || match_def_path(cx, did.did, &["core", "slice", "Iter"]) || match_def_path(cx, did.did, &["std", "collections", "hash", "map", "OccupiedEntry"]) || match_def_path(cx, did.did, &["std", "collections", "hash", "map", "VacantEntry"]) { diff --git a/components/script/Cargo.toml b/components/script/Cargo.toml index 30aab73f112..3e8e216c986 100644 --- a/components/script/Cargo.toml +++ b/components/script/Cargo.toml @@ -56,13 +56,12 @@ plugins = {path = "../plugins"} profile_traits = {path = "../profile_traits"} rand = "0.3" range = {path = "../range"} -ref_filter_map = "1.0" ref_slice = "1.0" regex = "0.1.43" rustc-serialize = "0.3" script_layout_interface = {path = "../script_layout_interface"} script_traits = {path = "../script_traits"} -selectors = {version = "0.12", features = ["heap_size"]} +selectors = {version = "0.13", features = ["heap_size"]} serde = "0.8" smallvec = "0.1" string_cache = {version = "0.2.26", features = ["heap_size", "unstable"]} diff --git a/components/script/dom/attr.rs b/components/script/dom/attr.rs index d5a00e6c1fa..36de48a1f9b 100644 --- a/components/script/dom/attr.rs +++ b/components/script/dom/attr.rs @@ -15,10 +15,10 @@ use dom::element::{AttributeMutation, Element}; use dom::virtualmethods::vtable_for; use dom::window::Window; use std::borrow::ToOwned; -use std::cell::Ref; use std::mem; use string_cache::{Atom, Namespace}; use style::attr::{AttrIdentifier, AttrValue}; +use style::refcell::Ref; // https://dom.spec.whatwg.org/#interface-attr #[dom_struct] diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py index 7842e08bfa7..cf918feb8e3 100644 --- a/components/script/dom/bindings/codegen/CodegenRust.py +++ b/components/script/dom/bindings/codegen/CodegenRust.py @@ -18,6 +18,7 @@ from WebIDL import ( BuiltinTypes, IDLBuiltinType, IDLNullValue, + IDLNullableType, IDLType, IDLInterfaceMember, IDLUndefinedValue, @@ -1349,7 +1350,10 @@ def getRetvalDeclarationForType(returnType, descriptorProvider): if returnType.isAny(): return CGGeneric("JSVal") if returnType.isObject() or returnType.isSpiderMonkeyInterface(): - return CGGeneric("*mut JSObject") + result = CGGeneric("NonZero<*mut JSObject>") + if returnType.nullable(): + result = CGWrapper(result, pre="Option<", post=">") + return result if returnType.isSequence(): result = getRetvalDeclarationForType(innerSequenceType(returnType), descriptorProvider) result = CGWrapper(result, pre="Vec<", post=">") @@ -4552,6 +4556,8 @@ class CGProxySpecialOperation(CGPerSignatureCall): signature = operation.signatures()[0] (returnType, arguments) = signature + if operation.isGetter() and not returnType.nullable(): + returnType = IDLNullableType(returnType.location, returnType) # We pass len(arguments) as the final argument so that the # CGPerSignatureCall won't do any argument conversion of its own. @@ -4574,8 +4580,6 @@ class CGProxySpecialOperation(CGPerSignatureCall): self.cgRoot.prepend(instantiateJSToNativeConversionTemplate( template, templateValues, declType, argument.identifier.name)) self.cgRoot.prepend(CGGeneric("rooted!(in(cx) let value = desc.value);")) - elif operation.isGetter(): - self.cgRoot.prepend(CGGeneric("let mut found = false;")) def getArguments(self): def process(arg): @@ -4584,10 +4588,6 @@ class CGProxySpecialOperation(CGPerSignatureCall): argVal += ".r()" return argVal args = [(a, process(a)) for a in self.arguments] - if self.idlNode.isGetter(): - args.append((FakeArgument(BuiltinTypes[IDLBuiltinType.Types.boolean], - self.idlNode), - "&mut found")) return args def wrap_return_value(self): @@ -4595,7 +4595,7 @@ class CGProxySpecialOperation(CGPerSignatureCall): return "" wrap = CGGeneric(wrapForType(**self.templateValues)) - wrap = CGIfWrapper("found", wrap) + wrap = CGIfWrapper("let Some(result) = result", wrap) return "\n" + wrap.define() @@ -4971,7 +4971,7 @@ class CGDOMJSProxyHandler_hasOwn(CGAbstractExternMethod): " let this = UnwrapProxy(proxy);\n" + " let this = &*this;\n" + CGIndenter(CGProxyIndexedGetter(self.descriptor)).define() + "\n" + - " *bp = found;\n" + + " *bp = result.is_some();\n" + " return true;\n" + "}\n\n") else: @@ -4987,7 +4987,7 @@ if RUST_JSID_IS_STRING(id) { } if !has_on_proto { %s - *bp = found; + *bp = result.is_some(); return true; } } @@ -5271,7 +5271,9 @@ class CGInterfaceTrait(CGThing): infallible = 'infallible' in descriptor.getExtendedAttributes(operation) if operation.isGetter(): - arguments = method_arguments(descriptor, rettype, arguments, trailing=("found", "&mut bool")) + if not rettype.nullable(): + rettype = IDLNullableType(rettype.location, rettype) + arguments = method_arguments(descriptor, rettype, arguments) # If this interface 'supports named properties', then we # should be able to access 'supported property names' @@ -5323,6 +5325,7 @@ def generate_imports(config, cgthings, descriptors, callbacks=None, dictionaries enums = [] return CGImports(cgthings, descriptors, callbacks, dictionaries, enums, [ + 'core::nonzero::NonZero', 'js', 'js::JSCLASS_GLOBAL_SLOT_COUNT', 'js::JSCLASS_IS_DOMJSCLASS', diff --git a/components/script/dom/bindings/iterable.rs b/components/script/dom/bindings/iterable.rs index 20eb84bffde..a3092ed73b6 100644 --- a/components/script/dom/bindings/iterable.rs +++ b/components/script/dom/bindings/iterable.rs @@ -6,6 +6,7 @@ //! Implementation of `iterable<...>` and `iterable<..., ...>` WebIDL declarations. +use core::nonzero::NonZero; use dom::bindings::codegen::Bindings::IterableIteratorBinding::IterableKeyAndValueResult; use dom::bindings::codegen::Bindings::IterableIteratorBinding::IterableKeyOrValueResult; use dom::bindings::error::Fallible; @@ -95,38 +96,41 @@ impl<T: Reflectable + JSTraceable + Iterable> IterableIterator<T> { /// Return the next value from the iterable object. #[allow(non_snake_case)] - pub fn Next(&self, cx: *mut JSContext) -> Fallible<*mut JSObject> { + pub fn Next(&self, cx: *mut JSContext) -> Fallible<NonZero<*mut JSObject>> { let index = self.index.get(); rooted!(in(cx) let mut value = UndefinedValue()); rooted!(in(cx) let mut rval = ptr::null_mut()); - if index >= self.iterable.get_iterable_length() { - return dict_return(cx, rval.handle_mut(), true, value.handle()) - .map(|_| rval.handle().get()); - } - let result = match self.type_ { - IteratorType::Keys => { - unsafe { - self.iterable.get_key_at_index(index).to_jsval(cx, value.handle_mut()); + let result = if index >= self.iterable.get_iterable_length() { + dict_return(cx, rval.handle_mut(), true, value.handle()) + } else { + match self.type_ { + IteratorType::Keys => { + unsafe { + self.iterable.get_key_at_index(index).to_jsval(cx, value.handle_mut()); + } + dict_return(cx, rval.handle_mut(), false, value.handle()) } - dict_return(cx, rval.handle_mut(), false, value.handle()) - } - IteratorType::Values => { - unsafe { - self.iterable.get_value_at_index(index).to_jsval(cx, value.handle_mut()); + IteratorType::Values => { + unsafe { + self.iterable.get_value_at_index(index).to_jsval(cx, value.handle_mut()); + } + dict_return(cx, rval.handle_mut(), false, value.handle()) } - dict_return(cx, rval.handle_mut(), false, value.handle()) - } - IteratorType::Entries => { - rooted!(in(cx) let mut key = UndefinedValue()); - unsafe { - self.iterable.get_key_at_index(index).to_jsval(cx, key.handle_mut()); - self.iterable.get_value_at_index(index).to_jsval(cx, value.handle_mut()); + IteratorType::Entries => { + rooted!(in(cx) let mut key = UndefinedValue()); + unsafe { + self.iterable.get_key_at_index(index).to_jsval(cx, key.handle_mut()); + self.iterable.get_value_at_index(index).to_jsval(cx, value.handle_mut()); + } + key_and_value_return(cx, rval.handle_mut(), key.handle(), value.handle()) } - key_and_value_return(cx, rval.handle_mut(), key.handle(), value.handle()) } }; self.index.set(index + 1); - result.map(|_| rval.handle().get()) + result.map(|_| { + assert!(!rval.is_null()); + unsafe { NonZero::new(rval.get()) } + }) } } diff --git a/components/script/dom/bindings/mod.rs b/components/script/dom/bindings/mod.rs index 439016ee15b..02d5c9c8bef 100644 --- a/components/script/dom/bindings/mod.rs +++ b/components/script/dom/bindings/mod.rs @@ -128,8 +128,9 @@ //! return `Err()` from the method with the appropriate [error value] //! (error/enum.Error.html). +pub use style::domrefcell as cell; + pub mod callback; -pub mod cell; pub mod conversions; pub mod error; pub mod global; diff --git a/components/script/dom/bindings/trace.rs b/components/script/dom/bindings/trace.rs index d6969f38d6c..507e19e4bcb 100644 --- a/components/script/dom/bindings/trace.rs +++ b/components/script/dom/bindings/trace.rs @@ -88,6 +88,7 @@ use std::sync::mpsc::{Receiver, Sender}; use std::time::SystemTime; use string_cache::{Atom, Namespace, QualName}; use style::attr::{AttrIdentifier, AttrValue, LengthOrPercentageOrAuto}; +use style::domrefcell::DOMRefCell; use style::element_state::*; use style::properties::PropertyDeclarationBlock; use style::selector_impl::{PseudoElement, ElementSnapshot}; @@ -172,6 +173,13 @@ impl<T: JSTraceable> JSTraceable for UnsafeCell<T> { } } +impl<T: JSTraceable> JSTraceable for DOMRefCell<T> { + fn trace(&self, trc: *mut JSTracer) { + unsafe { + (*self).borrow_for_gc_trace().trace(trc) + } + } +} impl JSTraceable for Heap<*mut JSObject> { fn trace(&self, trc: *mut JSTracer) { diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs index 09d4a8f04e1..61cc2520165 100644 --- a/components/script/dom/canvasrenderingcontext2d.rs +++ b/components/script/dom/canvasrenderingcontext2d.rs @@ -5,7 +5,7 @@ use canvas_traits::{Canvas2dMsg, CanvasCommonMsg, CanvasMsg}; use canvas_traits::{CompositionOrBlending, FillOrStrokeStyle, FillRule}; use canvas_traits::{LineCapStyle, LineJoinStyle, LinearGradientStyle}; -use canvas_traits::{RadialGradientStyle, RepetitionStyle, byte_swap}; +use canvas_traits::{RadialGradientStyle, RepetitionStyle, byte_swap, byte_swap_and_premultiply}; use cssparser::Color as CSSColor; use cssparser::{Parser, RGBA}; use dom::bindings::cell::DOMRefCell; @@ -47,6 +47,7 @@ use std::str::FromStr; use std::{cmp, fmt}; use unpremultiplytable::UNPREMULTIPLY_TABLE; use url::Url; +use util::opts; #[must_root] #[derive(JSTraceable, Clone, HeapSizeOf)] @@ -299,7 +300,14 @@ impl CanvasRenderingContext2D { Some((mut data, size)) => { // Pixels come from cache in BGRA order and drawImage expects RGBA so we // have to swap the color values - byte_swap(&mut data); + if opts::get().use_webrender { + // Webrender doesn't pre-multiply alpha when decoding + // images, but canvas expects the images to be + // pre-multiplied alpha. + byte_swap_and_premultiply(&mut data); + } else { + byte_swap(&mut data); + } let size = Size2D::new(size.width as f64, size.height as f64); (data, size) }, @@ -1092,7 +1100,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { dirtyY: Finite<f64>, dirtyWidth: Finite<f64>, dirtyHeight: Finite<f64>) { - let data = imagedata.get_data_array(&self.global().r()); + let data = imagedata.get_data_array(); let offset = Point2D::new(*dx, *dy); let image_data_size = Size2D::new(imagedata.Width() as f64, imagedata.Height() as f64); diff --git a/components/script/dom/characterdata.rs b/components/script/dom/characterdata.rs index 01f11e3ac50..979e9a70434 100644 --- a/components/script/dom/characterdata.rs +++ b/components/script/dom/characterdata.rs @@ -19,7 +19,7 @@ use dom::element::Element; use dom::node::{Node, NodeDamage}; use dom::processinginstruction::ProcessingInstruction; use dom::text::Text; -use std::cell::Ref; +use style::refcell::Ref; use util::opts; // https://dom.spec.whatwg.org/#characterdata diff --git a/components/script/dom/crypto.rs b/components/script/dom/crypto.rs index 6e0351d37ee..165a3834227 100644 --- a/components/script/dom/crypto.rs +++ b/components/script/dom/crypto.rs @@ -2,6 +2,7 @@ * 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 core::nonzero::NonZero; use dom::bindings::cell::DOMRefCell; use dom::bindings::codegen::Bindings::CryptoBinding; use dom::bindings::codegen::Bindings::CryptoBinding::CryptoMethods; @@ -43,7 +44,8 @@ impl CryptoMethods for Crypto { fn GetRandomValues(&self, _cx: *mut JSContext, input: *mut JSObject) - -> Fallible<*mut JSObject> { + -> Fallible<NonZero<*mut JSObject>> { + assert!(!input.is_null()); let mut data = match unsafe { array_buffer_view_data::<u8>(input) } { Some(data) => data, None => { @@ -62,7 +64,7 @@ impl CryptoMethods for Crypto { self.rng.borrow_mut().fill_bytes(&mut data); - Ok(input) + Ok(unsafe { NonZero::new(input) }) } } diff --git a/components/script/dom/cssstyledeclaration.rs b/components/script/dom/cssstyledeclaration.rs index 076a2283b67..c048446d813 100644 --- a/components/script/dom/cssstyledeclaration.rs +++ b/components/script/dom/cssstyledeclaration.rs @@ -14,12 +14,13 @@ use dom::element::Element; use dom::node::{Node, NodeDamage, window_from_node}; use dom::window::Window; use std::ascii::AsciiExt; -use std::cell::Ref; use std::slice; +use std::sync::Arc; use string_cache::Atom; use style::parser::ParserContextExtraData; use style::properties::{PropertyDeclaration, Shorthand, Importance}; use style::properties::{is_supported_property, parse_one_declaration, parse_style_attribute}; +use style::refcell::Ref; use style::selector_impl::PseudoElement; // http://dev.w3.org/csswg/cssom/#the-cssstyledeclaration-interface @@ -100,18 +101,7 @@ impl CSSStyleDeclarationMethods for CSSStyleDeclaration { // https://dev.w3.org/csswg/cssom/#dom-cssstyledeclaration-item fn Item(&self, index: u32) -> DOMString { - let index = index as usize; - let elem = self.owner.upcast::<Element>(); - let style_attribute = elem.style_attribute().borrow(); - style_attribute.as_ref().and_then(|declarations| { - declarations.declarations.get(index) - }).map(|&(ref declaration, importance)| { - let mut css = declaration.to_css_string(); - if importance.important() { - css += " !important"; - } - DOMString::from(css) - }).unwrap_or_else(DOMString::new) + self.IndexedGetter(index).unwrap_or_default() } // https://dev.w3.org/csswg/cssom/#dom-cssstyledeclaration-getpropertyvalue @@ -333,10 +323,19 @@ impl CSSStyleDeclarationMethods for CSSStyleDeclaration { } // https://dev.w3.org/csswg/cssom/#the-cssstyledeclaration-interface - fn IndexedGetter(&self, index: u32, found: &mut bool) -> DOMString { - let rval = self.Item(index); - *found = index < self.Length(); - rval + fn IndexedGetter(&self, index: u32) -> Option<DOMString> { + let index = index as usize; + let elem = self.owner.upcast::<Element>(); + let style_attribute = elem.style_attribute().borrow(); + style_attribute.as_ref().and_then(|declarations| { + declarations.declarations.get(index) + }).map(|&(ref declaration, importance)| { + let mut css = declaration.to_css_string(); + if importance.important() { + css += " !important"; + } + DOMString::from(css) + }) } // https://drafts.csswg.org/cssom/#dom-cssstyledeclaration-csstext @@ -367,7 +366,7 @@ impl CSSStyleDeclarationMethods for CSSStyleDeclaration { *element.style_attribute().borrow_mut() = if decl_block.declarations.is_empty() { None // Step 2 } else { - Some(decl_block) + Some(Arc::new(decl_block)) }; element.sync_property_with_attrs_style(); let node = element.upcast::<Node>(); diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index cbd4b2ac253..4322e348c92 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -2,6 +2,7 @@ * 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 core::nonzero::NonZero; use document_loader::{DocumentLoader, LoadType}; use dom::activation::{ActivationSource, synthetic_click_activation}; use dom::attr::Attr; @@ -110,18 +111,18 @@ use script_traits::{TouchEventType, TouchId}; use std::ascii::AsciiExt; use std::borrow::ToOwned; use std::boxed::FnBox; -use std::cell::{Cell, Ref, RefMut}; +use std::cell::Cell; use std::collections::HashMap; use std::collections::hash_map::Entry::{Occupied, Vacant}; use std::default::Default; use std::iter::once; use std::mem; -use std::ptr; use std::rc::Rc; use std::sync::Arc; use string_cache::{Atom, QualName}; use style::attr::AttrValue; use style::context::ReflowGoal; +use style::refcell::{Ref, RefMut}; use style::selector_impl::ElementSnapshot; use style::str::{split_html_space_chars, str_join}; use style::stylesheets::Stylesheet; @@ -221,6 +222,9 @@ pub struct Document { /// For each element that has had a state or attribute change since the last restyle, /// track the original condition of the element. modified_elements: DOMRefCell<HashMap<JS<Element>, ElementSnapshot>>, + /// This flag will be true if layout suppressed a reflow attempt that was + /// needed in order for the page to be painted. + needs_paint: Cell<bool>, /// http://w3c.github.io/touch-events/#dfn-active-touch-point active_touch_points: DOMRefCell<Vec<JS<Touch>>>, /// Navigation Timing properties: @@ -376,6 +380,10 @@ impl Document { } } + pub fn needs_paint(&self) -> bool { + self.needs_paint.get() + } + pub fn needs_reflow(&self) -> bool { // FIXME: This should check the dirty bit on the document, // not the document element. Needs some layout changes to make @@ -384,7 +392,8 @@ impl Document { Some(root) => { root.upcast::<Node>().is_dirty() || root.upcast::<Node>().has_dirty_descendants() || - !self.modified_elements.borrow().is_empty() + !self.modified_elements.borrow().is_empty() || + self.needs_paint() } None => false, } @@ -1602,6 +1611,8 @@ pub enum DocumentSource { pub trait LayoutDocumentHelpers { unsafe fn is_html_document_for_layout(&self) -> bool; unsafe fn drain_modified_elements(&self) -> Vec<(LayoutJS<Element>, ElementSnapshot)>; + unsafe fn needs_paint_from_layout(&self); + unsafe fn will_paint(&self); } #[allow(unsafe_code)] @@ -1618,6 +1629,16 @@ impl LayoutDocumentHelpers for LayoutJS<Document> { let result = elements.drain().map(|(k, v)| (k.to_layout(), v)).collect(); result } + + #[inline] + unsafe fn needs_paint_from_layout(&self) { + (*self.unsafe_get()).needs_paint.set(true) + } + + #[inline] + unsafe fn will_paint(&self) { + (*self.unsafe_get()).needs_paint.set(false) + } } /// https://url.spec.whatwg.org/#network-scheme @@ -1723,6 +1744,7 @@ impl Document { base_element: Default::default(), appropriate_template_contents_owner_document: Default::default(), modified_elements: DOMRefCell::new(HashMap::new()), + needs_paint: Cell::new(false), active_touch_points: DOMRefCell::new(Vec::new()), dom_loading: Cell::new(Default::default()), dom_interactive: Cell::new(Default::default()), @@ -2689,8 +2711,9 @@ impl DocumentMethods for Document { self.set_body_attribute(&atom!("text"), value) } + #[allow(unsafe_code)] // https://html.spec.whatwg.org/multipage/#dom-tree-accessors:dom-document-nameditem-filter - fn NamedGetter(&self, _cx: *mut JSContext, name: DOMString, found: &mut bool) -> *mut JSObject { + fn NamedGetter(&self, _cx: *mut JSContext, name: DOMString) -> Option<NonZero<*mut JSObject>> { #[derive(JSTraceable, HeapSizeOf)] struct NamedElementFilter { name: Atom, @@ -2756,23 +2779,24 @@ impl DocumentMethods for Document { .peekable(); if let Some(first) = elements.next() { if elements.peek().is_none() { - *found = true; // TODO: Step 2. // Step 3. - return first.reflector().get_jsobject().get(); + return unsafe { + Some(NonZero::new(first.reflector().get_jsobject().get())) + }; } } else { - *found = false; - return ptr::null_mut(); + return None; } } // Step 4. - *found = true; let filter = NamedElementFilter { name: name, }; let collection = HTMLCollection::create(self.window(), root, box filter); - collection.reflector().get_jsobject().get() + unsafe { + Some(NonZero::new(collection.reflector().get_jsobject().get())) + } } // https://html.spec.whatwg.org/multipage/#dom-tree-accessors:supported-property-names diff --git a/components/script/dom/domrectlist.rs b/components/script/dom/domrectlist.rs index adb246158f4..86774a49ff3 100644 --- a/components/script/dom/domrectlist.rs +++ b/components/script/dom/domrectlist.rs @@ -52,8 +52,7 @@ impl DOMRectListMethods for DOMRectList { } // check-tidy: no specs after this line - fn IndexedGetter(&self, index: u32, found: &mut bool) -> Option<Root<DOMRect>> { - *found = index < self.rects.len() as u32; + fn IndexedGetter(&self, index: u32) -> Option<Root<DOMRect>> { self.Item(index) } } diff --git a/components/script/dom/domstringmap.rs b/components/script/dom/domstringmap.rs index c5e534d242e..11479d6b5df 100644 --- a/components/script/dom/domstringmap.rs +++ b/components/script/dom/domstringmap.rs @@ -47,10 +47,8 @@ impl DOMStringMapMethods for DOMStringMap { } // https://html.spec.whatwg.org/multipage/#dom-domstringmap-nameditem - fn NamedGetter(&self, name: DOMString, found: &mut bool) -> DOMString { - let attr = self.element.get_custom_attr(name); - *found = attr.is_some(); - attr.unwrap_or_default() + fn NamedGetter(&self, name: DOMString) -> Option<DOMString> { + self.element.get_custom_attr(name) } // https://html.spec.whatwg.org/multipage/#the-domstringmap-interface:supported-property-names diff --git a/components/script/dom/domtokenlist.rs b/components/script/dom/domtokenlist.rs index 364b6366282..c1c09de94c2 100644 --- a/components/script/dom/domtokenlist.rs +++ b/components/script/dom/domtokenlist.rs @@ -171,9 +171,7 @@ impl DOMTokenListMethods for DOMTokenList { } // check-tidy: no specs after this line - fn IndexedGetter(&self, index: u32, found: &mut bool) -> Option<DOMString> { - let item = self.Item(index); - *found = item.is_some(); - item + fn IndexedGetter(&self, index: u32) -> Option<DOMString> { + self.Item(index) } } diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index 2d57ddab4d6..193fb16b937 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -70,13 +70,12 @@ use html5ever::serialize::SerializeOpts; use html5ever::serialize::TraversalScope; use html5ever::serialize::TraversalScope::{ChildrenOnly, IncludeNode}; use html5ever::tree_builder::{LimitedQuirks, NoQuirks, Quirks}; -use ref_filter_map::ref_filter_map; -use selectors::matching::{ElementFlags, matches}; +use selectors::matching::{ElementFlags, MatchingReason, matches}; use selectors::matching::{HAS_SLOW_SELECTOR, HAS_EDGE_CHILD_SELECTOR, HAS_SLOW_SELECTOR_LATER_SIBLINGS}; use selectors::parser::{AttrSelector, NamespaceConstraint, parse_author_origin_selector_list_from_str}; use std::ascii::AsciiExt; use std::borrow::Cow; -use std::cell::{Cell, Ref}; +use std::cell::Cell; use std::convert::TryFrom; use std::default::Default; use std::fmt; @@ -90,6 +89,7 @@ use style::parser::ParserContextExtraData; use style::properties::longhands::{self, background_image, border_spacing, font_family, overflow_x, font_size}; use style::properties::{DeclaredValue, Importance}; use style::properties::{PropertyDeclaration, PropertyDeclarationBlock, parse_style_attribute}; +use style::refcell::Ref; use style::selector_impl::{NonTSPseudoClass, ServoSelectorImpl}; use style::selector_matching::DeclarationBlock; use style::sink::Push; @@ -109,7 +109,7 @@ pub struct Element { prefix: Option<DOMString>, attrs: DOMRefCell<Vec<JS<Attr>>>, id_attribute: DOMRefCell<Option<Atom>>, - style_attribute: DOMRefCell<Option<PropertyDeclarationBlock>>, + style_attribute: DOMRefCell<Option<Arc<PropertyDeclarationBlock>>>, attr_list: MutNullableHeap<JS<NamedNodeMap>>, class_list: MutNullableHeap<JS<DOMTokenList>>, state: Cell<ElementState>, @@ -297,7 +297,7 @@ pub trait LayoutElementHelpers { #[allow(unsafe_code)] unsafe fn html_element_in_html_document_for_layout(&self) -> bool; fn id_attribute(&self) -> *const Option<Atom>; - fn style_attribute(&self) -> *const Option<PropertyDeclarationBlock>; + fn style_attribute(&self) -> *const Option<Arc<PropertyDeclarationBlock>>; fn local_name(&self) -> &Atom; fn namespace(&self) -> &Namespace; fn get_checked_state_for_layout(&self) -> bool; @@ -329,7 +329,10 @@ impl LayoutElementHelpers for LayoutJS<Element> { #[inline] fn from_declaration(rule: PropertyDeclaration) -> DeclarationBlock { DeclarationBlock::from_declarations( - Arc::new(vec![(rule, Importance::Normal)]), + Arc::new(PropertyDeclarationBlock { + declarations: vec![(rule, Importance::Normal)], + important_count: 0, + }), Importance::Normal) } @@ -615,7 +618,7 @@ impl LayoutElementHelpers for LayoutJS<Element> { } #[allow(unsafe_code)] - fn style_attribute(&self) -> *const Option<PropertyDeclarationBlock> { + fn style_attribute(&self) -> *const Option<Arc<PropertyDeclarationBlock>> { unsafe { (*self.unsafe_get()).style_attribute.borrow_for_layout() } @@ -704,7 +707,7 @@ impl Element { self.attrs.borrow() } - pub fn style_attribute(&self) -> &DOMRefCell<Option<PropertyDeclarationBlock>> { + pub fn style_attribute(&self) -> &DOMRefCell<Option<Arc<PropertyDeclarationBlock>>> { &self.style_attribute } @@ -774,7 +777,8 @@ impl Element { matching }); if let Some(index) = index { - Arc::make_mut(&mut declarations.declarations).remove(index); + let declarations = Arc::make_mut(declarations); + declarations.declarations.remove(index); if importance.unwrap().important() { declarations.important_count -= 1; } @@ -796,7 +800,8 @@ impl Element { { // Usually, the reference count will be 1 here. But transitions could make it greater // than that. - let existing_declarations = Arc::make_mut(&mut declaration_block.declarations); + let declaration_block = Arc::make_mut(declaration_block); + let existing_declarations = &mut declaration_block.declarations; 'outer: for incoming_declaration in declarations { for existing_declaration in &mut *existing_declarations { @@ -829,10 +834,10 @@ impl Element { 0 }; - *inline_declarations = Some(PropertyDeclarationBlock { - declarations: Arc::new(declarations.into_iter().map(|d| (d, importance)).collect()), + *inline_declarations = Some(Arc::new(PropertyDeclarationBlock { + declarations: declarations.into_iter().map(|d| (d, importance)).collect(), important_count: important_count, - }); + })); } update(self, declarations, importance); @@ -847,7 +852,8 @@ impl Element { if let &mut Some(ref mut block) = &mut *inline_declarations { // Usually, the reference counts of `from` and `to` will be 1 here. But transitions // could make them greater than that. - let declarations = Arc::make_mut(&mut block.declarations); + let block = Arc::make_mut(block); + let declarations = &mut block.declarations; for &mut (ref declaration, ref mut importance) in declarations { if properties.iter().any(|p| declaration.name() == **p) { match (*importance, new_importance) { @@ -871,7 +877,7 @@ impl Element { pub fn get_inline_style_declaration(&self, property: &Atom) -> Option<Ref<(PropertyDeclaration, Importance)>> { - ref_filter_map(self.style_attribute.borrow(), |inline_declarations| { + Ref::filter_map(self.style_attribute.borrow(), |inline_declarations| { inline_declarations.as_ref().and_then(|declarations| { declarations.declarations .iter() @@ -2000,7 +2006,7 @@ impl ElementMethods for Element { match parse_author_origin_selector_list_from_str(&selectors) { Err(()) => Err(Error::Syntax), Ok(ref selectors) => { - Ok(matches(selectors, &Root::from_ref(self), None)) + Ok(matches(selectors, &Root::from_ref(self), None, MatchingReason::Other)) } } } @@ -2018,7 +2024,7 @@ impl ElementMethods for Element { let root = self.upcast::<Node>(); for element in root.inclusive_ancestors() { if let Some(element) = Root::downcast::<Element>(element) { - if matches(selectors, &element, None) { + if matches(selectors, &element, None, MatchingReason::Other) { return Ok(Some(element)); } } @@ -2102,8 +2108,11 @@ impl VirtualMethods for Element { *self.style_attribute.borrow_mut() = mutation.new_value(attr).map(|value| { let win = window_from_node(self); - parse_style_attribute(&value, &doc.base_url(), win.css_error_reporter(), - ParserContextExtraData::default()) + Arc::new(parse_style_attribute( + &value, + &doc.base_url(), + win.css_error_reporter(), + ParserContextExtraData::default())) }); if node.is_in_doc() { node.dirty(NodeDamage::NodeStyleDamaged); diff --git a/components/script/dom/filelist.rs b/components/script/dom/filelist.rs index 4f8e976f5f7..8adbe1ed467 100644 --- a/components/script/dom/filelist.rs +++ b/components/script/dom/filelist.rs @@ -55,9 +55,7 @@ impl FileListMethods for FileList { } // check-tidy: no specs after this line - fn IndexedGetter(&self, index: u32, found: &mut bool) -> Option<Root<File>> { - let item = self.Item(index); - *found = item.is_some(); - item + fn IndexedGetter(&self, index: u32) -> Option<Root<File>> { + self.Item(index) } } diff --git a/components/script/dom/htmlcanvaselement.rs b/components/script/dom/htmlcanvaselement.rs index 45c1916f928..73b51962fe4 100644 --- a/components/script/dom/htmlcanvaselement.rs +++ b/components/script/dom/htmlcanvaselement.rs @@ -273,11 +273,10 @@ impl HTMLCanvasElementMethods for HTMLCanvasElement { // Step 3. let raw_data = match *self.context.borrow() { Some(CanvasContext::Context2d(ref context)) => { - let window = window_from_node(self); let image_data = try!(context.GetImageData(Finite::wrap(0f64), Finite::wrap(0f64), Finite::wrap(self.Width() as f64), Finite::wrap(self.Height() as f64))); - image_data.get_data_array(&GlobalRef::Window(window.r())) + image_data.get_data_array() } None => { // Each pixel is fully-transparent black. diff --git a/components/script/dom/htmlcollection.rs b/components/script/dom/htmlcollection.rs index 95134556bc0..2f226590719 100644 --- a/components/script/dom/htmlcollection.rs +++ b/components/script/dom/htmlcollection.rs @@ -317,17 +317,13 @@ impl HTMLCollectionMethods for HTMLCollection { } // https://dom.spec.whatwg.org/#dom-htmlcollection-item - fn IndexedGetter(&self, index: u32, found: &mut bool) -> Option<Root<Element>> { - let maybe_elem = self.Item(index); - *found = maybe_elem.is_some(); - maybe_elem + fn IndexedGetter(&self, index: u32) -> Option<Root<Element>> { + self.Item(index) } // check-tidy: no specs after this line - fn NamedGetter(&self, name: DOMString, found: &mut bool) -> Option<Root<Element>> { - let maybe_elem = self.NamedItem(name); - *found = maybe_elem.is_some(); - maybe_elem + fn NamedGetter(&self, name: DOMString) -> Option<Root<Element>> { + self.NamedItem(name) } // https://dom.spec.whatwg.org/#interface-htmlcollection diff --git a/components/script/dom/htmlformcontrolscollection.rs b/components/script/dom/htmlformcontrolscollection.rs index 9229b854b26..e52a541225f 100644 --- a/components/script/dom/htmlformcontrolscollection.rs +++ b/components/script/dom/htmlformcontrolscollection.rs @@ -77,10 +77,8 @@ impl HTMLFormControlsCollectionMethods for HTMLFormControlsCollection { } // https://html.spec.whatwg.org/multipage/#dom-htmlformcontrolscollection-nameditem - fn NamedGetter(&self, name: DOMString, found: &mut bool) -> Option<RadioNodeListOrElement> { - let maybe_elem = self.NamedItem(name); - *found = maybe_elem.is_some(); - maybe_elem + fn NamedGetter(&self, name: DOMString) -> Option<RadioNodeListOrElement> { + self.NamedItem(name) } // https://html.spec.whatwg.org/multipage/#the-htmlformcontrolscollection-interface:supported-property-names @@ -93,7 +91,7 @@ impl HTMLFormControlsCollectionMethods for HTMLFormControlsCollection { // https://github.com/servo/servo/issues/5875 // // https://dom.spec.whatwg.org/#dom-htmlcollection-item - fn IndexedGetter(&self, index: u32, found: &mut bool) -> Option<Root<Element>> { - self.collection.IndexedGetter(index, found) + fn IndexedGetter(&self, index: u32) -> Option<Root<Element>> { + self.collection.IndexedGetter(index) } } diff --git a/components/script/dom/htmlformelement.rs b/components/script/dom/htmlformelement.rs index db9e3cb8d41..fa16618b564 100644 --- a/components/script/dom/htmlformelement.rs +++ b/components/script/dom/htmlformelement.rs @@ -230,9 +230,9 @@ impl HTMLFormElementMethods for HTMLFormElement { } // https://html.spec.whatwg.org/multipage/#dom-form-item - fn IndexedGetter(&self, index: u32, found: &mut bool) -> Option<Root<Element>> { + fn IndexedGetter(&self, index: u32) -> Option<Root<Element>> { let elements = self.Elements(); - elements.IndexedGetter(index, found) + elements.IndexedGetter(index) } } diff --git a/components/script/dom/htmlmetaelement.rs b/components/script/dom/htmlmetaelement.rs index b8c2cd423fa..e6f86f41d86 100644 --- a/components/script/dom/htmlmetaelement.rs +++ b/components/script/dom/htmlmetaelement.rs @@ -79,7 +79,7 @@ impl HTMLMetaElement { if !content.is_empty() { if let Some(translated_rule) = ViewportRule::from_meta(&**content) { *self.stylesheet.borrow_mut() = Some(Arc::new(Stylesheet { - rules: vec![CSSRule::Viewport(translated_rule)], + rules: vec![CSSRule::Viewport(Arc::new(translated_rule))], origin: Origin::Author, media: None, // Viewport constraints are always recomputed on resize; they don't need to diff --git a/components/script/dom/htmloptionelement.rs b/components/script/dom/htmloptionelement.rs index 737bc67bd4c..9183a78de0c 100644 --- a/components/script/dom/htmloptionelement.rs +++ b/components/script/dom/htmloptionelement.rs @@ -6,6 +6,7 @@ use dom::attr::Attr; use dom::bindings::codegen::Bindings::CharacterDataBinding::CharacterDataMethods; use dom::bindings::codegen::Bindings::HTMLOptionElementBinding; use dom::bindings::codegen::Bindings::HTMLOptionElementBinding::HTMLOptionElementMethods; +use dom::bindings::codegen::Bindings::HTMLSelectElementBinding::HTMLSelectElementBinding::HTMLSelectElementMethods; use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods; use dom::bindings::inheritance::Castable; use dom::bindings::js::Root; @@ -14,6 +15,8 @@ use dom::characterdata::CharacterData; use dom::document::Document; use dom::element::{AttributeMutation, Element}; use dom::htmlelement::HTMLElement; +use dom::htmlformelement::HTMLFormElement; +use dom::htmloptgroupelement::HTMLOptGroupElement; use dom::htmlscriptelement::HTMLScriptElement; use dom::htmlselectelement::HTMLSelectElement; use dom::node::{Node, UnbindContext}; @@ -110,6 +113,19 @@ impl HTMLOptionElementMethods for HTMLOptionElement { self.upcast::<Node>().SetTextContent(Some(value)) } + // https://html.spec.whatwg.org/multipage/#dom-option-form + fn GetForm(&self) -> Option<Root<HTMLFormElement>> { + let parent = self.upcast::<Node>().GetParentNode().and_then(|p| + if p.is::<HTMLOptGroupElement>() { + p.upcast::<Node>().GetParentNode() + } else { + Some(p) + } + ); + + parent.and_then(|p| p.downcast::<HTMLSelectElement>().and_then(|s| s.GetForm())) + } + // https://html.spec.whatwg.org/multipage/#attr-option-value fn Value(&self) -> DOMString { let element = self.upcast::<Element>(); diff --git a/components/script/dom/imagedata.rs b/components/script/dom/imagedata.rs index abcb9b5640b..0959a52eb32 100644 --- a/components/script/dom/imagedata.rs +++ b/components/script/dom/imagedata.rs @@ -2,6 +2,7 @@ * 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 core::nonzero::NonZero; use dom::bindings::codegen::Bindings::ImageDataBinding; use dom::bindings::codegen::Bindings::ImageDataBinding::ImageDataMethods; use dom::bindings::global::GlobalRef; @@ -37,6 +38,7 @@ impl ImageData { unsafe { let cx = global.get_cx(); let js_object: *mut JSObject = JS_NewUint8ClampedArray(cx, width * height * 4); + assert!(!js_object.is_null()); if let Some(vec) = data { let mut is_shared = false; @@ -52,12 +54,13 @@ impl ImageData { } #[allow(unsafe_code)] - pub fn get_data_array(&self, global: &GlobalRef) -> Vec<u8> { + pub fn get_data_array(&self) -> Vec<u8> { unsafe { - let cx = global.get_cx(); let mut is_shared = false; + assert!(!self.data.get().is_null()); let data: *const uint8_t = - JS_GetUint8ClampedArrayData(self.Data(cx), &mut is_shared, ptr::null()) as *const uint8_t; + JS_GetUint8ClampedArrayData(self.data.get(), &mut is_shared, ptr::null()) as *const uint8_t; + assert!(!data.is_null()); assert!(!is_shared); let len = self.Width() * self.Height() * 4; slice::from_raw_parts(data, len as usize).to_vec() @@ -80,8 +83,10 @@ impl ImageDataMethods for ImageData { self.height } + #[allow(unsafe_code)] // https://html.spec.whatwg.org/multipage/#dom-imagedata-data - fn Data(&self, _: *mut JSContext) -> *mut JSObject { - self.data.get() + fn Data(&self, _: *mut JSContext) -> NonZero<*mut JSObject> { + assert!(!self.data.get().is_null()); + unsafe { NonZero::new(self.data.get()) } } } diff --git a/components/script/dom/mimetypearray.rs b/components/script/dom/mimetypearray.rs index 96fc48c86d0..de820f6d06a 100644 --- a/components/script/dom/mimetypearray.rs +++ b/components/script/dom/mimetypearray.rs @@ -46,12 +46,12 @@ impl MimeTypeArrayMethods for MimeTypeArray { } // https://html.spec.whatwg.org/multipage/#dom-mimetypearray-item - fn IndexedGetter(&self, _index: u32, _found: &mut bool) -> Option<Root<MimeType>> { + fn IndexedGetter(&self, _index: u32) -> Option<Root<MimeType>> { None } // check-tidy: no specs after this line - fn NamedGetter(&self, _name: DOMString, _found: &mut bool) -> Option<Root<MimeType>> { + fn NamedGetter(&self, _name: DOMString) -> Option<Root<MimeType>> { None } diff --git a/components/script/dom/namednodemap.rs b/components/script/dom/namednodemap.rs index 10b6b8982ae..9edc1b1e93b 100644 --- a/components/script/dom/namednodemap.rs +++ b/components/script/dom/namednodemap.rs @@ -85,17 +85,13 @@ impl NamedNodeMapMethods for NamedNodeMap { } // https://dom.spec.whatwg.org/#dom-namednodemap-item - fn IndexedGetter(&self, index: u32, found: &mut bool) -> Option<Root<Attr>> { - let item = self.Item(index); - *found = item.is_some(); - item + fn IndexedGetter(&self, index: u32) -> Option<Root<Attr>> { + self.Item(index) } // check-tidy: no specs after this line - fn NamedGetter(&self, name: DOMString, found: &mut bool) -> Option<Root<Attr>> { - let item = self.GetNamedItem(name); - *found = item.is_some(); - item + fn NamedGetter(&self, name: DOMString) -> Option<Root<Attr>> { + self.GetNamedItem(name) } // https://heycam.github.io/webidl/#dfn-supported-property-names diff --git a/components/script/dom/navigator.rs b/components/script/dom/navigator.rs index 75bd2c13c23..61936c59e5f 100644 --- a/components/script/dom/navigator.rs +++ b/components/script/dom/navigator.rs @@ -107,4 +107,10 @@ impl NavigatorMethods for Navigator { fn ServiceWorker(&self) -> Root<ServiceWorkerContainer> { self.serviceWorker.or_init(|| ServiceWorkerContainer::new(self.global().r())) } + + // https://html.spec.whatwg.org/multipage/#dom-navigator-cookieenabled + fn CookieEnabled(&self) -> bool { + true + } + } diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index 49aa8242b34..555c7719fb1 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -63,7 +63,7 @@ use script_layout_interface::message::Msg; use script_layout_interface::{HTMLCanvasData, OpaqueStyleAndLayoutData}; use script_layout_interface::{LayoutNodeType, LayoutElementType, TrustedNodeAddress}; use script_traits::UntrustedNodeAddress; -use selectors::matching::matches; +use selectors::matching::{MatchingReason, matches}; use selectors::parser::Selector; use selectors::parser::parse_author_origin_selector_list_from_str; use std::borrow::ToOwned; @@ -319,7 +319,7 @@ impl<'a> Iterator for QuerySelectorIterator { // (instead of passing `None`)? Probably. self.iterator.by_ref().filter_map(|node| { if let Some(element) = Root::downcast(node) { - if matches(selectors, &element, None) { + if matches(selectors, &element, None, MatchingReason::Other) { return Some(Root::upcast(element)); } } @@ -711,7 +711,7 @@ impl Node { // Step 3. Ok(ref selectors) => { Ok(self.traverse_preorder().filter_map(Root::downcast).find(|element| { - matches(selectors, element, None) + matches(selectors, element, None, MatchingReason::Other) })) } } diff --git a/components/script/dom/nodelist.rs b/components/script/dom/nodelist.rs index 2503378187e..8f8a5515592 100644 --- a/components/script/dom/nodelist.rs +++ b/components/script/dom/nodelist.rs @@ -75,10 +75,8 @@ impl NodeListMethods for NodeList { } // https://dom.spec.whatwg.org/#dom-nodelist-item - fn IndexedGetter(&self, index: u32, found: &mut bool) -> Option<Root<Node>> { - let item = self.Item(index); - *found = item.is_some(); - item + fn IndexedGetter(&self, index: u32) -> Option<Root<Node>> { + self.Item(index) } } diff --git a/components/script/dom/plugin.rs b/components/script/dom/plugin.rs index dc4ca4fe42d..222e9a2840a 100644 --- a/components/script/dom/plugin.rs +++ b/components/script/dom/plugin.rs @@ -45,12 +45,12 @@ impl PluginMethods for Plugin { } // https://html.spec.whatwg.org/multipage/#dom-plugin-item - fn IndexedGetter(&self, _index: u32, _found: &mut bool) -> Option<Root<MimeType>> { + fn IndexedGetter(&self, _index: u32) -> Option<Root<MimeType>> { unreachable!() } // check-tidy: no specs after this line - fn NamedGetter(&self, _name: DOMString, _found: &mut bool) -> Option<Root<MimeType>> { + fn NamedGetter(&self, _name: DOMString) -> Option<Root<MimeType>> { unreachable!() } diff --git a/components/script/dom/pluginarray.rs b/components/script/dom/pluginarray.rs index aabba4928a4..aa6b779280d 100644 --- a/components/script/dom/pluginarray.rs +++ b/components/script/dom/pluginarray.rs @@ -50,12 +50,12 @@ impl PluginArrayMethods for PluginArray { } // https://html.spec.whatwg.org/multipage/#dom-pluginarray-item - fn IndexedGetter(&self, _index: u32, _found: &mut bool) -> Option<Root<Plugin>> { + fn IndexedGetter(&self, _index: u32) -> Option<Root<Plugin>> { None } // check-tidy: no specs after this line - fn NamedGetter(&self, _name: DOMString, _found: &mut bool) -> Option<Root<Plugin>> { + fn NamedGetter(&self, _name: DOMString) -> Option<Root<Plugin>> { None } diff --git a/components/script/dom/radionodelist.rs b/components/script/dom/radionodelist.rs index d88fc69eacd..9bbdae00c85 100644 --- a/components/script/dom/radionodelist.rs +++ b/components/script/dom/radionodelist.rs @@ -105,7 +105,7 @@ impl RadioNodeListMethods for RadioNodeList { // https://github.com/servo/servo/issues/5875 // // https://dom.spec.whatwg.org/#dom-nodelist-item - fn IndexedGetter(&self, index: u32, found: &mut bool) -> Option<Root<Node>> { - self.node_list.IndexedGetter(index, found) + fn IndexedGetter(&self, index: u32) -> Option<Root<Node>> { + self.node_list.IndexedGetter(index) } } diff --git a/components/script/dom/storage.rs b/components/script/dom/storage.rs index d6d1e1968f8..7827cdb6b15 100644 --- a/components/script/dom/storage.rs +++ b/components/script/dom/storage.rs @@ -136,10 +136,8 @@ impl StorageMethods for Storage { } // check-tidy: no specs after this line - fn NamedGetter(&self, name: DOMString, found: &mut bool) -> Option<DOMString> { - let item = self.GetItem(name); - *found = item.is_some(); - item + fn NamedGetter(&self, name: DOMString) -> Option<DOMString> { + self.GetItem(name) } fn NamedSetter(&self, name: DOMString, value: DOMString) -> ErrorResult { diff --git a/components/script/dom/stylesheetlist.rs b/components/script/dom/stylesheetlist.rs index 1b7eb643e50..721ac06525c 100644 --- a/components/script/dom/stylesheetlist.rs +++ b/components/script/dom/stylesheetlist.rs @@ -46,9 +46,7 @@ impl StyleSheetListMethods for StyleSheetList { } // check-tidy: no specs after this line - fn IndexedGetter(&self, index: u32, found: &mut bool) -> Option<Root<StyleSheet>>{ - let item = self.Item(index); - *found = item.is_some(); - item + fn IndexedGetter(&self, index: u32) -> Option<Root<StyleSheet>> { + self.Item(index) } } diff --git a/components/script/dom/testbinding.rs b/components/script/dom/testbinding.rs index 9143c8b0188..21439c0b19a 100644 --- a/components/script/dom/testbinding.rs +++ b/components/script/dom/testbinding.rs @@ -4,6 +4,7 @@ // check-tidy: no specs after this line +use core::nonzero::NonZero; use dom::bindings::codegen::Bindings::EventListenerBinding::EventListener; use dom::bindings::codegen::Bindings::FunctionBinding::Function; use dom::bindings::codegen::Bindings::TestBindingBinding; @@ -26,6 +27,7 @@ use dom::bindings::weakref::MutableWeakRef; use dom::blob::{Blob, BlobImpl}; use dom::url::URL; use js::jsapi::{HandleObject, HandleValue, JSContext, JSObject}; +use js::jsapi::{JS_NewPlainObject, JS_NewUint8ClampedArray}; use js::jsval::{JSVal, NullValue}; use std::borrow::ToOwned; use std::ptr; @@ -137,10 +139,24 @@ impl TestBindingMethods for TestBinding { ByteStringOrLong::ByteString(ByteString::new(vec!())) } fn SetUnion9Attribute(&self, _: ByteStringOrLong) {} - fn ArrayAttribute(&self, _: *mut JSContext) -> *mut JSObject { NullValue().to_object_or_null() } + #[allow(unsafe_code)] + fn ArrayAttribute(&self, cx: *mut JSContext) -> NonZero<*mut JSObject> { + unsafe { + rooted!(in(cx) let array = JS_NewUint8ClampedArray(cx, 16)); + assert!(!array.is_null()); + NonZero::new(array.get()) + } + } fn AnyAttribute(&self, _: *mut JSContext) -> JSVal { NullValue() } fn SetAnyAttribute(&self, _: *mut JSContext, _: HandleValue) {} - fn ObjectAttribute(&self, _: *mut JSContext) -> *mut JSObject { panic!() } + #[allow(unsafe_code)] + fn ObjectAttribute(&self, cx: *mut JSContext) -> NonZero<*mut JSObject> { + unsafe { + rooted!(in(cx) let obj = JS_NewPlainObject(cx)); + assert!(!obj.is_null()); + NonZero::new(obj.get()) + } + } fn SetObjectAttribute(&self, _: *mut JSContext, _: *mut JSObject) {} fn GetBooleanAttributeNullable(&self) -> Option<bool> { Some(false) } @@ -193,7 +209,7 @@ impl TestBindingMethods for TestBinding { fn SetInterfaceAttributeWeak(&self, url: Option<&URL>) { self.url.set(url); } - fn GetObjectAttributeNullable(&self, _: *mut JSContext) -> *mut JSObject { ptr::null_mut() } + fn GetObjectAttributeNullable(&self, _: *mut JSContext) -> Option<NonZero<*mut JSObject>> { None } fn SetObjectAttributeNullable(&self, _: *mut JSContext, _: *mut JSObject) {} fn GetUnionAttributeNullable(&self) -> Option<HTMLElementOrLong> { Some(HTMLElementOrLong::Long(0)) @@ -242,7 +258,9 @@ impl TestBindingMethods for TestBinding { Blob::new(self.global().r(), BlobImpl::new_from_bytes(vec![]), "".to_owned()) } fn ReceiveAny(&self, _: *mut JSContext) -> JSVal { NullValue() } - fn ReceiveObject(&self, _: *mut JSContext) -> *mut JSObject { panic!() } + fn ReceiveObject(&self, cx: *mut JSContext) -> NonZero<*mut JSObject> { + self.ObjectAttribute(cx) + } fn ReceiveUnion(&self) -> HTMLElementOrLong { HTMLElementOrLong::Long(0) } fn ReceiveUnion2(&self) -> EventOrString { EventOrString::String(DOMString::new()) } fn ReceiveUnion3(&self) -> StringOrLongSequence { StringOrLongSequence::LongSequence(vec![]) } @@ -283,7 +301,9 @@ impl TestBindingMethods for TestBinding { fn ReceiveNullableInterface(&self) -> Option<Root<Blob>> { Some(Blob::new(self.global().r(), BlobImpl::new_from_bytes(vec![]), "".to_owned())) } - fn ReceiveNullableObject(&self, _: *mut JSContext) -> *mut JSObject { ptr::null_mut() } + fn ReceiveNullableObject(&self, cx: *mut JSContext) -> Option<NonZero<*mut JSObject>> { + self.GetObjectAttributeNullable(cx) + } fn ReceiveNullableUnion(&self) -> Option<HTMLElementOrLong> { Some(HTMLElementOrLong::Long(0)) } diff --git a/components/script/dom/testbindingiterable.rs b/components/script/dom/testbindingiterable.rs index 1e462a98531..2ad0df6dbb6 100644 --- a/components/script/dom/testbindingiterable.rs +++ b/components/script/dom/testbindingiterable.rs @@ -34,10 +34,8 @@ impl TestBindingIterable { impl TestBindingIterableMethods for TestBindingIterable { fn Add(&self, v: DOMString) { self.vals.borrow_mut().push(v); } fn Length(&self) -> u32 { self.vals.borrow().len() as u32 } - fn GetItem(&self, n: u32) -> DOMString { self.vals.borrow().get(n as usize).unwrap().clone() } - fn IndexedGetter(&self, n: u32, found: &mut bool) -> DOMString { - let s = self.GetItem(n); - *found = true; - s + fn GetItem(&self, n: u32) -> DOMString { self.IndexedGetter(n).unwrap_or_default() } + fn IndexedGetter(&self, n: u32) -> Option<DOMString> { + self.vals.borrow().get(n as usize).cloned() } } diff --git a/components/script/dom/testbindingproxy.rs b/components/script/dom/testbindingproxy.rs index 3308639305c..45e66bc5919 100644 --- a/components/script/dom/testbindingproxy.rs +++ b/components/script/dom/testbindingproxy.rs @@ -23,10 +23,10 @@ impl TestBindingProxyMethods for TestBindingProxy { fn SetItem(&self, _: u32, _: DOMString) -> () {} fn RemoveItem(&self, _: DOMString) -> () {} fn Stringifier(&self) -> DOMString { DOMString::new() } - fn IndexedGetter(&self, _: u32, _: &mut bool) -> DOMString { DOMString::new() } + fn IndexedGetter(&self, _: u32) -> Option<DOMString> { None } fn NamedDeleter(&self, _: DOMString) -> () {} fn IndexedSetter(&self, _: u32, _: DOMString) -> () {} fn NamedSetter(&self, _: DOMString, _: DOMString) -> () {} - fn NamedGetter(&self, _: DOMString, _: &mut bool) -> DOMString { DOMString::new() } + fn NamedGetter(&self, _: DOMString) -> Option<DOMString> { None } } diff --git a/components/script/dom/textencoder.rs b/components/script/dom/textencoder.rs index 84100e723ba..674243dded8 100644 --- a/components/script/dom/textencoder.rs +++ b/components/script/dom/textencoder.rs @@ -2,6 +2,7 @@ * 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 core::nonzero::NonZero; use dom::bindings::codegen::Bindings::TextEncoderBinding; use dom::bindings::codegen::Bindings::TextEncoderBinding::TextEncoderMethods; use dom::bindings::error::{Error, Fallible}; @@ -70,16 +71,17 @@ impl TextEncoderMethods for TextEncoder { #[allow(unsafe_code)] // https://encoding.spec.whatwg.org/#dom-textencoder-encode - fn Encode(&self, cx: *mut JSContext, input: USVString) -> *mut JSObject { + fn Encode(&self, cx: *mut JSContext, input: USVString) -> NonZero<*mut JSObject> { unsafe { let encoded = self.encoder.encode(&input.0, EncoderTrap::Strict).unwrap(); let length = encoded.len() as u32; - let js_object: *mut JSObject = JS_NewUint8Array(cx, length); + rooted!(in(cx) let js_object = JS_NewUint8Array(cx, length)); + assert!(!js_object.is_null()); let mut is_shared = false; - let js_object_data: *mut uint8_t = JS_GetUint8ArrayData(js_object, &mut is_shared, ptr::null()); + let js_object_data: *mut uint8_t = JS_GetUint8ArrayData(js_object.get(), &mut is_shared, ptr::null()); assert!(!is_shared); ptr::copy_nonoverlapping(encoded.as_ptr(), js_object_data, length as usize); - js_object + NonZero::new(js_object.get()) } } } diff --git a/components/script/dom/touchlist.rs b/components/script/dom/touchlist.rs index ae5313e855e..14bb8a68766 100644 --- a/components/script/dom/touchlist.rs +++ b/components/script/dom/touchlist.rs @@ -42,9 +42,7 @@ impl TouchListMethods for TouchList { } /// https://w3c.github.io/touch-events/#widl-TouchList-item-getter-Touch-unsigned-long-index - fn IndexedGetter(&self, index: u32, found: &mut bool) -> Option<Root<Touch>> { - let item = self.Item(index); - *found = item.is_some(); - item + fn IndexedGetter(&self, index: u32) -> Option<Root<Touch>> { + self.Item(index) } } diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs index 5ff793527ec..aadf03d4211 100644 --- a/components/script/dom/webglrenderingcontext.rs +++ b/components/script/dom/webglrenderingcontext.rs @@ -3,6 +3,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use canvas_traits::{CanvasCommonMsg, CanvasMsg, byte_swap}; +use core::nonzero::NonZero; use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextConstants as constants; use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextMethods; use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::{self, WebGLContextAttributes}; @@ -305,8 +306,7 @@ impl WebGLRenderingContext { // complexity is worth it. let (pixels, size) = match source { ImageDataOrHTMLImageElementOrHTMLCanvasElementOrHTMLVideoElement::ImageData(image_data) => { - let global = self.global(); - (image_data.get_data_array(&global.r()), image_data.get_size()) + (image_data.get_data_array(), image_data.get_size()) }, ImageDataOrHTMLImageElementOrHTMLCanvasElementOrHTMLVideoElement::HTMLImageElement(image) => { let img_url = match image.get_url() { @@ -632,8 +632,9 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { } // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.14 - fn GetExtension(&self, _cx: *mut JSContext, _name: DOMString) -> *mut JSObject { - 0 as *mut JSObject + fn GetExtension(&self, _cx: *mut JSContext, _name: DOMString) + -> Option<NonZero<*mut JSObject>> { + None } // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3 diff --git a/components/script/dom/webidls/HTMLOptionElement.webidl b/components/script/dom/webidls/HTMLOptionElement.webidl index a5c7c3295da..d4bc5bcdc83 100644 --- a/components/script/dom/webidls/HTMLOptionElement.webidl +++ b/components/script/dom/webidls/HTMLOptionElement.webidl @@ -9,7 +9,7 @@ [Exposed=(Window,Worker)] interface HTMLOptionElement : HTMLElement { attribute boolean disabled; - //readonly attribute HTMLFormElement? form; + readonly attribute HTMLFormElement? form; attribute DOMString label; attribute boolean defaultSelected; attribute boolean selected; diff --git a/components/script/dom/webidls/Navigator.webidl b/components/script/dom/webidls/Navigator.webidl index 493c4ba34e4..ba24348b7f8 100644 --- a/components/script/dom/webidls/Navigator.webidl +++ b/components/script/dom/webidls/Navigator.webidl @@ -14,6 +14,7 @@ Navigator implements NavigatorLanguage; //Navigator implements NavigatorContentUtils; //Navigator implements NavigatorStorageUtils; Navigator implements NavigatorPlugins; +Navigator implements NavigatorCookies; // https://html.spec.whatwg.org/multipage/#navigatorid [NoInterfaceObject, Exposed=(Window,Worker)] @@ -52,3 +53,9 @@ interface NavigatorPlugins { [SameObject] readonly attribute MimeTypeArray mimeTypes; boolean javaEnabled(); }; + +// https://html.spec.whatwg.org/multipage/#navigatorcookies +[NoInterfaceObject, Exposed=(Window,Worker)] +interface NavigatorCookies { + readonly attribute boolean cookieEnabled; +}; diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs index cd00390a305..b6bf6a35643 100644 --- a/components/script/dom/window.rs +++ b/components/script/dom/window.rs @@ -1200,9 +1200,11 @@ impl Window { if !for_display || self.Document().needs_reflow() { issued_reflow = self.force_reflow(goal, query_type, reason); - // If window_size is `None`, we don't reflow, so the document stays dirty. - // Otherwise, we shouldn't need a reflow immediately after a reflow. + // If window_size is `None`, we don't reflow, so the document stays + // dirty. Otherwise, we shouldn't need a reflow immediately after a + // reflow, except if we're waiting for a deferred paint. assert!(!self.Document().needs_reflow() || + (!for_display && self.Document().needs_paint()) || self.window_size.get().is_none() || self.suppress_reflow.get()); } else { diff --git a/components/script/dom/xmldocument.rs b/components/script/dom/xmldocument.rs index 5f6b6e1919c..1a00f67b80c 100644 --- a/components/script/dom/xmldocument.rs +++ b/components/script/dom/xmldocument.rs @@ -2,6 +2,7 @@ * 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 core::nonzero::NonZero; use document_loader::DocumentLoader; use dom::bindings::codegen::Bindings::DocumentBinding::DocumentMethods; use dom::bindings::codegen::Bindings::XMLDocumentBinding::{self, XMLDocumentMethods}; @@ -87,7 +88,7 @@ impl XMLDocumentMethods for XMLDocument { } // https://html.spec.whatwg.org/multipage/#dom-tree-accessors:dom-document-nameditem-filter - fn NamedGetter(&self, _cx: *mut JSContext, name: DOMString, found: &mut bool) -> *mut JSObject { - self.upcast::<Document>().NamedGetter(_cx, name, found) + fn NamedGetter(&self, _cx: *mut JSContext, name: DOMString) -> Option<NonZero<*mut JSObject>> { + self.upcast::<Document>().NamedGetter(_cx, name) } } diff --git a/components/script/layout_wrapper.rs b/components/script/layout_wrapper.rs index 906bde60550..a7f0a5019f3 100644 --- a/components/script/layout_wrapper.rs +++ b/components/script/layout_wrapper.rs @@ -405,6 +405,14 @@ impl<'ld> TDocument for ServoLayoutDocument<'ld> { let elements = unsafe { self.document.drain_modified_elements() }; elements.into_iter().map(|(el, snapshot)| (ServoLayoutElement::from_layout_js(el), snapshot)).collect() } + + fn needs_paint_from_layout(&self) { + unsafe { self.document.needs_paint_from_layout(); } + } + + fn will_paint(&self) { + unsafe { self.document.will_paint(); } + } } impl<'ld> ServoLayoutDocument<'ld> { @@ -451,9 +459,9 @@ impl<'le> TElement for ServoLayoutElement<'le> { ServoLayoutNode::from_layout_js(self.element.upcast()) } - fn style_attribute(&self) -> &Option<PropertyDeclarationBlock> { + fn style_attribute(&self) -> Option<&Arc<PropertyDeclarationBlock>> { unsafe { - &*self.element.style_attribute() + (*self.element.style_attribute()).as_ref() } } diff --git a/components/script/lib.rs b/components/script/lib.rs index ff3715de24c..910706f4a1a 100644 --- a/components/script/lib.rs +++ b/components/script/lib.rs @@ -17,7 +17,6 @@ #![feature(slice_patterns)] #![feature(stmt_expr_attributes)] #![feature(question_mark)] -#![feature(try_borrow)] #![feature(try_from)] #![deny(unsafe_code)] @@ -69,7 +68,6 @@ extern crate phf; extern crate profile_traits; extern crate rand; extern crate range; -extern crate ref_filter_map; extern crate ref_slice; extern crate regex; extern crate rustc_serialize; diff --git a/components/script_layout_interface/Cargo.toml b/components/script_layout_interface/Cargo.toml index 93a240680d4..ad051d4a9ae 100644 --- a/components/script_layout_interface/Cargo.toml +++ b/components/script_layout_interface/Cargo.toml @@ -27,7 +27,7 @@ plugins = {path = "../plugins"} profile_traits = {path = "../profile_traits"} range = {path = "../range"} script_traits = {path = "../script_traits"} -selectors = {version = "0.12", features = ["heap_size"]} +selectors = {version = "0.13", features = ["heap_size"]} string_cache = {version = "0.2.26", features = ["heap_size"]} style = {path = "../style"} url = {version = "1.2", features = ["heap_size"]} diff --git a/components/servo/Cargo.lock b/components/servo/Cargo.lock index 005624d1ff2..7686aeb2102 100644 --- a/components/servo/Cargo.lock +++ b/components/servo/Cargo.lock @@ -219,7 +219,7 @@ dependencies = [ "ipc-channel 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", - "offscreen_gl_context 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "offscreen_gl_context 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "plugins 0.0.1", "util 0.0.1", "webrender_traits 0.5.1 (git+https://github.com/servo/webrender)", @@ -353,7 +353,7 @@ dependencies = [ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "msg 0.0.1", "net_traits 0.0.1", - "offscreen_gl_context 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "offscreen_gl_context 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "plugins 0.0.1", "profile_traits 0.0.1", "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", @@ -686,7 +686,7 @@ dependencies = [ [[package]] name = "fnv" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -767,7 +767,7 @@ dependencies = [ "core-graphics 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-text 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "fontsan 0.3.2 (git+https://github.com/servo/fontsan)", "freetype 0.1.0 (git+https://github.com/servo/rust-freetype)", "gfx_traits 0.0.1", @@ -1086,7 +1086,7 @@ dependencies = [ [[package]] name = "js" version = "0.1.3" -source = "git+https://github.com/servo/rust-mozjs#f06428fab33a6ae633584a1a7e1bf4e3ef7914b3" +source = "git+https://github.com/servo/rust-mozjs#f5444dd82b864a88cf874c66c75aed478fd88d22" dependencies = [ "cmake 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1147,7 +1147,7 @@ dependencies = [ "canvas_traits 0.0.1", "cssparser 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "gfx 0.0.1", "gfx_traits 0.0.1", "heapsize 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1164,7 +1164,7 @@ dependencies = [ "rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)", "script_layout_interface 0.0.1", "script_traits 0.0.1", - "selectors 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "selectors 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde_macros 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache 0.2.26 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1191,7 +1191,7 @@ dependencies = [ "app_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "azure 0.8.0 (git+https://github.com/servo/rust-azure)", "euclid 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "gfx 0.0.1", "gfx_traits 0.0.1", "heapsize 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1579,7 +1579,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "offscreen_gl_context" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cgl 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1840,11 +1840,6 @@ dependencies = [ ] [[package]] -name = "ref_filter_map" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] name = "ref_slice" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1904,7 +1899,7 @@ dependencies = [ "devtools_traits 0.0.1", "encoding 0.2.32 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "gfx_traits 0.0.1", "heapsize 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize_plugin 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1921,7 +1916,7 @@ dependencies = [ "msg 0.0.1", "net_traits 0.0.1", "num-traits 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", - "offscreen_gl_context 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "offscreen_gl_context 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "open 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "phf 0.7.16 (registry+https://github.com/rust-lang/crates.io-index)", "phf_macros 0.7.16 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1929,13 +1924,12 @@ dependencies = [ "profile_traits 0.0.1", "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", "range 0.0.1", - "ref_filter_map 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "ref_slice 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "regex 0.1.73 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)", "script_layout_interface 0.0.1", "script_traits 0.0.1", - "selectors 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "selectors 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache 0.2.26 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1971,7 +1965,7 @@ dependencies = [ "profile_traits 0.0.1", "range 0.0.1", "script_traits 0.0.1", - "selectors 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "selectors 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache 0.2.26 (registry+https://github.com/rust-lang/crates.io-index)", "style 0.0.1", "url 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2006,7 +2000,7 @@ dependencies = [ "libc 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)", "msg 0.0.1", "net_traits 0.0.1", - "offscreen_gl_context 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "offscreen_gl_context 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "plugins 0.0.1", "profile_traits 0.0.1", "rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2020,12 +2014,12 @@ dependencies = [ [[package]] name = "selectors" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "cssparser 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize_plugin 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "matches 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2227,7 +2221,7 @@ dependencies = [ "deque 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "encoding 0.2.32 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize_plugin 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2242,7 +2236,7 @@ dependencies = [ "quickersort 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)", - "selectors 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "selectors 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)", "serde_macros 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2262,7 +2256,7 @@ dependencies = [ "cssparser 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)", - "selectors 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "selectors 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache 0.2.26 (registry+https://github.com/rust-lang/crates.io-index)", "style 0.0.1", "style_traits 0.0.1", @@ -2591,7 +2585,7 @@ dependencies = [ [[package]] name = "webrender" version = "0.5.1" -source = "git+https://github.com/servo/webrender#4171ab07f36d9dff12cc4fc31b23c037851cd747" +source = "git+https://github.com/servo/webrender#a235d5bd9d3d5174e5b71542277358a9534e7f44" dependencies = [ "app_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2600,14 +2594,14 @@ dependencies = [ "core-graphics 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-text 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "freetype 0.1.0 (git+https://github.com/servo/rust-freetype)", "gleam 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", "ipc-channel 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", - "offscreen_gl_context 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "offscreen_gl_context 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "rayon 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", "webrender_traits 0.5.1 (git+https://github.com/servo/webrender)", @@ -2616,7 +2610,7 @@ dependencies = [ [[package]] name = "webrender_traits" version = "0.5.1" -source = "git+https://github.com/servo/webrender#4171ab07f36d9dff12cc4fc31b23c037851cd747" +source = "git+https://github.com/servo/webrender#a235d5bd9d3d5174e5b71542277358a9534e7f44" dependencies = [ "app_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2625,7 +2619,7 @@ dependencies = [ "gleam 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "ipc-channel 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "offscreen_gl_context 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "offscreen_gl_context 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)", "serde_macros 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2777,7 +2771,7 @@ dependencies = [ "checksum euclid 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cce91503add3d0a1787b9bc8a9a59ee66ea5de1c3aaa6faf67b62997843160d3" "checksum expat-sys 2.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cef36cd1a8a02d28b91d97347c63247b9e4cb8a8e36df36f8201dc87a1c0859c" "checksum flate2 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "3eeb481e957304178d2e782f2da1257f1434dfecbae883bafb61ada2a9fea3bb" -"checksum fnv 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d3d4285d5aa1cf04504b7d8c2d1fdccf4586b56739499a04cc58663b2543cd30" +"checksum fnv 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8e8af7b5408ab0c4910cad114c8f9eb454bf75df7afe8964307eeafb68a13a5e" "checksum fontsan 0.3.2 (git+https://github.com/servo/fontsan)" = "<none>" "checksum freetype 0.1.0 (git+https://github.com/servo/rust-freetype)" = "<none>" "checksum fs2 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "bcd414e5a1a979b931bb92f41b7a54106d3f6d2e6c253e9ce943b7cd468251ef" @@ -2844,7 +2838,7 @@ dependencies = [ "checksum num_cpus 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "cee7e88156f3f9e19bdd598f8d6c9db7bf4078f99f8381f43a55b09648d1a6e3" "checksum objc 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7c9311aa5acd7bee14476afa0f0557f564e9d0d61218a8b833d9b1f871fa5fba" "checksum odds 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)" = "e2adb44c4e3ae8c998874fa73ec4fd885fc7a3389ca44994217b19b8a7b1f269" -"checksum offscreen_gl_context 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "15cf62642c737de52808433b64d8f6cf55b95dc6506d7aa71f136a82f50964d8" +"checksum offscreen_gl_context 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9145c0e9e9a303d5859ea38675c86a62f50b9eb4ed89b0f7bdec21920d7f006a" "checksum open 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c228597177bc4a6876e278f7c7948ac033bfcb4d163ccdd5a009557c8fe5fa1e" "checksum openssl 0.7.14 (registry+https://github.com/rust-lang/crates.io-index)" = "c4117b6244aac42ed0150a6019b4d953d28247c5dd6ae6f46ae469b5f2318733" "checksum openssl-sys 0.7.17 (registry+https://github.com/rust-lang/crates.io-index)" = "89c47ee94c352eea9ddaf8e364be7f978a3bb6d66d73176572484238dd5a5c3f" @@ -2866,7 +2860,6 @@ dependencies = [ "checksum quickersort 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e952ea7699262481636004bc4ab8afaccf2bc13f91b79d1aee6617bd8fc39651" "checksum rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "2791d88c6defac799c3f20d74f094ca33b9332612d9aef9078519c82e4fe04a5" "checksum rayon 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8e501871917624668fe601ad12a730450414f9b0b64722a898b040ce3ae1b0fa" -"checksum ref_filter_map 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2b5ceb840e4009da4841ed22a15eb49f64fdd00a2138945c5beacf506b2fb5ed" "checksum ref_slice 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "24c91f8f8903c37f0525112df98ef53b1985abca5702972e5e00854cd874baf2" "checksum regex 0.1.73 (registry+https://github.com/rust-lang/crates.io-index)" = "56b7ee9f764ecf412c6e2fff779bca4b22980517ae335a21aeaf4e32625a5df2" "checksum regex-syntax 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "31040aad7470ad9d8c46302dcffba337bb4289ca5da2e3cd6e37b64109a85199" @@ -2874,7 +2867,7 @@ dependencies = [ "checksum rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)" = "6159e4e6e559c81bd706afe9c8fd68f547d3e851ce12e76b1de7914bab61691b" "checksum rustc_version 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "c5f5376ea5e30ce23c03eb77cbe4962b988deead10910c372b226388b594c084" "checksum scoped_threadpool 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "3ef399c8893e8cb7aa9696e895427fab3a6bf265977bb96e126f24ddd2cda85a" -"checksum selectors 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cdd81c2af3eba55ccc7048696c517a0e594ae9a4045b8fb3cc6ad80cd6d65ca5" +"checksum selectors 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9eee17ca1807581fc4cf0bfddda311dc421f295a71314b9276ecc787cc63ed6f" "checksum semver 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)" = "d4f410fedcf71af0345d7607d246e7ad15faaadd49d240ee3b24e5dc21a820ac" "checksum serde 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bfdad8985ce7708e21ada7f3f188a0079de4f8e239155348a024e31f13cddf86" "checksum serde_codegen 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)" = "5ae9f0068a5f3266ac4d69eb0c1f9f048a2ac24a42af3db567bcd9a3ffe9d47e" diff --git a/components/style/Cargo.toml b/components/style/Cargo.toml index 41d56af8379..f782f62d70a 100644 --- a/components/style/Cargo.toml +++ b/components/style/Cargo.toml @@ -40,7 +40,7 @@ ordered-float = "0.2.2" quickersort = "2.0.0" rand = "0.3" rustc-serialize = "0.3" -selectors = "0.12" +selectors = "0.13" serde = {version = "0.8", optional = true} serde_macros = {version = "0.8", optional = true} smallvec = "0.1" diff --git a/components/style/dom.rs b/components/style/dom.rs index ce7ba70a1bf..85b2d12c356 100644 --- a/components/style/dom.rs +++ b/components/style/dom.rs @@ -179,6 +179,9 @@ pub trait TDocument : Sized + Copy + Clone { fn drain_modified_elements(&self) -> Vec<(Self::ConcreteElement, <Self::ConcreteElement as ElementExt>::Snapshot)>; + + fn needs_paint_from_layout(&self); + fn will_paint(&self); } pub trait PresentationalHintsSynthetizer { @@ -192,7 +195,7 @@ pub trait TElement : PartialEq + Debug + Sized + Copy + Clone + ElementExt + Pre fn as_node(&self) -> Self::ConcreteNode; - fn style_attribute(&self) -> &Option<PropertyDeclarationBlock>; + fn style_attribute(&self) -> Option<&Arc<PropertyDeclarationBlock>>; fn get_state(&self) -> ElementState; diff --git a/components/script/dom/bindings/cell.rs b/components/style/domrefcell.rs index d1b40af5b1a..a61a2a0d7fe 100644 --- a/components/script/dom/bindings/cell.rs +++ b/components/style/domrefcell.rs @@ -4,17 +4,15 @@ //! A shareable mutable container for the DOM. -use dom::bindings::trace::JSTraceable; -use js::jsapi::JSTracer; -use std::cell::{BorrowError, BorrowMutError, Ref, RefCell, RefMut}; -use style::thread_state; -use style::thread_state::SCRIPT; +use refcell::{BorrowError, BorrowMutError, Ref, RefCell, RefMut}; +use thread_state; /// A mutable field in the DOM. /// /// This extends the API of `core::cell::RefCell` to allow unsafe access in /// certain situations, with dynamic checking in debug builds. -#[derive(Clone, HeapSizeOf)] +#[derive(Clone)] +#[cfg_attr(feature = "servo", derive(HeapSizeOf))] pub struct DOMRefCell<T> { value: RefCell<T>, } @@ -48,7 +46,7 @@ impl<T> DOMRefCell<T> { /// #[allow(unsafe_code)] pub unsafe fn borrow_for_script_deallocation(&self) -> &mut T { - debug_assert!(thread_state::get().contains(SCRIPT)); + debug_assert!(thread_state::get().contains(thread_state::SCRIPT)); &mut *self.value.as_ptr() } @@ -60,14 +58,6 @@ impl<T> DOMRefCell<T> { } } -impl<T: JSTraceable> JSTraceable for DOMRefCell<T> { - fn trace(&self, trc: *mut JSTracer) { - unsafe { - (*self).borrow_for_gc_trace().trace(trc) - } - } -} - // Functionality duplicated with `core::cell::RefCell` // =================================================== impl<T> DOMRefCell<T> { diff --git a/components/style/keyframes.rs b/components/style/keyframes.rs index 56bf4607d4d..d5ee58157b4 100644 --- a/components/style/keyframes.rs +++ b/components/style/keyframes.rs @@ -7,7 +7,7 @@ use cssparser::{DeclarationListParser, DeclarationParser}; use parser::{ParserContext, log_css_error}; use properties::PropertyDeclarationParseResult; use properties::animated_properties::TransitionProperty; -use properties::{PropertyDeclaration, Importance}; +use properties::{PropertyDeclaration, PropertyDeclarationBlock, Importance}; use std::sync::Arc; /// A number from 1 to 100, indicating the percentage of the animation where @@ -77,7 +77,7 @@ pub struct Keyframe { /// so the second value of these tuples is always `Importance::Normal`. /// But including them enables `compute_style_for_animation_step` to create a `DeclarationBlock` /// by cloning an `Arc<_>` (incrementing a reference count) rather than re-creating a `Vec<_>`. - pub declarations: Arc<Vec<(PropertyDeclaration, Importance)>>, + pub block: Arc<PropertyDeclarationBlock>, } /// A keyframes step value. This can be a synthetised keyframes animation, that @@ -88,7 +88,7 @@ pub struct Keyframe { #[cfg_attr(feature = "servo", derive(HeapSizeOf))] pub enum KeyframesStepValue { /// See `Keyframe::declarations`’s docs about the presence of `Importance`. - Declarations(Arc<Vec<(PropertyDeclaration, Importance)>>), + Declarations(Arc<PropertyDeclarationBlock>), ComputedValues, } @@ -113,8 +113,8 @@ impl KeyframesStep { fn new(percentage: KeyframePercentage, value: KeyframesStepValue) -> Self { let declared_timing_function = match value { - KeyframesStepValue::Declarations(ref declarations) => { - declarations.iter().any(|&(ref prop_decl, _)| { + KeyframesStepValue::Declarations(ref block) => { + block.declarations.iter().any(|&(ref prop_decl, _)| { match *prop_decl { PropertyDeclaration::AnimationTimingFunction(..) => true, _ => false, @@ -154,7 +154,7 @@ fn get_animated_properties(keyframe: &Keyframe) -> Vec<TransitionProperty> { let mut ret = vec![]; // NB: declarations are already deduplicated, so we don't have to check for // it here. - for &(ref declaration, _) in keyframe.declarations.iter() { + for &(ref declaration, _) in keyframe.block.declarations.iter() { if let Some(property) = TransitionProperty::from_declaration(declaration) { ret.push(property); } @@ -164,7 +164,7 @@ fn get_animated_properties(keyframe: &Keyframe) -> Vec<TransitionProperty> { } impl KeyframesAnimation { - pub fn from_keyframes(keyframes: &[Keyframe]) -> Option<Self> { + pub fn from_keyframes(keyframes: &[Arc<Keyframe>]) -> Option<Self> { if keyframes.is_empty() { return None; } @@ -179,7 +179,7 @@ impl KeyframesAnimation { for keyframe in keyframes { for percentage in keyframe.selector.0.iter() { steps.push(KeyframesStep::new(*percentage, - KeyframesStepValue::Declarations(keyframe.declarations.clone()))); + KeyframesStepValue::Declarations(keyframe.block.clone()))); } } @@ -216,7 +216,7 @@ struct KeyframeListParser<'a> { context: &'a ParserContext<'a>, } -pub fn parse_keyframe_list(context: &ParserContext, input: &mut Parser) -> Vec<Keyframe> { +pub fn parse_keyframe_list(context: &ParserContext, input: &mut Parser) -> Vec<Arc<Keyframe>> { RuleListParser::new_for_nested_rule(input, KeyframeListParser { context: context }) .filter_map(Result::ok) .collect() @@ -225,12 +225,12 @@ pub fn parse_keyframe_list(context: &ParserContext, input: &mut Parser) -> Vec<K enum Void {} impl<'a> AtRuleParser for KeyframeListParser<'a> { type Prelude = Void; - type AtRule = Keyframe; + type AtRule = Arc<Keyframe>; } impl<'a> QualifiedRuleParser for KeyframeListParser<'a> { type Prelude = KeyframeSelector; - type QualifiedRule = Keyframe; + type QualifiedRule = Arc<Keyframe>; fn parse_prelude(&self, input: &mut Parser) -> Result<Self::Prelude, ()> { let start = input.position(); @@ -263,10 +263,13 @@ impl<'a> QualifiedRuleParser for KeyframeListParser<'a> { } // `parse_important` is not called here, `!important` is not allowed in keyframe blocks. } - Ok(Keyframe { + Ok(Arc::new(Keyframe { selector: prelude, - declarations: Arc::new(declarations), - }) + block: Arc::new(PropertyDeclarationBlock { + declarations: declarations, + important_count: 0, + }), + })) } } diff --git a/components/style/lib.rs b/components/style/lib.rs index fe1957d7c4e..9c1387b79c5 100644 --- a/components/style/lib.rs +++ b/components/style/lib.rs @@ -81,6 +81,7 @@ pub mod context; pub mod custom_properties; pub mod data; pub mod dom; +pub mod domrefcell; pub mod element_state; pub mod error_reporting; pub mod font_face; diff --git a/components/style/matching.rs b/components/style/matching.rs index ca040c9670b..aba47943e2d 100644 --- a/components/style/matching.rs +++ b/components/style/matching.rs @@ -14,11 +14,11 @@ use context::{StyleContext, SharedStyleContext}; use data::PrivateStyleData; use dom::{TElement, TNode, TRestyleDamage, UnsafeNode}; use properties::longhands::display::computed_value as display; -use properties::{ComputedValues, cascade}; +use properties::{ComputedValues, cascade, PropertyDeclarationBlock}; use selector_impl::{TheSelectorImpl, PseudoElement}; use selector_matching::{DeclarationBlock, Stylist}; use selectors::bloom::BloomFilter; -use selectors::matching::{StyleRelations, AFFECTED_BY_PSEUDO_ELEMENTS}; +use selectors::matching::{MatchingReason, StyleRelations, AFFECTED_BY_PSEUDO_ELEMENTS}; use selectors::{Element, MatchAttr}; use sink::ForgetfulSink; use smallvec::SmallVec; @@ -139,7 +139,7 @@ impl<'a> Hash for ApplicableDeclarationsCacheQuery<'a> { for declaration in self.declarations { // Each declaration contians an Arc, which is a stable // pointer; we use that for hashing and equality. - let ptr: *const Vec<_> = &*declaration.mixed_declarations; + let ptr: *const PropertyDeclarationBlock = &*declaration.mixed_declarations; ptr.hash(state); declaration.importance.hash(state); } @@ -651,14 +651,15 @@ pub trait ElementMatchMethods : TElement { applicable_declarations: &mut ApplicableDeclarations) -> StyleRelations { use traversal::relations_are_shareable; - let style_attribute = self.style_attribute().as_ref(); + let style_attribute = self.style_attribute(); let mut relations = stylist.push_applicable_declarations(self, parent_bf, style_attribute, None, - &mut applicable_declarations.normal); + &mut applicable_declarations.normal, + MatchingReason::ForStyling); applicable_declarations.normal_shareable = relations_are_shareable(&relations); @@ -667,7 +668,8 @@ pub trait ElementMatchMethods : TElement { parent_bf, None, Some(&pseudo.clone()), - applicable_declarations.per_pseudo.entry(pseudo).or_insert(vec![])); + applicable_declarations.per_pseudo.entry(pseudo).or_insert(vec![]), + MatchingReason::ForStyling); }); let has_pseudos = diff --git a/components/style/media_queries.rs b/components/style/media_queries.rs index a5a4206a4a1..ed6dd2607bd 100644 --- a/components/style/media_queries.rs +++ b/components/style/media_queries.rs @@ -30,18 +30,23 @@ pub enum Range<T> { impl Range<specified::Length> { fn to_computed_range(&self, viewport_size: Size2D<Au>) -> Range<Au> { + // http://dev.w3.org/csswg/mediaqueries3/#units + // em units are relative to the initial font-size. + let initial_font_size = longhands::font_size::get_initial_value(); let compute_width = |&width| { match width { specified::Length::Absolute(value) => value, - specified::Length::FontRelative(value) => { - // http://dev.w3.org/csswg/mediaqueries3/#units - // em units are relative to the initial font-size. - let initial_font_size = longhands::font_size::get_initial_value(); - value.to_computed_value(initial_font_size, initial_font_size) - } - specified::Length::ViewportPercentage(value) => - value.to_computed_value(viewport_size), - _ => unreachable!() + specified::Length::FontRelative(value) + => value.to_computed_value(initial_font_size, initial_font_size), + specified::Length::ViewportPercentage(value) + => value.to_computed_value(viewport_size), + specified::Length::Calc(val) + => val.compute_from_viewport_and_font_size(viewport_size, + initial_font_size, + initial_font_size) + .length(), + specified::Length::ServoCharacterWidth(..) + => unreachable!(), } }; diff --git a/components/style/properties/gecko.mako.rs b/components/style/properties/gecko.mako.rs index 0676df08c57..38896677800 100644 --- a/components/style/properties/gecko.mako.rs +++ b/components/style/properties/gecko.mako.rs @@ -1210,13 +1210,107 @@ fn static_assert() { </%self:impl_trait> +<%self:impl_trait style_struct_name="Effects" + skip_longhands="box-shadow"> + pub fn set_box_shadow(&mut self, v: longhands::box_shadow::computed_value::T) { + use cssparser::Color; + + self.gecko.mBoxShadow.replace_with_new(v.0.len() as u32); + + for (servo, gecko_shadow) in v.0.into_iter() + .zip(self.gecko.mBoxShadow.iter_mut()) { + + gecko_shadow.mXOffset = servo.offset_x.0; + gecko_shadow.mYOffset = servo.offset_y.0; + gecko_shadow.mRadius = servo.blur_radius.0; + gecko_shadow.mSpread = servo.spread_radius.0; + gecko_shadow.mSpread = servo.spread_radius.0; + gecko_shadow.mInset = servo.inset; + gecko_shadow.mColor = match servo.color { + Color::RGBA(rgba) => { + gecko_shadow.mHasColor = true; + convert_rgba_to_nscolor(&rgba) + }, + // TODO handle currentColor + // https://bugzilla.mozilla.org/show_bug.cgi?id=760345 + Color::CurrentColor => 0, + } + + } + } + + pub fn copy_box_shadow_from(&mut self, other: &Self) { + self.gecko.mBoxShadow.copy_from(&other.gecko.mBoxShadow); + } + + pub fn clone_box_shadow(&self) -> longhands::box_shadow::computed_value::T { + use cssparser::Color; + + let buf = self.gecko.mBoxShadow.iter().map(|shadow| { + longhands::box_shadow::single_value::computed_value::T { + offset_x: Au(shadow.mXOffset), + offset_y: Au(shadow.mYOffset), + blur_radius: Au(shadow.mRadius), + spread_radius: Au(shadow.mSpread), + inset: shadow.mInset, + color: Color::RGBA(convert_nscolor_to_rgba(shadow.mColor)), + } + }).collect(); + longhands::box_shadow::computed_value::T(buf) + } +</%self:impl_trait> + + <%self:impl_trait style_struct_name="InheritedText" - skip_longhands="text-align line-height word-spacing"> + skip_longhands="text-align text-shadow line-height word-spacing"> <% text_align_keyword = Keyword("text-align", "start end left right center justify -moz-center -moz-left " + "-moz-right match-parent") %> ${impl_keyword('text_align', 'mTextAlign', text_align_keyword, need_clone=False)} + pub fn set_text_shadow(&mut self, v: longhands::text_shadow::computed_value::T) { + use cssparser::Color; + self.gecko.mTextShadow.replace_with_new(v.0.len() as u32); + + for (servo, gecko_shadow) in v.0.into_iter() + .zip(self.gecko.mTextShadow.iter_mut()) { + + gecko_shadow.mXOffset = servo.offset_x.0; + gecko_shadow.mYOffset = servo.offset_y.0; + gecko_shadow.mRadius = servo.blur_radius.0; + gecko_shadow.mHasColor = false; + gecko_shadow.mColor = match servo.color { + Color::RGBA(rgba) => { + gecko_shadow.mHasColor = true; + convert_rgba_to_nscolor(&rgba) + }, + // TODO handle currentColor + // https://bugzilla.mozilla.org/show_bug.cgi?id=760345 + Color::CurrentColor => 0, + } + + } + } + + pub fn copy_text_shadow_from(&mut self, other: &Self) { + self.gecko.mTextShadow.copy_from(&other.gecko.mTextShadow); + } + + pub fn clone_text_shadow(&self) -> longhands::text_shadow::computed_value::T { + use cssparser::Color; + + let buf = self.gecko.mTextShadow.iter().map(|shadow| { + longhands::text_shadow::computed_value::TextShadow { + offset_x: Au(shadow.mXOffset), + offset_y: Au(shadow.mYOffset), + blur_radius: Au(shadow.mRadius), + color: Color::RGBA(convert_nscolor_to_rgba(shadow.mColor)), + } + + }).collect(); + longhands::text_shadow::computed_value::T(buf) + } + pub fn set_line_height(&mut self, v: longhands::line_height::computed_value::T) { use properties::longhands::line_height::computed_value::T; // FIXME: Align binary representations and ditch |match| for cast + static_asserts diff --git a/components/style/properties/properties.mako.rs b/components/style/properties/properties.mako.rs index 1c3c87501e3..09809cdc113 100644 --- a/components/style/properties/properties.mako.rs +++ b/components/style/properties/properties.mako.rs @@ -282,16 +282,36 @@ impl Importance { /// Overridden declarations are skipped. // FIXME (https://github.com/servo/servo/issues/3426) -#[derive(Debug, PartialEq)] +#[derive(Debug, PartialEq, Clone)] #[cfg_attr(feature = "servo", derive(HeapSizeOf))] pub struct PropertyDeclarationBlock { #[cfg_attr(feature = "servo", ignore_heap_size_of = "#7038")] - pub declarations: Arc<Vec<(PropertyDeclaration, Importance)>>, + pub declarations: Vec<(PropertyDeclaration, Importance)>, /// The number of entries in `self.declaration` with `Importance::Important` pub important_count: u32, } +impl PropertyDeclarationBlock { + /// Returns wheather this block contains any declaration with `!important`. + /// + /// This is based on the `important_count` counter, + /// which should be maintained whenever `declarations` is changed. + // FIXME: make fields private and maintain it here in methods? + pub fn any_important(&self) -> bool { + self.important_count > 0 + } + + /// Returns wheather this block contains any declaration without `!important`. + /// + /// This is based on the `important_count` counter, + /// which should be maintained whenever `declarations` is changed. + // FIXME: make fields private and maintain it here in methods? + pub fn any_normal(&self) -> bool { + self.declarations.len() > self.important_count as usize + } +} + 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 { @@ -567,7 +587,7 @@ pub fn parse_property_declaration_list(context: &ParserContext, input: &mut Pars } } let mut block = PropertyDeclarationBlock { - declarations: Arc::new(declarations), + declarations: declarations, important_count: important_count, }; deduplicate_property_declarations(&mut block); @@ -583,8 +603,7 @@ fn deduplicate_property_declarations(block: &mut PropertyDeclarationBlock) { let mut seen_custom_normal = Vec::new(); let mut seen_custom_important = Vec::new(); - let declarations = Arc::get_mut(&mut block.declarations).unwrap(); - for (declaration, importance) in declarations.drain(..).rev() { + for (declaration, importance) in block.declarations.drain(..).rev() { match declaration { % for property in data.longhands: PropertyDeclaration::${property.camel_case}(..) => { @@ -636,7 +655,7 @@ fn deduplicate_property_declarations(block: &mut PropertyDeclarationBlock) { deduplicated.push((declaration, importance)) } deduplicated.reverse(); - *declarations = deduplicated; + block.declarations = deduplicated; } #[inline] diff --git a/components/style/refcell.rs b/components/style/refcell.rs index a2413b94ab2..f9a2b4a0672 100644 --- a/components/style/refcell.rs +++ b/components/style/refcell.rs @@ -15,8 +15,11 @@ #![allow(unsafe_code)] +#[cfg(feature = "servo")] use heapsize::HeapSizeOf; use std::cell::{UnsafeCell, Cell}; use std::cmp::Ordering; +use std::fmt::{self, Debug, Display}; +use std::marker::PhantomData; use std::ops::{Deref, DerefMut}; /// A fork of std::cell::RefCell that makes `as_unsafe_cell` usable on stable Rust. @@ -28,7 +31,13 @@ pub struct RefCell<T: ?Sized> { borrow: Cell<BorrowFlag>, value: UnsafeCell<T>, } -type BorrowFlag = usize; + +#[cfg(feature = "servo")] +impl<T: HeapSizeOf> HeapSizeOf for RefCell<T> { + fn heap_size_of_children(&self) -> usize { + self.borrow().heap_size_of_children() + } +} /// An enumeration of values returned from the `state` method on a `RefCell<T>`. #[derive(Copy, Clone, PartialEq, Eq, Debug)] @@ -41,8 +50,43 @@ pub enum BorrowState { Unused, } +/// An error returned by [`RefCell::try_borrow`](struct.RefCell.html#method.try_borrow). +pub struct BorrowError<'a, T: 'a + ?Sized> { + marker: PhantomData<&'a RefCell<T>>, +} + +impl<'a, T: ?Sized> Debug for BorrowError<'a, T> { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + f.debug_struct("BorrowError").finish() + } +} + +impl<'a, T: ?Sized> Display for BorrowError<'a, T> { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + Display::fmt("already mutably borrowed", f) + } +} + +/// An error returned by [`RefCell::try_borrow_mut`](struct.RefCell.html#method.try_borrow_mut). +pub struct BorrowMutError<'a, T: 'a + ?Sized> { + marker: PhantomData<&'a RefCell<T>>, +} + +impl<'a, T: ?Sized> Debug for BorrowMutError<'a, T> { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + f.debug_struct("BorrowMutError").finish() + } +} + +impl<'a, T: ?Sized> Display for BorrowMutError<'a, T> { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + Display::fmt("already borrowed", f) + } +} + // Values [1, MAX-1] represent the number of `Ref` active // (will not outgrow its range since `usize` is the size of the address space) +type BorrowFlag = usize; const UNUSED: BorrowFlag = 0; const WRITING: BorrowFlag = !0; @@ -90,6 +134,22 @@ impl<T: ?Sized> RefCell<T> { /// /// The returned value can be dispatched on to determine if a call to /// `borrow` or `borrow_mut` would succeed. + /// + /// # Examples + /// + /// ``` + /// #![feature(borrow_state)] + /// + /// use std::cell::{BorrowState, RefCell}; + /// + /// let c = RefCell::new(5); + /// + /// match c.borrow_state() { + /// BorrowState::Writing => println!("Cannot be borrowed"), + /// BorrowState::Reading => println!("Cannot be borrowed mutably"), + /// BorrowState::Unused => println!("Can be borrowed (mutably as well)"), + /// } + /// ``` #[inline] pub fn borrow_state(&self) -> BorrowState { match self.borrow.get() { @@ -106,7 +166,8 @@ impl<T: ?Sized> RefCell<T> { /// /// # Panics /// - /// Panics if the value is currently mutably borrowed. + /// Panics if the value is currently mutably borrowed. For a non-panicking variant, use + /// [`try_borrow`](#method.try_borrow). /// /// # Examples /// @@ -136,12 +197,44 @@ impl<T: ?Sized> RefCell<T> { /// ``` #[inline] pub fn borrow(&self) -> Ref<T> { + self.try_borrow().expect("already mutably borrowed") + } + + /// Immutably borrows the wrapped value, returning an error if the value is currently mutably + /// borrowed. + /// + /// The borrow lasts until the returned `Ref` exits scope. Multiple immutable borrows can be + /// taken out at the same time. + /// + /// This is the non-panicking variant of [`borrow`](#method.borrow). + /// + /// # Examples + /// + /// ``` + /// #![feature(try_borrow)] + /// + /// use std::cell::RefCell; + /// + /// let c = RefCell::new(5); + /// + /// { + /// let m = c.borrow_mut(); + /// assert!(c.try_borrow().is_err()); + /// } + /// + /// { + /// let m = c.borrow(); + /// assert!(c.try_borrow().is_ok()); + /// } + /// ``` + #[inline] + pub fn try_borrow(&self) -> Result<Ref<T>, BorrowError<T>> { match BorrowRef::new(&self.borrow) { - Some(b) => Ref { + Some(b) => Ok(Ref { value: unsafe { &*self.value.get() }, borrow: b, - }, - None => panic!("RefCell<T> already mutably borrowed"), + }), + None => Err(BorrowError { marker: PhantomData }), } } @@ -152,7 +245,8 @@ impl<T: ?Sized> RefCell<T> { /// /// # Panics /// - /// Panics if the value is currently borrowed. + /// Panics if the value is currently borrowed. For a non-panicking variant, use + /// [`try_borrow_mut`](#method.try_borrow_mut). /// /// # Examples /// @@ -183,12 +277,40 @@ impl<T: ?Sized> RefCell<T> { /// ``` #[inline] pub fn borrow_mut(&self) -> RefMut<T> { + self.try_borrow_mut().expect("already borrowed") + } + + /// Mutably borrows the wrapped value, returning an error if the value is currently borrowed. + /// + /// The borrow lasts until the returned `RefMut` exits scope. The value cannot be borrowed + /// while this borrow is active. + /// + /// This is the non-panicking variant of [`borrow_mut`](#method.borrow_mut). + /// + /// # Examples + /// + /// ``` + /// #![feature(try_borrow)] + /// + /// use std::cell::RefCell; + /// + /// let c = RefCell::new(5); + /// + /// { + /// let m = c.borrow(); + /// assert!(c.try_borrow_mut().is_err()); + /// } + /// + /// assert!(c.try_borrow_mut().is_ok()); + /// ``` + #[inline] + pub fn try_borrow_mut(&self) -> Result<RefMut<T>, BorrowMutError<T>> { match BorrowRefMut::new(&self.borrow) { - Some(b) => RefMut { + Some(b) => Ok(RefMut { value: unsafe { &mut *self.value.get() }, borrow: b, - }, - None => panic!("RefCell<T> already borrowed"), + }), + None => Err(BorrowMutError { marker: PhantomData }), } } @@ -197,15 +319,53 @@ impl<T: ?Sized> RefCell<T> { /// This can be used to circumvent `RefCell`'s safety checks. /// /// This function is `unsafe` because `UnsafeCell`'s field is public. + /// + /// # Examples + /// + /// ``` + /// #![feature(as_unsafe_cell)] + /// + /// use std::cell::RefCell; + /// + /// let c = RefCell::new(5); + /// let c = unsafe { c.as_unsafe_cell() }; + /// ``` #[inline] pub unsafe fn as_unsafe_cell(&self) -> &UnsafeCell<T> { &self.value } + /// Returns a raw pointer to the underlying data in this cell. + /// + /// # Examples + /// + /// ``` + /// use std::cell::RefCell; + /// + /// let c = RefCell::new(5); + /// + /// let ptr = c.as_ptr(); + /// ``` + #[inline] + pub fn as_ptr(&self) -> *mut T { + self.value.get() + } + /// Returns a mutable reference to the underlying data. /// /// This call borrows `RefCell` mutably (at compile-time) so there is no /// need for dynamic checks. + /// + /// # Examples + /// + /// ``` + /// use std::cell::RefCell; + /// + /// let mut c = RefCell::new(5); + /// *c.get_mut() += 1; + /// + /// assert_eq!(c, RefCell::new(6)); + /// ``` #[inline] pub fn get_mut(&mut self) -> &mut T { unsafe { @@ -375,6 +535,18 @@ impl<'b, T: ?Sized> Ref<'b, T> { borrow: orig.borrow, } } + + #[inline] + pub fn filter_map<U: ?Sized, F>(orig: Ref<'b, T>, f: F) -> Option<Ref<'b, U>> + where F: FnOnce(&T) -> Option<&U> + { + f(orig.value).map(move |new_value| { + Ref { + value: new_value, + borrow: orig.borrow, + } + }) + } } impl<'b, T: ?Sized> RefMut<'b, T> { @@ -461,3 +633,35 @@ impl<'b, T: ?Sized> DerefMut for RefMut<'b, T> { self.value } } + + +// Imported from src/libcore/fmt/mod.rs + +impl<T: ?Sized + Debug> Debug for RefCell<T> { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + match self.borrow_state() { + BorrowState::Unused | BorrowState::Reading => { + f.debug_struct("RefCell") + .field("value", &self.borrow()) + .finish() + } + BorrowState::Writing => { + f.debug_struct("RefCell") + .field("value", &"<borrowed>") + .finish() + } + } + } +} + +impl<'b, T: ?Sized + Debug> Debug for Ref<'b, T> { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + Debug::fmt(&**self, f) + } +} + +impl<'b, T: ?Sized + Debug> Debug for RefMut<'b, T> { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + Debug::fmt(&*(self.deref()), f) + } +} diff --git a/components/style/restyle_hints.rs b/components/style/restyle_hints.rs index 2a9ca8b0569..2801b17e368 100644 --- a/components/style/restyle_hints.rs +++ b/components/style/restyle_hints.rs @@ -5,9 +5,11 @@ //! Restyle hints: an optimization to avoid unnecessarily matching selectors. use element_state::*; +#[cfg(feature = "servo")] +use heapsize::HeapSizeOf; use selector_impl::{ElementExt, TheSelectorImpl, NonTSPseudoClass, AttrValue}; -use selectors::matching::StyleRelations; use selectors::matching::matches_complex_selector; +use selectors::matching::{MatchingReason, StyleRelations}; use selectors::parser::{AttrSelector, Combinator, ComplexSelector, SimpleSelector, SelectorImpl}; use selectors::{Element, MatchAttr}; use std::clone::Clone; @@ -33,6 +35,11 @@ bitflags! { } } +#[cfg(feature = "servo")] +impl HeapSizeOf for RestyleHint { + fn heap_size_of_children(&self) -> usize { 0 } +} + /// In order to compute restyle hints, we perform a selector match against a /// list of partial selectors whose rightmost simple selector may be sensitive /// to the thing being changed. We do this matching twice, once for the element @@ -334,23 +341,50 @@ impl Sensitivities { #[cfg_attr(feature = "servo", derive(HeapSizeOf))] struct Dependency { selector: Arc<ComplexSelector<TheSelectorImpl>>, - combinator: Option<Combinator>, + hint: RestyleHint, sensitivities: Sensitivities, } +/// A set of dependencies for a given stylist. +/// +/// Note that there are measurable perf wins from storing them separately +/// depending on what kind of change they affect, and its also not a big deal to +/// do it, since the dependencies are per-document. #[derive(Debug)] #[cfg_attr(feature = "servo", derive(HeapSizeOf))] pub struct DependencySet { - deps: Vec<Dependency>, + /// Dependencies only affected by state. + state_deps: Vec<Dependency>, + /// Dependencies only affected by attributes. + attr_deps: Vec<Dependency>, + /// Dependencies affected by both. + common_deps: Vec<Dependency>, } impl DependencySet { + fn add_dependency(&mut self, dep: Dependency) { + let affects_attrs = dep.sensitivities.attrs; + let affects_states = !dep.sensitivities.states.is_empty(); + + if affects_attrs && affects_states { + self.common_deps.push(dep) + } else if affects_attrs { + self.attr_deps.push(dep) + } else { + self.state_deps.push(dep) + } + } + pub fn new() -> Self { - DependencySet { deps: Vec::new() } + DependencySet { + state_deps: vec![], + attr_deps: vec![], + common_deps: vec![], + } } pub fn len(&self) -> usize { - self.deps.len() + self.common_deps.len() + self.attr_deps.len() + self.state_deps.len() } pub fn note_selector(&mut self, selector: &Arc<ComplexSelector<TheSelectorImpl>>) { @@ -365,9 +399,9 @@ impl DependencySet { } } if !sensitivities.is_empty() { - self.deps.push(Dependency { + self.add_dependency(Dependency { selector: cur.clone(), - combinator: combinator, + hint: combinator_to_restyle_hint(combinator), sensitivities: sensitivities, }); } @@ -383,38 +417,78 @@ impl DependencySet { } pub fn clear(&mut self) { - self.deps.clear(); + self.common_deps.clear(); + self.attr_deps.clear(); + self.state_deps.clear(); } -} -impl DependencySet { pub fn compute_hint<E>(&self, el: &E, snapshot: &E::Snapshot, current_state: ElementState) -> RestyleHint - where E: ElementExt + Clone + where E: ElementExt + Clone { debug!("About to calculate restyle hint for element. Deps: {}", - self.deps.len()); + self.len()); - let state_changes = snapshot.state().map_or_else(ElementState::empty, |old_state| current_state ^ old_state); + let state_changes = snapshot.state() + .map_or_else(ElementState::empty, |old_state| current_state ^ old_state); let attrs_changed = snapshot.has_attrs(); + + if state_changes.is_empty() && !attrs_changed { + return RestyleHint::empty(); + } + let mut hint = RestyleHint::empty(); - for dep in &self.deps { - if state_changes.intersects(dep.sensitivities.states) || (attrs_changed && dep.sensitivities.attrs) { - let old_el: ElementWrapper<E> = ElementWrapper::new_with_snapshot(el.clone(), snapshot); + let snapshot = ElementWrapper::new_with_snapshot(el.clone(), snapshot); + + Self::compute_partial_hint(&self.common_deps, el, &snapshot, + &state_changes, attrs_changed, &mut hint); + + if !state_changes.is_empty() { + Self::compute_partial_hint(&self.state_deps, el, &snapshot, + &state_changes, attrs_changed, &mut hint); + } + + if attrs_changed { + Self::compute_partial_hint(&self.attr_deps, el, &snapshot, + &state_changes, attrs_changed, &mut hint); + } + + hint + } + + fn compute_partial_hint<E>(deps: &[Dependency], + element: &E, + snapshot: &ElementWrapper<E>, + state_changes: &ElementState, + attrs_changed: bool, + hint: &mut RestyleHint) + where E: ElementExt + { + if hint.is_all() { + return; + } + for dep in deps { + debug_assert!((!state_changes.is_empty() && !dep.sensitivities.states.is_empty()) || + (attrs_changed && dep.sensitivities.attrs), + "Testing a known ineffective dependency?"); + if (attrs_changed || state_changes.intersects(dep.sensitivities.states)) && !hint.intersects(dep.hint) { let matched_then = - matches_complex_selector(&*dep.selector, &old_el, None, &mut StyleRelations::empty()); + matches_complex_selector(&dep.selector, snapshot, None, + &mut StyleRelations::empty(), + MatchingReason::Other); let matches_now = - matches_complex_selector(&*dep.selector, el, None, &mut StyleRelations::empty()); + matches_complex_selector(&dep.selector, element, None, + &mut StyleRelations::empty(), + MatchingReason::Other); if matched_then != matches_now { - hint.insert(combinator_to_restyle_hint(dep.combinator)); - if hint.is_all() { - break - } + hint.insert(dep.hint); + } + if hint.is_all() { + break; } } } - hint } } diff --git a/components/style/selector_matching.rs b/components/style/selector_matching.rs index 66f533d174b..db082f5d480 100644 --- a/components/style/selector_matching.rs +++ b/components/style/selector_matching.rs @@ -16,7 +16,7 @@ use selector_impl::{ElementExt, TheSelectorImpl, PseudoElement}; use selectors::Element; use selectors::bloom::BloomFilter; use selectors::matching::{AFFECTED_BY_STYLE_ATTRIBUTE, AFFECTED_BY_PRESENTATIONAL_HINTS}; -use selectors::matching::{StyleRelations, matches_complex_selector}; +use selectors::matching::{MatchingReason, StyleRelations, matches_complex_selector}; use selectors::parser::{Selector, SimpleSelector, LocalName, ComplexSelector}; use sink::Push; use smallvec::VecLike; @@ -165,28 +165,26 @@ impl Stylist { // Take apart the StyleRule into individual Rules and insert // them into the SelectorMap of that priority. macro_rules! append( - ($style_rule: ident, $priority: ident, $importance: expr, $count: expr) => { - if $count > 0 { - for selector in &$style_rule.selectors { - let map = if let Some(ref pseudo) = selector.pseudo_element { - self.pseudos_map - .entry(pseudo.clone()) - .or_insert_with(PerPseudoElementSelectorMap::new) - .borrow_for_origin(&stylesheet.origin) - } else { - self.element_map.borrow_for_origin(&stylesheet.origin) - }; - - map.$priority.insert(Rule { - selector: selector.complex_selector.clone(), - declarations: DeclarationBlock { - specificity: selector.specificity, - mixed_declarations: $style_rule.declarations.declarations.clone(), - importance: $importance, - source_order: rules_source_order, - }, - }); - } + ($style_rule: ident, $priority: ident, $importance: expr) => { + for selector in &$style_rule.selectors { + let map = if let Some(ref pseudo) = selector.pseudo_element { + self.pseudos_map + .entry(pseudo.clone()) + .or_insert_with(PerPseudoElementSelectorMap::new) + .borrow_for_origin(&stylesheet.origin) + } else { + self.element_map.borrow_for_origin(&stylesheet.origin) + }; + + map.$priority.insert(Rule { + selector: selector.complex_selector.clone(), + declarations: DeclarationBlock { + specificity: selector.specificity, + mixed_declarations: $style_rule.declarations.clone(), + importance: $importance, + source_order: rules_source_order, + }, + }); } }; ); @@ -194,10 +192,8 @@ impl Stylist { for rule in stylesheet.effective_rules(&self.device) { match *rule { CSSRule::Style(ref style_rule) => { - let important_count = style_rule.declarations.important_count; - let normal_count = style_rule.declarations.declarations.len() as u32 - important_count; - append!(style_rule, normal, Importance::Normal, normal_count); - append!(style_rule, important, Importance::Important, important_count); + append!(style_rule, normal, Importance::Normal); + append!(style_rule, important, Importance::Important); rules_source_order += 1; for selector in &style_rule.selectors { @@ -297,7 +293,8 @@ impl Stylist { None, None, Some(pseudo), - &mut declarations); + &mut declarations, + MatchingReason::ForStyling); let (computed, _) = properties::cascade(self.device.au_viewport_size(), @@ -346,9 +343,10 @@ impl Stylist { &self, element: &E, parent_bf: Option<&BloomFilter>, - style_attribute: Option<&PropertyDeclarationBlock>, + style_attribute: Option<&Arc<PropertyDeclarationBlock>>, pseudo_element: Option<&PseudoElement>, - applicable_declarations: &mut V) -> StyleRelations + applicable_declarations: &mut V, + reason: MatchingReason) -> StyleRelations where E: Element<Impl=TheSelectorImpl> + fmt::Debug + PresentationalHintsSynthetizer, @@ -373,7 +371,9 @@ impl Stylist { map.user_agent.normal.get_all_matching_rules(element, parent_bf, applicable_declarations, - &mut relations); + &mut relations, + reason, + Importance::Normal); debug!("UA normal: {:?}", relations); // Step 2: Presentational hints. @@ -389,23 +389,25 @@ impl Stylist { map.user.normal.get_all_matching_rules(element, parent_bf, applicable_declarations, - &mut relations); + &mut relations, + reason, + Importance::Normal); debug!("user normal: {:?}", relations); map.author.normal.get_all_matching_rules(element, parent_bf, applicable_declarations, - &mut relations); + &mut relations, + reason, + Importance::Normal); debug!("author normal: {:?}", relations); // Step 4: Normal style attributes. - if let Some(ref sa) = style_attribute { - if sa.declarations.len() as u32 - sa.important_count > 0 { + if let Some(sa) = style_attribute { + if sa.any_normal() { relations |= AFFECTED_BY_STYLE_ATTRIBUTE; Push::push( applicable_declarations, - DeclarationBlock::from_declarations( - sa.declarations.clone(), - Importance::Normal)); + DeclarationBlock::from_declarations(sa.clone(), Importance::Normal)); } } @@ -415,19 +417,19 @@ impl Stylist { map.author.important.get_all_matching_rules(element, parent_bf, applicable_declarations, - &mut relations); + &mut relations, + reason, + Importance::Important); debug!("author important: {:?}", relations); // Step 6: `!important` style attributes. - if let Some(ref sa) = style_attribute { - if sa.important_count > 0 { + if let Some(sa) = style_attribute { + if sa.any_important() { relations |= AFFECTED_BY_STYLE_ATTRIBUTE; Push::push( applicable_declarations, - DeclarationBlock::from_declarations( - sa.declarations.clone(), - Importance::Important)); + DeclarationBlock::from_declarations(sa.clone(), Importance::Important)); } } @@ -437,14 +439,18 @@ impl Stylist { map.user.important.get_all_matching_rules(element, parent_bf, applicable_declarations, - &mut relations); + &mut relations, + reason, + Importance::Important); debug!("user important: {:?}", relations); map.user_agent.important.get_all_matching_rules(element, parent_bf, applicable_declarations, - &mut relations); + &mut relations, + reason, + Importance::Important); debug!("UA important: {:?}", relations); @@ -470,19 +476,22 @@ impl Stylist { { use selectors::matching::StyleRelations; use selectors::matching::matches_complex_selector; - // XXX we can probably do better, the candidate should already know what - // rules it matches. + // TODO(emilio): we can probably do better, the candidate should already + // know what rules it matches. Also, we should only match until we find + // a descendant combinator, the rest should be ok, since the parent is + // the same. // - // XXX Could the bloom filter help here? Should be available. + // TODO(emilio): Use the bloom filter, since they contain the element's + // ancestor chain and it's correct for the candidate too. for ref selector in self.non_common_style_affecting_attributes_selectors.iter() { - let element_matches = matches_complex_selector(&selector.complex_selector, - element, - None, - &mut StyleRelations::empty()); - let candidate_matches = matches_complex_selector(&selector.complex_selector, - candidate, - None, - &mut StyleRelations::empty()); + let element_matches = + matches_complex_selector(&selector.complex_selector, element, + None, &mut StyleRelations::empty(), + MatchingReason::Other); + let candidate_matches = + matches_complex_selector(&selector.complex_selector, candidate, + None, &mut StyleRelations::empty(), + MatchingReason::Other); if element_matches != candidate_matches { return false; @@ -499,20 +508,21 @@ impl Stylist { { use selectors::matching::StyleRelations; use selectors::matching::matches_complex_selector; - // XXX we can probably do better, the candidate should already know what - // rules it matches. + // TODO(emilio): we can probably do better, the candidate should already + // know what rules it matches. // - // XXX The bloom filter would help here, and should be available. + // TODO(emilio): Use the bloom filter, since they contain the element's + // ancestor chain and it's correct for the candidate too. for ref selector in self.sibling_affecting_selectors.iter() { - let element_matches = matches_complex_selector(&selector.complex_selector, - element, - None, - &mut StyleRelations::empty()); + let element_matches = + matches_complex_selector(&selector.complex_selector, element, + None, &mut StyleRelations::empty(), + MatchingReason::Other); - let candidate_matches = matches_complex_selector(&selector.complex_selector, - candidate, - None, - &mut StyleRelations::empty()); + let candidate_matches = + matches_complex_selector(&selector.complex_selector, candidate, + None, &mut StyleRelations::empty(), + MatchingReason::Other); if element_matches != candidate_matches { debug!("match_same_sibling_affecting_rules: Failure due to {:?}", @@ -651,7 +661,9 @@ impl SelectorMap { element: &E, parent_bf: Option<&BloomFilter>, matching_rules_list: &mut V, - relations: &mut StyleRelations) + relations: &mut StyleRelations, + reason: MatchingReason, + importance: Importance) where E: Element<Impl=TheSelectorImpl>, V: VecLike<DeclarationBlock> { @@ -667,7 +679,9 @@ impl SelectorMap { &self.id_hash, &id, matching_rules_list, - relations) + relations, + reason, + importance) } element.each_class(|class| { @@ -676,7 +690,9 @@ impl SelectorMap { &self.class_hash, class, matching_rules_list, - relations); + relations, + reason, + importance); }); let local_name_hash = if element.is_html_element_in_html_document() { @@ -689,13 +705,17 @@ impl SelectorMap { local_name_hash, element.get_local_name(), matching_rules_list, - relations); + relations, + reason, + importance); SelectorMap::get_matching_rules(element, parent_bf, &self.other_rules, matching_rules_list, - relations); + relations, + reason, + importance); // Sort only the rules we just added. sort_by_key(&mut matching_rules_list[init_len..], @@ -731,7 +751,9 @@ impl SelectorMap { hash: &FnvHashMap<Str, Vec<Rule>>, key: &BorrowedStr, matching_rules: &mut Vector, - relations: &mut StyleRelations) + relations: &mut StyleRelations, + reason: MatchingReason, + importance: Importance) where E: Element<Impl=TheSelectorImpl>, Str: Borrow<BorrowedStr> + Eq + Hash, BorrowedStr: Eq + Hash, @@ -742,7 +764,9 @@ impl SelectorMap { parent_bf, rules, matching_rules, - relations) + relations, + reason, + importance) } } @@ -751,13 +775,22 @@ impl SelectorMap { parent_bf: Option<&BloomFilter>, rules: &[Rule], matching_rules: &mut V, - relations: &mut StyleRelations) + relations: &mut StyleRelations, + reason: MatchingReason, + importance: Importance) where E: Element<Impl=TheSelectorImpl>, V: VecLike<DeclarationBlock> { for rule in rules.iter() { - if matches_complex_selector(&*rule.selector, - element, parent_bf, relations) { + let block = &rule.declarations.mixed_declarations; + let any_declaration_for_importance = if importance.important() { + block.any_important() + } else { + block.any_normal() + }; + if any_declaration_for_importance && + matches_complex_selector(&*rule.selector, element, parent_bf, + relations, reason) { matching_rules.push(rule.declarations.clone()); } } @@ -845,7 +878,7 @@ pub struct Rule { pub struct DeclarationBlock { /// Contains declarations of either importance, but only those of self.importance are relevant. /// Use DeclarationBlock::iter - pub mixed_declarations: Arc<Vec<(PropertyDeclaration, Importance)>>, + pub mixed_declarations: Arc<PropertyDeclarationBlock>, pub importance: Importance, pub source_order: usize, pub specificity: u32, @@ -853,7 +886,7 @@ pub struct DeclarationBlock { impl DeclarationBlock { #[inline] - pub fn from_declarations(declarations: Arc<Vec<(PropertyDeclaration, Importance)>>, + pub fn from_declarations(declarations: Arc<PropertyDeclarationBlock>, importance: Importance) -> Self { DeclarationBlock { @@ -866,7 +899,7 @@ impl DeclarationBlock { pub fn iter(&self) -> DeclarationBlockIter { DeclarationBlockIter { - iter: self.mixed_declarations.iter(), + iter: self.mixed_declarations.declarations.iter(), importance: self.importance, } } diff --git a/components/style/stylesheets.rs b/components/style/stylesheets.rs index e622679fee5..6c4f452f7d9 100644 --- a/components/style/stylesheets.rs +++ b/components/style/stylesheets.rs @@ -19,6 +19,7 @@ use smallvec::SmallVec; use std::cell::Cell; use std::iter::Iterator; use std::slice; +use std::sync::Arc; use string_cache::{Atom, Namespace}; use url::Url; use viewport::ViewportRule; @@ -64,31 +65,37 @@ pub struct UserAgentStylesheets { #[derive(Debug, PartialEq)] #[cfg_attr(feature = "servo", derive(HeapSizeOf))] pub enum CSSRule { - Charset(String), - Namespace { - /// `None` for the default Namespace - prefix: Option<Atom>, - url: Namespace, - }, - Style(StyleRule), - Media(MediaRule), - FontFace(FontFaceRule), - Viewport(ViewportRule), - Keyframes(KeyframesRule), + // No Charset here, CSSCharsetRule has been removed from CSSOM + // https://drafts.csswg.org/cssom/#changes-from-5-december-2013 + + Namespace(Arc<NamespaceRule>), + Style(Arc<StyleRule>), + Media(Arc<MediaRule>), + FontFace(Arc<FontFaceRule>), + Viewport(Arc<ViewportRule>), + Keyframes(Arc<KeyframesRule>), } #[derive(Debug, PartialEq)] #[cfg_attr(feature = "servo", derive(HeapSizeOf))] +pub struct NamespaceRule { + /// `None` for the default Namespace + pub prefix: Option<Atom>, + pub url: Namespace, +} + +#[derive(Debug, PartialEq)] +#[cfg_attr(feature = "servo", derive(HeapSizeOf))] pub struct KeyframesRule { pub name: Atom, - pub keyframes: Vec<Keyframe>, + pub keyframes: Vec<Arc<Keyframe>>, } #[derive(Debug, PartialEq)] #[cfg_attr(feature = "servo", derive(HeapSizeOf))] pub struct MediaRule { - pub media_queries: MediaQueryList, + pub media_queries: Arc<MediaQueryList>, pub rules: Vec<CSSRule>, } @@ -104,7 +111,7 @@ impl MediaRule { #[cfg_attr(feature = "servo", derive(HeapSizeOf))] pub struct StyleRule { pub selectors: Vec<Selector<TheSelectorImpl>>, - pub declarations: PropertyDeclarationBlock, + pub declarations: Arc<PropertyDeclarationBlock>, } @@ -154,13 +161,13 @@ impl Stylesheet { while let Some(result) = iter.next() { match result { Ok(rule) => { - if let CSSRule::Namespace { ref prefix, ref url } = rule { - if let Some(prefix) = prefix.as_ref() { + if let CSSRule::Namespace(ref rule) = rule { + if let Some(ref prefix) = rule.prefix { iter.parser.context.selector_context.namespace_prefixes.insert( - prefix.clone(), url.clone()); + prefix.clone(), rule.url.clone()); } else { iter.parser.context.selector_context.default_namespace = - Some(url.clone()); + Some(rule.url.clone()); } } @@ -408,7 +415,7 @@ enum AtRulePrelude { /// A @font-face rule prelude. FontFace, /// A @media rule prelude, with its media queries. - Media(MediaQueryList), + Media(Arc<MediaQueryList>), /// A @viewport rule prelude. Viewport, /// A @keyframes rule, with its animation name. @@ -423,16 +430,6 @@ impl<'a> AtRuleParser for TopLevelRuleParser<'a> { fn parse_prelude(&self, name: &str, input: &mut Parser) -> Result<AtRuleType<AtRulePrelude, CSSRule>, ()> { match_ignore_ascii_case! { name, - "charset" => { - if self.state.get() <= State::Start { - // Valid @charset rules are just ignored - self.state.set(State::Imports); - let charset = try!(input.expect_string()).into_owned(); - return Ok(AtRuleType::WithoutBlock(CSSRule::Charset(charset))) - } else { - return Err(()) // "@charset must be the first rule" - } - }, "import" => { if self.state.get() <= State::Imports { self.state.set(State::Imports); @@ -448,14 +445,17 @@ impl<'a> AtRuleParser for TopLevelRuleParser<'a> { let prefix = input.try(|input| input.expect_ident()).ok().map(|p| p.into()); let url = Namespace(Atom::from(try!(input.expect_url_or_string()))); - return Ok(AtRuleType::WithoutBlock(CSSRule::Namespace { + return Ok(AtRuleType::WithoutBlock(CSSRule::Namespace(Arc::new(NamespaceRule { prefix: prefix, url: url, - })) + })))) } else { return Err(()) // "@namespace must be before any rule but @charset and @import" } }, + // @charset is removed by rust-cssparser if it’s the first rule in the stylesheet + // anything left is invalid. + "charset" => return Err(()), // (insert appropriate error message) _ => {} } @@ -502,7 +502,7 @@ impl<'a, 'b> AtRuleParser for NestedRuleParser<'a, 'b> { match_ignore_ascii_case! { name, "media" => { let media_queries = parse_media_query_list(input); - Ok(AtRuleType::WithBlock(AtRulePrelude::Media(media_queries))) + Ok(AtRuleType::WithBlock(AtRulePrelude::Media(Arc::new(media_queries)))) }, "font-face" => { Ok(AtRuleType::WithBlock(AtRulePrelude::FontFace)) @@ -530,22 +530,22 @@ impl<'a, 'b> AtRuleParser for NestedRuleParser<'a, 'b> { fn parse_block(&self, prelude: AtRulePrelude, input: &mut Parser) -> Result<CSSRule, ()> { match prelude { AtRulePrelude::FontFace => { - parse_font_face_block(self.context, input).map(CSSRule::FontFace) + Ok(CSSRule::FontFace(Arc::new(try!(parse_font_face_block(self.context, input))))) } AtRulePrelude::Media(media_queries) => { - Ok(CSSRule::Media(MediaRule { + Ok(CSSRule::Media(Arc::new(MediaRule { media_queries: media_queries, rules: parse_nested_rules(self.context, input), - })) + }))) } AtRulePrelude::Viewport => { - ViewportRule::parse(input, self.context).map(CSSRule::Viewport) + Ok(CSSRule::Viewport(Arc::new(try!(ViewportRule::parse(input, self.context))))) } AtRulePrelude::Keyframes(name) => { - Ok(CSSRule::Keyframes(KeyframesRule { + Ok(CSSRule::Keyframes(Arc::new(KeyframesRule { name: name, keyframes: parse_keyframe_list(&self.context, input), - })) + }))) } } } @@ -560,9 +560,9 @@ impl<'a, 'b> QualifiedRuleParser for NestedRuleParser<'a, 'b> { } fn parse_block(&self, prelude: Vec<Selector<TheSelectorImpl>>, input: &mut Parser) -> Result<CSSRule, ()> { - Ok(CSSRule::Style(StyleRule { + Ok(CSSRule::Style(Arc::new(StyleRule { selectors: prelude, - declarations: parse_property_declaration_list(self.context, input) - })) + declarations: Arc::new(parse_property_declaration_list(self.context, input)) + }))) } } diff --git a/components/style/values/computed/mod.rs b/components/style/values/computed/mod.rs index 9864cd67983..28fc7b3892f 100644 --- a/components/style/values/computed/mod.rs +++ b/components/style/values/computed/mod.rs @@ -164,26 +164,10 @@ impl ToComputedValue for specified::CalcLengthOrPercentage { type ComputedValue = CalcLengthOrPercentage; fn to_computed_value(&self, context: &Context) -> CalcLengthOrPercentage { - let mut length = None; + self.compute_from_viewport_and_font_size(context.viewport_size(), + context.style().get_font().clone_font_size(), + context.style().root_font_size()) - if let Some(absolute) = self.absolute { - length = Some(length.unwrap_or(Au(0)) + absolute); - } - - for val in &[self.vw, self.vh, self.vmin, self.vmax] { - if let Some(val) = *val { - length = Some(length.unwrap_or(Au(0)) + - val.to_computed_value(context.viewport_size())); - } - } - for val in &[self.ch, self.em, self.ex, self.rem] { - if let Some(val) = *val { - length = Some(length.unwrap_or(Au(0)) + val.to_computed_value( - context.style().get_font().clone_font_size(), context.style().root_font_size())); - } - } - - CalcLengthOrPercentage { length: length, percentage: self.percentage.map(|p| p.0) } } } diff --git a/components/style/values/specified/mod.rs b/components/style/values/specified/mod.rs index 77df3f94bdb..3bbdcb1ccb9 100644 --- a/components/style/values/specified/mod.rs +++ b/components/style/values/specified/mod.rs @@ -16,7 +16,7 @@ use std::f32::consts::PI; use std::fmt; use std::ops::Mul; use style_traits::values::specified::AllowedNumericType; -use super::computed::{Context, ToComputedValue}; +use super::computed::{self, Context, ToComputedValue}; use super::{CSSFloat, FONT_MEDIUM_PX, HasViewportPercentage, LocalToCss, NoViewportPercentage}; use url::Url; @@ -286,22 +286,24 @@ impl Length { } #[inline] - fn parse_internal(input: &mut Parser, context: &AllowedNumericType) -> Result<Length, ()> { + fn parse_internal(input: &mut Parser, context: AllowedNumericType) -> Result<Length, ()> { match try!(input.next()) { Token::Dimension(ref value, ref unit) if context.is_ok(value.value) => Length::parse_dimension(value.value, unit), Token::Number(ref value) if value.value == 0. => Ok(Length::Absolute(Au(0))), Token::Function(ref name) if name.eq_ignore_ascii_case("calc") => - input.parse_nested_block(CalcLengthOrPercentage::parse_length), + input.parse_nested_block(|input| { + CalcLengthOrPercentage::parse_length(input, context) + }), _ => Err(()) } } pub fn parse(input: &mut Parser) -> Result<Length, ()> { - Length::parse_internal(input, &AllowedNumericType::All) + Length::parse_internal(input, AllowedNumericType::All) } pub fn parse_non_negative(input: &mut Parser) -> Result<Length, ()> { - Length::parse_internal(input, &AllowedNumericType::NonNegative) + Length::parse_internal(input, AllowedNumericType::NonNegative) } pub fn parse_dimension(value: CSSFloat, unit: &str) -> Result<Length, ()> { match_ignore_ascii_case! { unit, @@ -467,6 +469,8 @@ pub struct CalcLengthOrPercentage { pub ch: Option<FontRelativeLength>, pub rem: Option<FontRelativeLength>, pub percentage: Option<Percentage>, + /// Whether the value returned can be negative at computed value time. + pub allowed_numeric_type: AllowedNumericType, } impl CalcLengthOrPercentage { @@ -617,15 +621,19 @@ impl CalcLengthOrPercentage { } } - fn parse_length(input: &mut Parser) -> Result<Length, ()> { - CalcLengthOrPercentage::parse(input, CalcUnit::Length).map(Length::Calc) + fn parse_length(input: &mut Parser, + context: AllowedNumericType) -> Result<Length, ()> { + CalcLengthOrPercentage::parse(input, CalcUnit::Length, context).map(Length::Calc) } - fn parse_length_or_percentage(input: &mut Parser) -> Result<CalcLengthOrPercentage, ()> { - CalcLengthOrPercentage::parse(input, CalcUnit::LengthOrPercentage) + fn parse_length_or_percentage(input: &mut Parser, + context: AllowedNumericType) -> Result<CalcLengthOrPercentage, ()> { + CalcLengthOrPercentage::parse(input, CalcUnit::LengthOrPercentage, context) } - fn parse(input: &mut Parser, expected_unit: CalcUnit) -> Result<CalcLengthOrPercentage, ()> { + fn parse(input: &mut Parser, + expected_unit: CalcUnit, + context: AllowedNumericType) -> Result<CalcLengthOrPercentage, ()> { let ast = try!(CalcLengthOrPercentage::parse_sum(input, expected_unit)); let mut simplified = Vec::new(); @@ -692,6 +700,7 @@ impl CalcLengthOrPercentage { ch: ch.map(FontRelativeLength::Ch), rem: rem.map(FontRelativeLength::Rem), percentage: percentage.map(Percentage), + allowed_numeric_type: context, }) } @@ -751,6 +760,52 @@ impl CalcLengthOrPercentage { _ => Err(()) } } + + pub fn compute_from_viewport_and_font_size(&self, + viewport_size: Size2D<Au>, + font_size: Au, + root_font_size: Au) + -> computed::CalcLengthOrPercentage + { + let mut length = None; + + if let Some(absolute) = self.absolute { + length = Some(length.unwrap_or(Au(0)) + absolute); + } + + for val in &[self.vw, self.vh, self.vmin, self.vmax] { + if let Some(val) = *val { + length = Some(length.unwrap_or(Au(0)) + + val.to_computed_value(viewport_size)); + } + } + + for val in &[self.ch, self.em, self.ex, self.rem] { + if let Some(val) = *val { + length = Some(length.unwrap_or(Au(0)) + val.to_computed_value( + font_size, root_font_size)); + } + } + + // https://drafts.csswg.org/css-values/#calc-range + let mut percentage = self.percentage.map(|p| p.0); + if let AllowedNumericType::NonNegative = self.allowed_numeric_type { + if let Some(ref mut length) = length { + *length = cmp::max(*length, Au(0)); + } + + if let Some(ref mut percentage) = percentage { + if *percentage < 0. { + *percentage = 0.; + } + } + } + + computed::CalcLengthOrPercentage { + length: length, + percentage: percentage, + } + } } impl HasViewportPercentage for CalcLengthOrPercentage { @@ -853,7 +908,7 @@ impl LengthOrPercentage { LengthOrPercentage::Length(Length::Absolute(Au(0))) } - fn parse_internal(input: &mut Parser, context: &AllowedNumericType) + fn parse_internal(input: &mut Parser, context: AllowedNumericType) -> Result<LengthOrPercentage, ()> { match try!(input.next()) { @@ -864,7 +919,9 @@ impl LengthOrPercentage { Token::Number(ref value) if value.value == 0. => Ok(LengthOrPercentage::Length(Length::Absolute(Au(0)))), Token::Function(ref name) if name.eq_ignore_ascii_case("calc") => { - let calc = try!(input.parse_nested_block(CalcLengthOrPercentage::parse_length_or_percentage)); + let calc = try!(input.parse_nested_block(|input| { + CalcLengthOrPercentage::parse_length_or_percentage(input, context) + })); Ok(LengthOrPercentage::Calc(calc)) }, _ => Err(()) @@ -872,11 +929,11 @@ impl LengthOrPercentage { } #[inline] pub fn parse(input: &mut Parser) -> Result<LengthOrPercentage, ()> { - LengthOrPercentage::parse_internal(input, &AllowedNumericType::All) + LengthOrPercentage::parse_internal(input, AllowedNumericType::All) } #[inline] pub fn parse_non_negative(input: &mut Parser) -> Result<LengthOrPercentage, ()> { - LengthOrPercentage::parse_internal(input, &AllowedNumericType::NonNegative) + LengthOrPercentage::parse_internal(input, AllowedNumericType::NonNegative) } } @@ -911,7 +968,7 @@ impl ToCss for LengthOrPercentageOrAuto { } impl LengthOrPercentageOrAuto { - fn parse_internal(input: &mut Parser, context: &AllowedNumericType) + fn parse_internal(input: &mut Parser, context: AllowedNumericType) -> Result<LengthOrPercentageOrAuto, ()> { match try!(input.next()) { @@ -924,7 +981,9 @@ impl LengthOrPercentageOrAuto { Token::Ident(ref value) if value.eq_ignore_ascii_case("auto") => Ok(LengthOrPercentageOrAuto::Auto), Token::Function(ref name) if name.eq_ignore_ascii_case("calc") => { - let calc = try!(input.parse_nested_block(CalcLengthOrPercentage::parse_length_or_percentage)); + let calc = try!(input.parse_nested_block(|input| { + CalcLengthOrPercentage::parse_length_or_percentage(input, context) + })); Ok(LengthOrPercentageOrAuto::Calc(calc)) }, _ => Err(()) @@ -932,11 +991,11 @@ impl LengthOrPercentageOrAuto { } #[inline] pub fn parse(input: &mut Parser) -> Result<LengthOrPercentageOrAuto, ()> { - LengthOrPercentageOrAuto::parse_internal(input, &AllowedNumericType::All) + LengthOrPercentageOrAuto::parse_internal(input, AllowedNumericType::All) } #[inline] pub fn parse_non_negative(input: &mut Parser) -> Result<LengthOrPercentageOrAuto, ()> { - LengthOrPercentageOrAuto::parse_internal(input, &AllowedNumericType::NonNegative) + LengthOrPercentageOrAuto::parse_internal(input, AllowedNumericType::NonNegative) } } @@ -970,7 +1029,7 @@ impl ToCss for LengthOrPercentageOrNone { } } impl LengthOrPercentageOrNone { - fn parse_internal(input: &mut Parser, context: &AllowedNumericType) + fn parse_internal(input: &mut Parser, context: AllowedNumericType) -> Result<LengthOrPercentageOrNone, ()> { match try!(input.next()) { @@ -981,7 +1040,9 @@ impl LengthOrPercentageOrNone { Token::Number(ref value) if value.value == 0. => Ok(LengthOrPercentageOrNone::Length(Length::Absolute(Au(0)))), Token::Function(ref name) if name.eq_ignore_ascii_case("calc") => { - let calc = try!(input.parse_nested_block(CalcLengthOrPercentage::parse_length_or_percentage)); + let calc = try!(input.parse_nested_block(|input| { + CalcLengthOrPercentage::parse_length_or_percentage(input, context) + })); Ok(LengthOrPercentageOrNone::Calc(calc)) }, Token::Ident(ref value) if value.eq_ignore_ascii_case("none") => @@ -991,11 +1052,11 @@ impl LengthOrPercentageOrNone { } #[inline] pub fn parse(input: &mut Parser) -> Result<LengthOrPercentageOrNone, ()> { - LengthOrPercentageOrNone::parse_internal(input, &AllowedNumericType::All) + LengthOrPercentageOrNone::parse_internal(input, AllowedNumericType::All) } #[inline] pub fn parse_non_negative(input: &mut Parser) -> Result<LengthOrPercentageOrNone, ()> { - LengthOrPercentageOrNone::parse_internal(input, &AllowedNumericType::NonNegative) + LengthOrPercentageOrNone::parse_internal(input, AllowedNumericType::NonNegative) } } @@ -1024,7 +1085,7 @@ impl ToCss for LengthOrNone { } } impl LengthOrNone { - fn parse_internal(input: &mut Parser, context: &AllowedNumericType) + fn parse_internal(input: &mut Parser, context: AllowedNumericType) -> Result<LengthOrNone, ()> { match try!(input.next()) { @@ -1033,7 +1094,9 @@ impl LengthOrNone { Token::Number(ref value) if value.value == 0. => Ok(LengthOrNone::Length(Length::Absolute(Au(0)))), Token::Function(ref name) if name.eq_ignore_ascii_case("calc") => - input.parse_nested_block(CalcLengthOrPercentage::parse_length).map(LengthOrNone::Length), + input.parse_nested_block(|input| { + CalcLengthOrPercentage::parse_length(input, context) + }).map(LengthOrNone::Length), Token::Ident(ref value) if value.eq_ignore_ascii_case("none") => Ok(LengthOrNone::None), _ => Err(()) @@ -1041,11 +1104,11 @@ impl LengthOrNone { } #[inline] pub fn parse(input: &mut Parser) -> Result<LengthOrNone, ()> { - LengthOrNone::parse_internal(input, &AllowedNumericType::All) + LengthOrNone::parse_internal(input, AllowedNumericType::All) } #[inline] pub fn parse_non_negative(input: &mut Parser) -> Result<LengthOrNone, ()> { - LengthOrNone::parse_internal(input, &AllowedNumericType::NonNegative) + LengthOrNone::parse_internal(input, AllowedNumericType::NonNegative) } } @@ -1096,7 +1159,9 @@ impl LengthOrPercentageOrAutoOrContent { Token::Ident(ref value) if value.eq_ignore_ascii_case("content") => Ok(LengthOrPercentageOrAutoOrContent::Content), Token::Function(ref name) if name.eq_ignore_ascii_case("calc") => { - let calc = try!(input.parse_nested_block(CalcLengthOrPercentage::parse_length_or_percentage)); + let calc = try!(input.parse_nested_block(|input| { + CalcLengthOrPercentage::parse_length_or_percentage(input, context) + })); Ok(LengthOrPercentageOrAutoOrContent::Calc(calc)) }, _ => Err(()) diff --git a/components/style_traits/values.rs b/components/style_traits/values.rs index 995e98fcfef..eb6f3c13a55 100644 --- a/components/style_traits/values.rs +++ b/components/style_traits/values.rs @@ -63,6 +63,8 @@ macro_rules! __define_css_keyword_enum__actual { pub mod specified { + #[repr(u8)] + #[cfg_attr(feature = "servo", derive(HeapSizeOf))] #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub enum AllowedNumericType { All, @@ -12,11 +12,10 @@ from __future__ import print_function, unicode_literals import os -from os import path import sys def main(args): - topdir = path.abspath(path.dirname(sys.argv[0])) + topdir = os.path.abspath(os.path.dirname(sys.argv[0])) sys.path.insert(0, os.path.join(topdir, "python")) import mach_bootstrap mach = mach_bootstrap.bootstrap(topdir) diff --git a/ports/cef/Cargo.lock b/ports/cef/Cargo.lock index ce817a3f9f8..61a0c37c836 100644 --- a/ports/cef/Cargo.lock +++ b/ports/cef/Cargo.lock @@ -193,7 +193,7 @@ dependencies = [ "ipc-channel 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", - "offscreen_gl_context 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "offscreen_gl_context 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "plugins 0.0.1", "util 0.0.1", "webrender_traits 0.5.1 (git+https://github.com/servo/webrender)", @@ -311,7 +311,7 @@ dependencies = [ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "msg 0.0.1", "net_traits 0.0.1", - "offscreen_gl_context 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "offscreen_gl_context 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "plugins 0.0.1", "profile_traits 0.0.1", "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", @@ -603,7 +603,7 @@ dependencies = [ [[package]] name = "fnv" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -684,7 +684,7 @@ dependencies = [ "core-graphics 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-text 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "fontsan 0.3.2 (git+https://github.com/servo/fontsan)", "freetype 0.1.0 (git+https://github.com/servo/rust-freetype)", "gfx_traits 0.0.1", @@ -994,7 +994,7 @@ dependencies = [ [[package]] name = "js" version = "0.1.3" -source = "git+https://github.com/servo/rust-mozjs#f06428fab33a6ae633584a1a7e1bf4e3ef7914b3" +source = "git+https://github.com/servo/rust-mozjs#f5444dd82b864a88cf874c66c75aed478fd88d22" dependencies = [ "cmake 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1055,7 +1055,7 @@ dependencies = [ "canvas_traits 0.0.1", "cssparser 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "gfx 0.0.1", "gfx_traits 0.0.1", "heapsize 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1072,7 +1072,7 @@ dependencies = [ "rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)", "script_layout_interface 0.0.1", "script_traits 0.0.1", - "selectors 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "selectors 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde_macros 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache 0.2.26 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1092,7 +1092,7 @@ dependencies = [ "app_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "azure 0.8.0 (git+https://github.com/servo/rust-azure)", "euclid 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "gfx 0.0.1", "gfx_traits 0.0.1", "heapsize 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1451,7 +1451,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "offscreen_gl_context" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cgl 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1692,11 +1692,6 @@ dependencies = [ ] [[package]] -name = "ref_filter_map" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] name = "ref_slice" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1756,7 +1751,7 @@ dependencies = [ "devtools_traits 0.0.1", "encoding 0.2.32 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "gfx_traits 0.0.1", "heapsize 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize_plugin 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1773,7 +1768,7 @@ dependencies = [ "msg 0.0.1", "net_traits 0.0.1", "num-traits 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", - "offscreen_gl_context 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "offscreen_gl_context 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "open 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "phf 0.7.16 (registry+https://github.com/rust-lang/crates.io-index)", "phf_macros 0.7.16 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1781,13 +1776,12 @@ dependencies = [ "profile_traits 0.0.1", "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", "range 0.0.1", - "ref_filter_map 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "ref_slice 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "regex 0.1.73 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)", "script_layout_interface 0.0.1", "script_traits 0.0.1", - "selectors 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "selectors 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache 0.2.26 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1823,7 +1817,7 @@ dependencies = [ "profile_traits 0.0.1", "range 0.0.1", "script_traits 0.0.1", - "selectors 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "selectors 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache 0.2.26 (registry+https://github.com/rust-lang/crates.io-index)", "style 0.0.1", "url 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1848,7 +1842,7 @@ dependencies = [ "libc 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)", "msg 0.0.1", "net_traits 0.0.1", - "offscreen_gl_context 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "offscreen_gl_context 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "plugins 0.0.1", "profile_traits 0.0.1", "rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1862,12 +1856,12 @@ dependencies = [ [[package]] name = "selectors" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "cssparser 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize_plugin 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "matches 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2110,7 +2104,7 @@ dependencies = [ "deque 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "encoding 0.2.32 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize_plugin 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2125,7 +2119,7 @@ dependencies = [ "quickersort 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)", - "selectors 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "selectors 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)", "serde_macros 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2451,7 +2445,7 @@ dependencies = [ [[package]] name = "webrender" version = "0.5.1" -source = "git+https://github.com/servo/webrender#4171ab07f36d9dff12cc4fc31b23c037851cd747" +source = "git+https://github.com/servo/webrender#a235d5bd9d3d5174e5b71542277358a9534e7f44" dependencies = [ "app_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2460,14 +2454,14 @@ dependencies = [ "core-graphics 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-text 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "freetype 0.1.0 (git+https://github.com/servo/rust-freetype)", "gleam 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", "ipc-channel 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", - "offscreen_gl_context 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "offscreen_gl_context 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "rayon 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", "webrender_traits 0.5.1 (git+https://github.com/servo/webrender)", @@ -2476,7 +2470,7 @@ dependencies = [ [[package]] name = "webrender_traits" version = "0.5.1" -source = "git+https://github.com/servo/webrender#4171ab07f36d9dff12cc4fc31b23c037851cd747" +source = "git+https://github.com/servo/webrender#a235d5bd9d3d5174e5b71542277358a9534e7f44" dependencies = [ "app_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2485,7 +2479,7 @@ dependencies = [ "gleam 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "ipc-channel 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "offscreen_gl_context 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "offscreen_gl_context 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)", "serde_macros 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2631,7 +2625,7 @@ dependencies = [ "checksum euclid 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cce91503add3d0a1787b9bc8a9a59ee66ea5de1c3aaa6faf67b62997843160d3" "checksum expat-sys 2.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cef36cd1a8a02d28b91d97347c63247b9e4cb8a8e36df36f8201dc87a1c0859c" "checksum flate2 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "3eeb481e957304178d2e782f2da1257f1434dfecbae883bafb61ada2a9fea3bb" -"checksum fnv 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d3d4285d5aa1cf04504b7d8c2d1fdccf4586b56739499a04cc58663b2543cd30" +"checksum fnv 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8e8af7b5408ab0c4910cad114c8f9eb454bf75df7afe8964307eeafb68a13a5e" "checksum fontsan 0.3.2 (git+https://github.com/servo/fontsan)" = "<none>" "checksum freetype 0.1.0 (git+https://github.com/servo/rust-freetype)" = "<none>" "checksum fs2 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "bcd414e5a1a979b931bb92f41b7a54106d3f6d2e6c253e9ce943b7cd468251ef" @@ -2698,7 +2692,7 @@ dependencies = [ "checksum num_cpus 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "cee7e88156f3f9e19bdd598f8d6c9db7bf4078f99f8381f43a55b09648d1a6e3" "checksum objc 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7c9311aa5acd7bee14476afa0f0557f564e9d0d61218a8b833d9b1f871fa5fba" "checksum odds 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)" = "e2adb44c4e3ae8c998874fa73ec4fd885fc7a3389ca44994217b19b8a7b1f269" -"checksum offscreen_gl_context 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "15cf62642c737de52808433b64d8f6cf55b95dc6506d7aa71f136a82f50964d8" +"checksum offscreen_gl_context 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9145c0e9e9a303d5859ea38675c86a62f50b9eb4ed89b0f7bdec21920d7f006a" "checksum open 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c228597177bc4a6876e278f7c7948ac033bfcb4d163ccdd5a009557c8fe5fa1e" "checksum openssl 0.7.14 (registry+https://github.com/rust-lang/crates.io-index)" = "c4117b6244aac42ed0150a6019b4d953d28247c5dd6ae6f46ae469b5f2318733" "checksum openssl-sys 0.7.17 (registry+https://github.com/rust-lang/crates.io-index)" = "89c47ee94c352eea9ddaf8e364be7f978a3bb6d66d73176572484238dd5a5c3f" @@ -2720,7 +2714,6 @@ dependencies = [ "checksum quickersort 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e952ea7699262481636004bc4ab8afaccf2bc13f91b79d1aee6617bd8fc39651" "checksum rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "2791d88c6defac799c3f20d74f094ca33b9332612d9aef9078519c82e4fe04a5" "checksum rayon 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8e501871917624668fe601ad12a730450414f9b0b64722a898b040ce3ae1b0fa" -"checksum ref_filter_map 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2b5ceb840e4009da4841ed22a15eb49f64fdd00a2138945c5beacf506b2fb5ed" "checksum ref_slice 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "24c91f8f8903c37f0525112df98ef53b1985abca5702972e5e00854cd874baf2" "checksum regex 0.1.73 (registry+https://github.com/rust-lang/crates.io-index)" = "56b7ee9f764ecf412c6e2fff779bca4b22980517ae335a21aeaf4e32625a5df2" "checksum regex-syntax 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "31040aad7470ad9d8c46302dcffba337bb4289ca5da2e3cd6e37b64109a85199" @@ -2728,7 +2721,7 @@ dependencies = [ "checksum rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)" = "6159e4e6e559c81bd706afe9c8fd68f547d3e851ce12e76b1de7914bab61691b" "checksum rustc_version 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "c5f5376ea5e30ce23c03eb77cbe4962b988deead10910c372b226388b594c084" "checksum scoped_threadpool 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "3ef399c8893e8cb7aa9696e895427fab3a6bf265977bb96e126f24ddd2cda85a" -"checksum selectors 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cdd81c2af3eba55ccc7048696c517a0e594ae9a4045b8fb3cc6ad80cd6d65ca5" +"checksum selectors 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9eee17ca1807581fc4cf0bfddda311dc421f295a71314b9276ecc787cc63ed6f" "checksum semver 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)" = "d4f410fedcf71af0345d7607d246e7ad15faaadd49d240ee3b24e5dc21a820ac" "checksum serde 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bfdad8985ce7708e21ada7f3f188a0079de4f8e239155348a024e31f13cddf86" "checksum serde_codegen 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)" = "5ae9f0068a5f3266ac4d69eb0c1f9f048a2ac24a42af3db567bcd9a3ffe9d47e" diff --git a/ports/geckolib/Cargo.lock b/ports/geckolib/Cargo.lock index b764f7803c1..6f489176f8d 100644 --- a/ports/geckolib/Cargo.lock +++ b/ports/geckolib/Cargo.lock @@ -11,7 +11,7 @@ dependencies = [ "libc 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", - "selectors 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "selectors 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", "style 0.0.1", "style_traits 0.0.1", "url 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -151,7 +151,7 @@ dependencies = [ [[package]] name = "fnv" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -169,7 +169,7 @@ dependencies = [ "gecko_bindings 0.0.1", "heapsize 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)", - "selectors 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "selectors 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -318,12 +318,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "selectors" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "cssparser 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "matches 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache 0.2.25 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -360,7 +360,7 @@ dependencies = [ "deque 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "encoding 0.2.32 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "gecko_bindings 0.0.1", "gecko_string_cache 0.2.20", "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -374,7 +374,7 @@ dependencies = [ "quickersort 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)", - "selectors 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "selectors 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "style_traits 0.0.1", "time 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", @@ -517,7 +517,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a246d82be1c9d791c5dfde9a2bd045fc3cbba3fa2b11ad558f27d01712f00569" "checksum env_logger 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "82dcb9ceed3868a03b335657b85a159736c961900f7e7747d3b0b97b9ccb5ccb" "checksum euclid 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cce91503add3d0a1787b9bc8a9a59ee66ea5de1c3aaa6faf67b62997843160d3" -"checksum fnv 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d3d4285d5aa1cf04504b7d8c2d1fdccf4586b56739499a04cc58663b2543cd30" +"checksum fnv 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8e8af7b5408ab0c4910cad114c8f9eb454bf75df7afe8964307eeafb68a13a5e" "checksum getopts 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "d9047cfbd08a437050b363d35ef160452c5fe8ea5187ae0a624708c91581d685" "checksum heapsize 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "abb306abb8d398e053cfb1b3e7b72c2f580be048b85745c52652954f8ad1439c" "checksum idna 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1053236e00ce4f668aeca4a769a09b3bf5a682d802abd6f3cb39374f6b162c11" @@ -538,7 +538,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum regex 0.1.73 (registry+https://github.com/rust-lang/crates.io-index)" = "56b7ee9f764ecf412c6e2fff779bca4b22980517ae335a21aeaf4e32625a5df2" "checksum regex-syntax 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "31040aad7470ad9d8c46302dcffba337bb4289ca5da2e3cd6e37b64109a85199" "checksum rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)" = "6159e4e6e559c81bd706afe9c8fd68f547d3e851ce12e76b1de7914bab61691b" -"checksum selectors 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cdd81c2af3eba55ccc7048696c517a0e594ae9a4045b8fb3cc6ad80cd6d65ca5" +"checksum selectors 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9eee17ca1807581fc4cf0bfddda311dc421f295a71314b9276ecc787cc63ed6f" "checksum serde 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bfdad8985ce7708e21ada7f3f188a0079de4f8e239155348a024e31f13cddf86" "checksum smallvec 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "fcc8d19212aacecf95e4a7a2179b26f7aeb9732a915cf01f05b0d3e044865410" "checksum string_cache 0.2.25 (registry+https://github.com/rust-lang/crates.io-index)" = "32e79c75e2fc7bbe0cd0bafa9eeacef16a09e269e8518382a7283904c105c20e" diff --git a/ports/geckolib/Cargo.toml b/ports/geckolib/Cargo.toml index 47b65234ff2..bcf38096e85 100644 --- a/ports/geckolib/Cargo.toml +++ b/ports/geckolib/Cargo.toml @@ -19,7 +19,7 @@ lazy_static = "0.2" libc = "0.2" log = {version = "0.3.5", features = ["release_max_level_info"]} num_cpus = "0.2.2" -selectors = "0.12" +selectors = "0.13" style = {path = "../../components/style", features = ["gecko"]} style_traits = {path = "../../components/style_traits"} url = "1.2" diff --git a/ports/geckolib/binding_tools/regen.py b/ports/geckolib/binding_tools/regen.py index 98965e6facf..770c756dedc 100755 --- a/ports/geckolib/binding_tools/regen.py +++ b/ports/geckolib/binding_tools/regen.py @@ -145,7 +145,7 @@ COMPILATION_TARGETS = { "nsChangeHint", "SheetParsingMode", "nsMainThreadPtrHandle", "nsMainThreadPtrHolder", "nscolor", "nsFont", "FontFamilyList", "FontFamilyType", "nsIAtom", "nsStyleContext", "StyleClipPath", - "StyleBasicShapeType", "StyleBasicShape" + "StyleBasicShapeType", "StyleBasicShape", "nsCSSShadowArray", ], "void_types": [ "nsINode", "nsIDocument", "nsIPrincipal", "nsIURI", @@ -321,7 +321,7 @@ def build(objdir, target_name, debug, debugger, kind_name=None, flags.append("{}Strong".format(ty)) flags.append("--raw-line") flags.append("pub type {0}Strong = ::sugar::refptr::Strong<{0}>;".format(ty)) - flags.append("-blacklist-type") + flags.append("--blacklist-type") flags.append("{}Borrowed".format(ty)) flags.append("--raw-line") flags.append("pub type {0}Borrowed<'a> = ::sugar::refptr::Borrowed<'a, {0}>;".format(ty)) diff --git a/ports/geckolib/binding_tools/regen_atoms.py b/ports/geckolib/binding_tools/regen_atoms.py index 23b55b009da..46398275775 100755 --- a/ports/geckolib/binding_tools/regen_atoms.py +++ b/ports/geckolib/binding_tools/regen_atoms.py @@ -17,7 +17,9 @@ def msvc64_symbolify(source, ident): def msvc32_symbolify(source, ident): - return "?" + ident + "@" + source.CLASS + "@@2PAV" + source.TYPE + "@@A" + # Prepend "\x01" to avoid LLVM prefixing the mangled name with "_". + # See https://github.com/rust-lang/rust/issues/36097 + return "\\x01?" + ident + "@" + source.CLASS + "@@2PAV" + source.TYPE + "@@A" class GkAtomSource: diff --git a/ports/geckolib/gecko_bindings/bindings.rs b/ports/geckolib/gecko_bindings/bindings.rs index 6ee617fc585..4a45f41d046 100644 --- a/ports/geckolib/gecko_bindings/bindings.rs +++ b/ports/geckolib/gecko_bindings/bindings.rs @@ -157,6 +157,7 @@ impl HeapSizeOf for nsStyleContext { fn heap_size_of_children(&self) -> usize { use structs::StyleClipPath; use structs::StyleBasicShapeType; use structs::StyleBasicShape; +use structs::nsCSSShadowArray; pub type RawGeckoNode = nsINode; pub enum Element { } @@ -345,6 +346,11 @@ extern "C" { max_len: u32); pub fn Gecko_AddRefCalcArbitraryThread(aPtr: *mut Calc); pub fn Gecko_ReleaseCalcArbitraryThread(aPtr: *mut Calc); + pub fn Gecko_NewCSSShadowArray(len: u32) -> *mut nsCSSShadowArray; + pub fn Gecko_AddRefCSSShadowArrayArbitraryThread(aPtr: + *mut nsCSSShadowArray); + pub fn Gecko_ReleaseCSSShadowArrayArbitraryThread(aPtr: + *mut nsCSSShadowArray); pub fn Gecko_Construct_nsStyleFont(ptr: *mut nsStyleFont); pub fn Gecko_CopyConstruct_nsStyleFont(ptr: *mut nsStyleFont, other: *const nsStyleFont); diff --git a/ports/geckolib/gecko_bindings/structs_debug.rs b/ports/geckolib/gecko_bindings/structs_debug.rs index 7edbb0a23ac..6a27a5acc60 100644 --- a/ports/geckolib/gecko_bindings/structs_debug.rs +++ b/ports/geckolib/gecko_bindings/structs_debug.rs @@ -5917,14 +5917,13 @@ fn bindgen_test_layout_nsCSSShadowItem() { #[repr(C)] #[derive(Debug)] pub struct nsCSSShadowArray { - pub mRefCnt: nsAutoRefCnt, - pub _mOwningThread: nsAutoOwningThread, + pub mRefCnt: ThreadSafeAutoRefCnt, pub mLength: u32, pub mArray: [nsCSSShadowItem; 1usize], } #[test] fn bindgen_test_layout_nsCSSShadowArray() { - assert_eq!(::std::mem::size_of::<nsCSSShadowArray>() , 48usize); + assert_eq!(::std::mem::size_of::<nsCSSShadowArray>() , 40usize); assert_eq!(::std::mem::align_of::<nsCSSShadowArray>() , 8usize); } #[repr(C)] diff --git a/ports/geckolib/gecko_bindings/structs_release.rs b/ports/geckolib/gecko_bindings/structs_release.rs index 455fbdb2cf3..8a493c90dbd 100644 --- a/ports/geckolib/gecko_bindings/structs_release.rs +++ b/ports/geckolib/gecko_bindings/structs_release.rs @@ -5895,14 +5895,13 @@ fn bindgen_test_layout_nsCSSShadowItem() { #[repr(C)] #[derive(Debug)] pub struct nsCSSShadowArray { - pub mRefCnt: nsAutoRefCnt, - pub _mOwningThread: nsAutoOwningThread, + pub mRefCnt: ThreadSafeAutoRefCnt, pub mLength: u32, pub mArray: [nsCSSShadowItem; 1usize], } #[test] fn bindgen_test_layout_nsCSSShadowArray() { - assert_eq!(::std::mem::size_of::<nsCSSShadowArray>() , 48usize); + assert_eq!(::std::mem::size_of::<nsCSSShadowArray>() , 40usize); assert_eq!(::std::mem::align_of::<nsCSSShadowArray>() , 8usize); } #[repr(C)] diff --git a/ports/geckolib/gecko_bindings/sugar/mod.rs b/ports/geckolib/gecko_bindings/sugar/mod.rs index 4dfa016d3a9..a4c6b1b98c2 100644 --- a/ports/geckolib/gecko_bindings/sugar/mod.rs +++ b/ports/geckolib/gecko_bindings/sugar/mod.rs @@ -2,6 +2,7 @@ * 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/. */ +mod ns_css_shadow_array; mod ns_style_auto_array; pub mod ns_style_coord; mod ns_t_array; diff --git a/ports/geckolib/gecko_bindings/sugar/ns_css_shadow_array.rs b/ports/geckolib/gecko_bindings/sugar/ns_css_shadow_array.rs new file mode 100644 index 00000000000..6c0a0e6dc03 --- /dev/null +++ b/ports/geckolib/gecko_bindings/sugar/ns_css_shadow_array.rs @@ -0,0 +1,65 @@ +/* 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/. */ + +use bindings::Gecko_AddRefCSSShadowArrayArbitraryThread; +use bindings::Gecko_NewCSSShadowArray; +use bindings::Gecko_ReleaseCSSShadowArrayArbitraryThread; +use std::ops::{Deref, DerefMut}; +use std::{ptr, slice}; +use structs::{nsCSSShadowArray, nsCSSShadowItem, RefPtr}; + +impl RefPtr<nsCSSShadowArray> { + pub fn replace_with_new(&mut self, len: u32) { + unsafe { + if !self.mRawPtr.is_null() { + Gecko_ReleaseCSSShadowArrayArbitraryThread(self.mRawPtr); + } + + self.mRawPtr = if len == 0 { + ptr::null_mut() + } else { + Gecko_NewCSSShadowArray(len) + } + } + } + pub fn copy_from(&mut self, other: &Self) { + unsafe { + if !self.mRawPtr.is_null() { + Gecko_ReleaseCSSShadowArrayArbitraryThread(self.mRawPtr); + } + if !other.mRawPtr.is_null() { + Gecko_AddRefCSSShadowArrayArbitraryThread(other.mRawPtr); + } + + self.mRawPtr = other.mRawPtr; + } + } +} + +impl Deref for RefPtr<nsCSSShadowArray> { + type Target = [nsCSSShadowItem]; + fn deref(&self) -> &[nsCSSShadowItem] { + if self.mRawPtr.is_null() { + &[] + } else { + unsafe { + slice::from_raw_parts((*self.mRawPtr).mArray.as_ptr(), + (*self.mRawPtr).mLength as usize) + } + } + } +} + +impl DerefMut for RefPtr<nsCSSShadowArray> { + fn deref_mut(&mut self) -> &mut [nsCSSShadowItem] { + if self.mRawPtr.is_null() { + &mut [] + } else { + unsafe { + slice::from_raw_parts_mut((*self.mRawPtr).mArray.as_mut_ptr(), + (*self.mRawPtr).mLength as usize) + } + } + } +} diff --git a/ports/geckolib/glue.rs b/ports/geckolib/glue.rs index ae682ac72e0..0874b0a44b9 100644 --- a/ports/geckolib/glue.rs +++ b/ports/geckolib/glue.rs @@ -356,7 +356,7 @@ pub extern "C" fn Servo_StyleSet_Drop(data: *mut RawServoStyleSet) -> () { } pub struct GeckoDeclarationBlock { - pub declarations: Option<PropertyDeclarationBlock>, + pub declarations: Option<Arc<PropertyDeclarationBlock>>, // XXX The following two fields are made atomic to work around the // ownership system so that they can be changed inside a shared // instance. It wouldn't provide safety as Rust usually promises, @@ -377,7 +377,7 @@ pub extern "C" fn Servo_ParseStyleAttribute(bytes: *const u8, length: u32, -> ServoDeclarationBlockStrong { let value = unsafe { from_utf8_unchecked(slice::from_raw_parts(bytes, length as usize)) }; GeckoDeclarationBlock::from_arc(Arc::new(GeckoDeclarationBlock { - declarations: GeckoElement::parse_style_attribute(value), + declarations: GeckoElement::parse_style_attribute(value).map(Arc::new), cache: AtomicPtr::new(cache), immutable: AtomicBool::new(false), })) diff --git a/ports/geckolib/string_cache/Cargo.toml b/ports/geckolib/string_cache/Cargo.toml index 01cf743520e..4ababf8adcc 100644 --- a/ports/geckolib/string_cache/Cargo.toml +++ b/ports/geckolib/string_cache/Cargo.toml @@ -14,5 +14,5 @@ cfg-if = "0.1.0" gecko_bindings = {version = "0.0.1", path = "../gecko_bindings"} heapsize = "0.3.5" libc = "0.2" -selectors = "0.12" +selectors = "0.13" serde = "0.8" diff --git a/ports/geckolib/string_cache/atom_macro.rs b/ports/geckolib/string_cache/atom_macro.rs index e7ccfca12ad..96860da1882 100644 --- a/ports/geckolib/string_cache/atom_macro.rs +++ b/ports/geckolib/string_cache/atom_macro.rs @@ -9850,4917 +9850,4917 @@ pub enum nsICSSAnonBoxPseudo {} } } else { extern { - #[link_name = "?_empty@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_empty@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__empty: *mut nsIAtom; - #[link_name = "?moz@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?moz@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_moz: *mut nsIAtom; - #[link_name = "?mozframetype@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mozframetype@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mozframetype: *mut nsIAtom; - #[link_name = "?_moz_abspos@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_moz_abspos@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__moz_abspos: *mut nsIAtom; - #[link_name = "?_moz_activated@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_moz_activated@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__moz_activated: *mut nsIAtom; - #[link_name = "?_moz_resizing@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_moz_resizing@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__moz_resizing: *mut nsIAtom; - #[link_name = "?mozallowfullscreen@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mozallowfullscreen@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mozallowfullscreen: *mut nsIAtom; - #[link_name = "?moztype@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?moztype@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_moztype: *mut nsIAtom; - #[link_name = "?mozdirty@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mozdirty@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mozdirty: *mut nsIAtom; - #[link_name = "?mozdisallowselectionprint@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mozdisallowselectionprint@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mozdisallowselectionprint: *mut nsIAtom; - #[link_name = "?mozdonotsend@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mozdonotsend@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mozdonotsend: *mut nsIAtom; - #[link_name = "?mozeditorbogusnode@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mozeditorbogusnode@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mozeditorbogusnode: *mut nsIAtom; - #[link_name = "?mozgeneratedcontentbefore@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mozgeneratedcontentbefore@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mozgeneratedcontentbefore: *mut nsIAtom; - #[link_name = "?mozgeneratedcontentafter@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mozgeneratedcontentafter@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mozgeneratedcontentafter: *mut nsIAtom; - #[link_name = "?mozgeneratedcontentimage@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mozgeneratedcontentimage@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mozgeneratedcontentimage: *mut nsIAtom; - #[link_name = "?mozquote@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mozquote@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mozquote: *mut nsIAtom; - #[link_name = "?mozsignature@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mozsignature@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mozsignature: *mut nsIAtom; - #[link_name = "?_moz_is_glyph@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_moz_is_glyph@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__moz_is_glyph: *mut nsIAtom; - #[link_name = "?_moz_original_size@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_moz_original_size@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__moz_original_size: *mut nsIAtom; - #[link_name = "?_moz_target@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_moz_target@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__moz_target: *mut nsIAtom; - #[link_name = "?menuactive@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?menuactive@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_menuactive: *mut nsIAtom; - #[link_name = "?_poundDefault@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_poundDefault@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__poundDefault: *mut nsIAtom; - #[link_name = "?_asterisk@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_asterisk@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__asterisk: *mut nsIAtom; - #[link_name = "?a@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?a@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_a: *mut nsIAtom; - #[link_name = "?abbr@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?abbr@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_abbr: *mut nsIAtom; - #[link_name = "?abort@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?abort@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_abort: *mut nsIAtom; - #[link_name = "?above@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?above@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_above: *mut nsIAtom; - #[link_name = "?acceltext@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?acceltext@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_acceltext: *mut nsIAtom; - #[link_name = "?accept@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?accept@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_accept: *mut nsIAtom; - #[link_name = "?acceptcharset@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?acceptcharset@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_acceptcharset: *mut nsIAtom; - #[link_name = "?accesskey@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?accesskey@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_accesskey: *mut nsIAtom; - #[link_name = "?acronym@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?acronym@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_acronym: *mut nsIAtom; - #[link_name = "?action@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?action@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_action: *mut nsIAtom; - #[link_name = "?active@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?active@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_active: *mut nsIAtom; - #[link_name = "?activetitlebarcolor@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?activetitlebarcolor@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_activetitlebarcolor: *mut nsIAtom; - #[link_name = "?activateontab@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?activateontab@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_activateontab: *mut nsIAtom; - #[link_name = "?actuate@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?actuate@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_actuate: *mut nsIAtom; - #[link_name = "?address@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?address@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_address: *mut nsIAtom; - #[link_name = "?after@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?after@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_after: *mut nsIAtom; - #[link_name = "?after_end@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?after_end@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_after_end: *mut nsIAtom; - #[link_name = "?after_start@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?after_start@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_after_start: *mut nsIAtom; - #[link_name = "?align@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?align@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_align: *mut nsIAtom; - #[link_name = "?alink@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?alink@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_alink: *mut nsIAtom; - #[link_name = "?all@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?all@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_all: *mut nsIAtom; - #[link_name = "?allowdirs@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?allowdirs@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_allowdirs: *mut nsIAtom; - #[link_name = "?allowevents@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?allowevents@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_allowevents: *mut nsIAtom; - #[link_name = "?allownegativeassertions@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?allownegativeassertions@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_allownegativeassertions: *mut nsIAtom; - #[link_name = "?allowforms@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?allowforms@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_allowforms: *mut nsIAtom; - #[link_name = "?allowfullscreen@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?allowfullscreen@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_allowfullscreen: *mut nsIAtom; - #[link_name = "?allowmodals@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?allowmodals@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_allowmodals: *mut nsIAtom; - #[link_name = "?alloworientationlock@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?alloworientationlock@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_alloworientationlock: *mut nsIAtom; - #[link_name = "?allowpointerlock@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?allowpointerlock@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_allowpointerlock: *mut nsIAtom; - #[link_name = "?allowpopupstoescapesandbox@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?allowpopupstoescapesandbox@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_allowpopupstoescapesandbox: *mut nsIAtom; - #[link_name = "?allowpopups@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?allowpopups@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_allowpopups: *mut nsIAtom; - #[link_name = "?allowpresentation@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?allowpresentation@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_allowpresentation: *mut nsIAtom; - #[link_name = "?allowsameorigin@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?allowsameorigin@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_allowsameorigin: *mut nsIAtom; - #[link_name = "?allowscripts@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?allowscripts@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_allowscripts: *mut nsIAtom; - #[link_name = "?allowtopnavigation@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?allowtopnavigation@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_allowtopnavigation: *mut nsIAtom; - #[link_name = "?allowuntrusted@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?allowuntrusted@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_allowuntrusted: *mut nsIAtom; - #[link_name = "?alt@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?alt@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_alt: *mut nsIAtom; - #[link_name = "?alternate@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?alternate@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_alternate: *mut nsIAtom; - #[link_name = "?always@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?always@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_always: *mut nsIAtom; - #[link_name = "?ancestor@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ancestor@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ancestor: *mut nsIAtom; - #[link_name = "?ancestorOrSelf@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ancestorOrSelf@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ancestorOrSelf: *mut nsIAtom; - #[link_name = "?anchor@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?anchor@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_anchor: *mut nsIAtom; - #[link_name = "?_and@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_and@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__and: *mut nsIAtom; - #[link_name = "?animations@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?animations@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_animations: *mut nsIAtom; - #[link_name = "?anonid@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?anonid@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_anonid: *mut nsIAtom; - #[link_name = "?anonlocation@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?anonlocation@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_anonlocation: *mut nsIAtom; - #[link_name = "?any@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?any@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_any: *mut nsIAtom; - #[link_name = "?mozapp@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mozapp@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mozapp: *mut nsIAtom; - #[link_name = "?mozwidget@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mozwidget@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mozwidget: *mut nsIAtom; - #[link_name = "?applet@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?applet@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_applet: *mut nsIAtom; - #[link_name = "?applyImports@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?applyImports@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_applyImports: *mut nsIAtom; - #[link_name = "?applyTemplates@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?applyTemplates@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_applyTemplates: *mut nsIAtom; - #[link_name = "?mozapptype@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mozapptype@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mozapptype: *mut nsIAtom; - #[link_name = "?archive@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?archive@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_archive: *mut nsIAtom; - #[link_name = "?area@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?area@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_area: *mut nsIAtom; - #[link_name = "?arrow@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?arrow@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_arrow: *mut nsIAtom; - #[link_name = "?article@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?article@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_article: *mut nsIAtom; - #[link_name = "?ascending@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ascending@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ascending: *mut nsIAtom; - #[link_name = "?aside@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aside@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aside: *mut nsIAtom; - #[link_name = "?aspectRatio@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aspectRatio@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aspectRatio: *mut nsIAtom; - #[link_name = "?assign@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?assign@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_assign: *mut nsIAtom; - #[link_name = "?async@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?async@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_async: *mut nsIAtom; - #[link_name = "?attribute@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?attribute@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_attribute: *mut nsIAtom; - #[link_name = "?attributes@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?attributes@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_attributes: *mut nsIAtom; - #[link_name = "?attributeSet@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?attributeSet@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_attributeSet: *mut nsIAtom; - #[link_name = "?aural@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aural@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aural: *mut nsIAtom; - #[link_name = "?_auto@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_auto@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__auto: *mut nsIAtom; - #[link_name = "?autocheck@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?autocheck@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_autocheck: *mut nsIAtom; - #[link_name = "?autocomplete@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?autocomplete@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_autocomplete: *mut nsIAtom; - #[link_name = "?autofocus@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?autofocus@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_autofocus: *mut nsIAtom; - #[link_name = "?autoplay@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?autoplay@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_autoplay: *mut nsIAtom; - #[link_name = "?autorepeatbutton@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?autorepeatbutton@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_autorepeatbutton: *mut nsIAtom; - #[link_name = "?axis@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?axis@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_axis: *mut nsIAtom; - #[link_name = "?b@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?b@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_b: *mut nsIAtom; - #[link_name = "?backdropFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?backdropFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_backdropFrame: *mut nsIAtom; - #[link_name = "?background@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?background@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_background: *mut nsIAtom; - #[link_name = "?base@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?base@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_base: *mut nsIAtom; - #[link_name = "?basefont@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?basefont@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_basefont: *mut nsIAtom; - #[link_name = "?baseline@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?baseline@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_baseline: *mut nsIAtom; - #[link_name = "?bdi@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?bdi@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_bdi: *mut nsIAtom; - #[link_name = "?bdo@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?bdo@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_bdo: *mut nsIAtom; - #[link_name = "?before@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?before@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_before: *mut nsIAtom; - #[link_name = "?before_end@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?before_end@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_before_end: *mut nsIAtom; - #[link_name = "?before_start@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?before_start@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_before_start: *mut nsIAtom; - #[link_name = "?below@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?below@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_below: *mut nsIAtom; - #[link_name = "?bgcolor@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?bgcolor@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_bgcolor: *mut nsIAtom; - #[link_name = "?bgsound@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?bgsound@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_bgsound: *mut nsIAtom; - #[link_name = "?big@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?big@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_big: *mut nsIAtom; - #[link_name = "?binding@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?binding@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_binding: *mut nsIAtom; - #[link_name = "?bindings@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?bindings@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_bindings: *mut nsIAtom; - #[link_name = "?bindToUntrustedContent@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?bindToUntrustedContent@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_bindToUntrustedContent: *mut nsIAtom; - #[link_name = "?blankrow@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?blankrow@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_blankrow: *mut nsIAtom; - #[link_name = "?block@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?block@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_block: *mut nsIAtom; - #[link_name = "?blockquote@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?blockquote@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_blockquote: *mut nsIAtom; - #[link_name = "?blur@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?blur@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_blur: *mut nsIAtom; - #[link_name = "?body@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?body@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_body: *mut nsIAtom; - #[link_name = "?boolean@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?boolean@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_boolean: *mut nsIAtom; - #[link_name = "?border@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?border@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_border: *mut nsIAtom; - #[link_name = "?bordercolor@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?bordercolor@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_bordercolor: *mut nsIAtom; - #[link_name = "?both@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?both@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_both: *mut nsIAtom; - #[link_name = "?bottom@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?bottom@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_bottom: *mut nsIAtom; - #[link_name = "?bottomend@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?bottomend@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_bottomend: *mut nsIAtom; - #[link_name = "?bottomstart@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?bottomstart@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_bottomstart: *mut nsIAtom; - #[link_name = "?bottomleft@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?bottomleft@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_bottomleft: *mut nsIAtom; - #[link_name = "?bottommargin@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?bottommargin@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_bottommargin: *mut nsIAtom; - #[link_name = "?bottompadding@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?bottompadding@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_bottompadding: *mut nsIAtom; - #[link_name = "?bottomright@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?bottomright@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_bottomright: *mut nsIAtom; - #[link_name = "?box@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?box@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_box: *mut nsIAtom; - #[link_name = "?br@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?br@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_br: *mut nsIAtom; - #[link_name = "?braille@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?braille@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_braille: *mut nsIAtom; - #[link_name = "?broadcast@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?broadcast@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_broadcast: *mut nsIAtom; - #[link_name = "?broadcaster@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?broadcaster@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_broadcaster: *mut nsIAtom; - #[link_name = "?broadcasterset@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?broadcasterset@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_broadcasterset: *mut nsIAtom; - #[link_name = "?browser@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?browser@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_browser: *mut nsIAtom; - #[link_name = "?mozbrowser@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mozbrowser@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mozbrowser: *mut nsIAtom; - #[link_name = "?bulletinboard@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?bulletinboard@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_bulletinboard: *mut nsIAtom; - #[link_name = "?button@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?button@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_button: *mut nsIAtom; - #[link_name = "?brighttitlebarforeground@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?brighttitlebarforeground@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_brighttitlebarforeground: *mut nsIAtom; - #[link_name = "?callTemplate@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?callTemplate@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_callTemplate: *mut nsIAtom; - #[link_name = "?cancel@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?cancel@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_cancel: *mut nsIAtom; - #[link_name = "?canvas@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?canvas@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_canvas: *mut nsIAtom; - #[link_name = "?caption@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?caption@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_caption: *mut nsIAtom; - #[link_name = "?capture@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?capture@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_capture: *mut nsIAtom; - #[link_name = "?caseOrder@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?caseOrder@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_caseOrder: *mut nsIAtom; - #[link_name = "?cdataSectionElements@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?cdataSectionElements@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_cdataSectionElements: *mut nsIAtom; - #[link_name = "?ceiling@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ceiling@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ceiling: *mut nsIAtom; - #[link_name = "?cell@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?cell@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_cell: *mut nsIAtom; - #[link_name = "?cellpadding@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?cellpadding@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_cellpadding: *mut nsIAtom; - #[link_name = "?cellspacing@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?cellspacing@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_cellspacing: *mut nsIAtom; - #[link_name = "?center@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?center@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_center: *mut nsIAtom; - #[link_name = "?ch@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ch@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ch: *mut nsIAtom; - #[link_name = "?change@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?change@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_change: *mut nsIAtom; - #[link_name = "?_char@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_char@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__char: *mut nsIAtom; - #[link_name = "?characterData@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?characterData@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_characterData: *mut nsIAtom; - #[link_name = "?charcode@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?charcode@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_charcode: *mut nsIAtom; - #[link_name = "?charoff@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?charoff@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_charoff: *mut nsIAtom; - #[link_name = "?charset@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?charset@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_charset: *mut nsIAtom; - #[link_name = "?checkbox@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?checkbox@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_checkbox: *mut nsIAtom; - #[link_name = "?checked@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?checked@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_checked: *mut nsIAtom; - #[link_name = "?child@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?child@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_child: *mut nsIAtom; - #[link_name = "?children@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?children@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_children: *mut nsIAtom; - #[link_name = "?childList@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?childList@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_childList: *mut nsIAtom; - #[link_name = "?choose@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?choose@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_choose: *mut nsIAtom; - #[link_name = "?chromemargin@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?chromemargin@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_chromemargin: *mut nsIAtom; - #[link_name = "?chromeOnlyContent@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?chromeOnlyContent@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_chromeOnlyContent: *mut nsIAtom; - #[link_name = "?exposeToUntrustedContent@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?exposeToUntrustedContent@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_exposeToUntrustedContent: *mut nsIAtom; - #[link_name = "?circ@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?circ@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_circ: *mut nsIAtom; - #[link_name = "?circle@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?circle@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_circle: *mut nsIAtom; - #[link_name = "?cite@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?cite@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_cite: *mut nsIAtom; - #[link_name = "?_class@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_class@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__class: *mut nsIAtom; - #[link_name = "?classid@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?classid@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_classid: *mut nsIAtom; - #[link_name = "?clear@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?clear@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_clear: *mut nsIAtom; - #[link_name = "?click@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?click@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_click: *mut nsIAtom; - #[link_name = "?clickcount@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?clickcount@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_clickcount: *mut nsIAtom; - #[link_name = "?clickthrough@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?clickthrough@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_clickthrough: *mut nsIAtom; - #[link_name = "?movetoclick@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?movetoclick@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_movetoclick: *mut nsIAtom; - #[link_name = "?clip@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?clip@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_clip: *mut nsIAtom; - #[link_name = "?close@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?close@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_close: *mut nsIAtom; - #[link_name = "?closed@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?closed@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_closed: *mut nsIAtom; - #[link_name = "?closemenu@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?closemenu@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_closemenu: *mut nsIAtom; - #[link_name = "?coalesceduplicatearcs@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?coalesceduplicatearcs@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_coalesceduplicatearcs: *mut nsIAtom; - #[link_name = "?code@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?code@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_code: *mut nsIAtom; - #[link_name = "?codebase@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?codebase@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_codebase: *mut nsIAtom; - #[link_name = "?codetype@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?codetype@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_codetype: *mut nsIAtom; - #[link_name = "?col@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?col@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_col: *mut nsIAtom; - #[link_name = "?colgroup@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?colgroup@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_colgroup: *mut nsIAtom; - #[link_name = "?collapse@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?collapse@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_collapse: *mut nsIAtom; - #[link_name = "?collapsed@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?collapsed@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_collapsed: *mut nsIAtom; - #[link_name = "?color@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?color@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_color: *mut nsIAtom; - #[link_name = "?colorIndex@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?colorIndex@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_colorIndex: *mut nsIAtom; - #[link_name = "?cols@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?cols@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_cols: *mut nsIAtom; - #[link_name = "?colspan@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?colspan@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_colspan: *mut nsIAtom; - #[link_name = "?column@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?column@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_column: *mut nsIAtom; - #[link_name = "?columns@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?columns@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_columns: *mut nsIAtom; - #[link_name = "?combobox@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?combobox@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_combobox: *mut nsIAtom; - #[link_name = "?command@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?command@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_command: *mut nsIAtom; - #[link_name = "?commands@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?commands@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_commands: *mut nsIAtom; - #[link_name = "?commandset@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?commandset@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_commandset: *mut nsIAtom; - #[link_name = "?commandupdate@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?commandupdate@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_commandupdate: *mut nsIAtom; - #[link_name = "?commandupdater@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?commandupdater@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_commandupdater: *mut nsIAtom; - #[link_name = "?comment@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?comment@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_comment: *mut nsIAtom; - #[link_name = "?compact@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?compact@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_compact: *mut nsIAtom; - #[link_name = "?concat@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?concat@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_concat: *mut nsIAtom; - #[link_name = "?conditions@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?conditions@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_conditions: *mut nsIAtom; - #[link_name = "?constructor@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?constructor@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_constructor: *mut nsIAtom; - #[link_name = "?consumeoutsideclicks@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?consumeoutsideclicks@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_consumeoutsideclicks: *mut nsIAtom; - #[link_name = "?container@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?container@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_container: *mut nsIAtom; - #[link_name = "?containment@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?containment@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_containment: *mut nsIAtom; - #[link_name = "?contains@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?contains@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_contains: *mut nsIAtom; - #[link_name = "?content@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?content@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_content: *mut nsIAtom; - #[link_name = "?contenteditable@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?contenteditable@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_contenteditable: *mut nsIAtom; - #[link_name = "?headerContentDisposition@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?headerContentDisposition@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_headerContentDisposition: *mut nsIAtom; - #[link_name = "?headerContentLanguage@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?headerContentLanguage@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_headerContentLanguage: *mut nsIAtom; - #[link_name = "?contentLocation@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?contentLocation@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_contentLocation: *mut nsIAtom; - #[link_name = "?headerContentScriptType@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?headerContentScriptType@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_headerContentScriptType: *mut nsIAtom; - #[link_name = "?headerContentStyleType@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?headerContentStyleType@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_headerContentStyleType: *mut nsIAtom; - #[link_name = "?headerContentType@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?headerContentType@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_headerContentType: *mut nsIAtom; - #[link_name = "?consumeanchor@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?consumeanchor@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_consumeanchor: *mut nsIAtom; - #[link_name = "?context@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?context@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_context: *mut nsIAtom; - #[link_name = "?contextmenu@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?contextmenu@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_contextmenu: *mut nsIAtom; - #[link_name = "?control@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?control@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_control: *mut nsIAtom; - #[link_name = "?controls@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?controls@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_controls: *mut nsIAtom; - #[link_name = "?coords@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?coords@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_coords: *mut nsIAtom; - #[link_name = "?copy@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?copy@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_copy: *mut nsIAtom; - #[link_name = "?copyOf@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?copyOf@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_copyOf: *mut nsIAtom; - #[link_name = "?count@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?count@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_count: *mut nsIAtom; - #[link_name = "?crop@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?crop@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_crop: *mut nsIAtom; - #[link_name = "?crossorigin@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?crossorigin@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_crossorigin: *mut nsIAtom; - #[link_name = "?curpos@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?curpos@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_curpos: *mut nsIAtom; - #[link_name = "?current@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?current@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_current: *mut nsIAtom; - #[link_name = "?cycler@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?cycler@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_cycler: *mut nsIAtom; - #[link_name = "?data@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?data@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_data: *mut nsIAtom; - #[link_name = "?datalist@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?datalist@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_datalist: *mut nsIAtom; - #[link_name = "?dataType@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?dataType@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_dataType: *mut nsIAtom; - #[link_name = "?dateTime@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?dateTime@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_dateTime: *mut nsIAtom; - #[link_name = "?datasources@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?datasources@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_datasources: *mut nsIAtom; - #[link_name = "?datetime@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?datetime@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_datetime: *mut nsIAtom; - #[link_name = "?dblclick@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?dblclick@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_dblclick: *mut nsIAtom; - #[link_name = "?dd@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?dd@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_dd: *mut nsIAtom; - #[link_name = "?debug@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?debug@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_debug: *mut nsIAtom; - #[link_name = "?decimalFormat@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?decimalFormat@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_decimalFormat: *mut nsIAtom; - #[link_name = "?decimalSeparator@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?decimalSeparator@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_decimalSeparator: *mut nsIAtom; - #[link_name = "?deck@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?deck@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_deck: *mut nsIAtom; - #[link_name = "?declare@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?declare@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_declare: *mut nsIAtom; - #[link_name = "?decoderDoctor@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?decoderDoctor@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_decoderDoctor: *mut nsIAtom; - #[link_name = "?decrement@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?decrement@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_decrement: *mut nsIAtom; - #[link_name = "?_default@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_default@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__default: *mut nsIAtom; - #[link_name = "?headerDefaultStyle@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?headerDefaultStyle@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_headerDefaultStyle: *mut nsIAtom; - #[link_name = "?defaultAction@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?defaultAction@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_defaultAction: *mut nsIAtom; - #[link_name = "?defaultchecked@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?defaultchecked@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_defaultchecked: *mut nsIAtom; - #[link_name = "?defaultLabel@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?defaultLabel@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_defaultLabel: *mut nsIAtom; - #[link_name = "?defaultselected@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?defaultselected@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_defaultselected: *mut nsIAtom; - #[link_name = "?defaultvalue@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?defaultvalue@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_defaultvalue: *mut nsIAtom; - #[link_name = "?defaultplaybackrate@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?defaultplaybackrate@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_defaultplaybackrate: *mut nsIAtom; - #[link_name = "?defer@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?defer@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_defer: *mut nsIAtom; - #[link_name = "?del@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?del@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_del: *mut nsIAtom; - #[link_name = "?descendant@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?descendant@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_descendant: *mut nsIAtom; - #[link_name = "?descendantOrSelf@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?descendantOrSelf@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_descendantOrSelf: *mut nsIAtom; - #[link_name = "?descending@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?descending@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_descending: *mut nsIAtom; - #[link_name = "?description@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?description@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_description: *mut nsIAtom; - #[link_name = "?destructor@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?destructor@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_destructor: *mut nsIAtom; - #[link_name = "?details@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?details@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_details: *mut nsIAtom; - #[link_name = "?deviceAspectRatio@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?deviceAspectRatio@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_deviceAspectRatio: *mut nsIAtom; - #[link_name = "?deviceHeight@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?deviceHeight@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_deviceHeight: *mut nsIAtom; - #[link_name = "?devicePixelRatio@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?devicePixelRatio@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_devicePixelRatio: *mut nsIAtom; - #[link_name = "?deviceWidth@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?deviceWidth@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_deviceWidth: *mut nsIAtom; - #[link_name = "?dfn@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?dfn@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_dfn: *mut nsIAtom; - #[link_name = "?dialog@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?dialog@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_dialog: *mut nsIAtom; - #[link_name = "?difference@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?difference@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_difference: *mut nsIAtom; - #[link_name = "?digit@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?digit@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_digit: *mut nsIAtom; - #[link_name = "?dir@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?dir@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_dir: *mut nsIAtom; - #[link_name = "?dirAutoSetBy@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?dirAutoSetBy@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_dirAutoSetBy: *mut nsIAtom; - #[link_name = "?directionality@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?directionality@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_directionality: *mut nsIAtom; - #[link_name = "?directory@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?directory@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_directory: *mut nsIAtom; - #[link_name = "?disableOutputEscaping@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?disableOutputEscaping@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_disableOutputEscaping: *mut nsIAtom; - #[link_name = "?disabled@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?disabled@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_disabled: *mut nsIAtom; - #[link_name = "?disableglobalhistory@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?disableglobalhistory@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_disableglobalhistory: *mut nsIAtom; - #[link_name = "?disablehistory@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?disablehistory@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_disablehistory: *mut nsIAtom; - #[link_name = "?display@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?display@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_display: *mut nsIAtom; - #[link_name = "?displayMode@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?displayMode@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_displayMode: *mut nsIAtom; - #[link_name = "?distinct@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?distinct@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_distinct: *mut nsIAtom; - #[link_name = "?div@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?div@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_div: *mut nsIAtom; - #[link_name = "?dl@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?dl@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_dl: *mut nsIAtom; - #[link_name = "?doctypePublic@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?doctypePublic@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_doctypePublic: *mut nsIAtom; - #[link_name = "?doctypeSystem@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?doctypeSystem@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_doctypeSystem: *mut nsIAtom; - #[link_name = "?document@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?document@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_document: *mut nsIAtom; - #[link_name = "?download@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?download@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_download: *mut nsIAtom; - #[link_name = "?DOMAttrModified@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?DOMAttrModified@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_DOMAttrModified: *mut nsIAtom; - #[link_name = "?DOMCharacterDataModified@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?DOMCharacterDataModified@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_DOMCharacterDataModified: *mut nsIAtom; - #[link_name = "?DOMNodeInserted@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?DOMNodeInserted@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_DOMNodeInserted: *mut nsIAtom; - #[link_name = "?DOMNodeInsertedIntoDocument@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?DOMNodeInsertedIntoDocument@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_DOMNodeInsertedIntoDocument: *mut nsIAtom; - #[link_name = "?DOMNodeRemoved@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?DOMNodeRemoved@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_DOMNodeRemoved: *mut nsIAtom; - #[link_name = "?DOMNodeRemovedFromDocument@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?DOMNodeRemovedFromDocument@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_DOMNodeRemovedFromDocument: *mut nsIAtom; - #[link_name = "?DOMSubtreeModified@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?DOMSubtreeModified@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_DOMSubtreeModified: *mut nsIAtom; - #[link_name = "?double_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?double_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_double_: *mut nsIAtom; - #[link_name = "?drag@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?drag@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_drag: *mut nsIAtom; - #[link_name = "?dragend@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?dragend@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_dragend: *mut nsIAtom; - #[link_name = "?dragenter@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?dragenter@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_dragenter: *mut nsIAtom; - #[link_name = "?dragevent@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?dragevent@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_dragevent: *mut nsIAtom; - #[link_name = "?dragexit@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?dragexit@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_dragexit: *mut nsIAtom; - #[link_name = "?draggable@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?draggable@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_draggable: *mut nsIAtom; - #[link_name = "?dragging@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?dragging@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_dragging: *mut nsIAtom; - #[link_name = "?dragleave@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?dragleave@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_dragleave: *mut nsIAtom; - #[link_name = "?dragover@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?dragover@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_dragover: *mut nsIAtom; - #[link_name = "?dragSession@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?dragSession@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_dragSession: *mut nsIAtom; - #[link_name = "?dragstart@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?dragstart@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_dragstart: *mut nsIAtom; - #[link_name = "?drawintitlebar@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?drawintitlebar@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_drawintitlebar: *mut nsIAtom; - #[link_name = "?drawtitle@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?drawtitle@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_drawtitle: *mut nsIAtom; - #[link_name = "?drop@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?drop@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_drop: *mut nsIAtom; - #[link_name = "?dropAfter@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?dropAfter@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_dropAfter: *mut nsIAtom; - #[link_name = "?dropBefore@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?dropBefore@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_dropBefore: *mut nsIAtom; - #[link_name = "?dropOn@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?dropOn@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_dropOn: *mut nsIAtom; - #[link_name = "?dropMarker@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?dropMarker@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_dropMarker: *mut nsIAtom; - #[link_name = "?dt@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?dt@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_dt: *mut nsIAtom; - #[link_name = "?editable@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?editable@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_editable: *mut nsIAtom; - #[link_name = "?editing@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?editing@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_editing: *mut nsIAtom; - #[link_name = "?editor@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?editor@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_editor: *mut nsIAtom; - #[link_name = "?editorDisplayList@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?editorDisplayList@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_editorDisplayList: *mut nsIAtom; - #[link_name = "?element@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?element@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_element: *mut nsIAtom; - #[link_name = "?elementAvailable@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?elementAvailable@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_elementAvailable: *mut nsIAtom; - #[link_name = "?elements@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?elements@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_elements: *mut nsIAtom; - #[link_name = "?em@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?em@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_em: *mut nsIAtom; - #[link_name = "?embed@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?embed@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_embed: *mut nsIAtom; - #[link_name = "?embossed@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?embossed@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_embossed: *mut nsIAtom; - #[link_name = "?empty@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?empty@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_empty: *mut nsIAtom; - #[link_name = "?encoding@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?encoding@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_encoding: *mut nsIAtom; - #[link_name = "?enctype@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?enctype@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_enctype: *mut nsIAtom; - #[link_name = "?end@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?end@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_end: *mut nsIAtom; - #[link_name = "?endEvent@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?endEvent@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_endEvent: *mut nsIAtom; - #[link_name = "?end_after@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?end_after@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_end_after: *mut nsIAtom; - #[link_name = "?end_before@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?end_before@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_end_before: *mut nsIAtom; - #[link_name = "?equalsize@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?equalsize@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_equalsize: *mut nsIAtom; - #[link_name = "?error@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?error@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_error: *mut nsIAtom; - #[link_name = "?even@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?even@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_even: *mut nsIAtom; - #[link_name = "?event@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?event@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_event: *mut nsIAtom; - #[link_name = "?events@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?events@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_events: *mut nsIAtom; - #[link_name = "?excludeResultPrefixes@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?excludeResultPrefixes@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_excludeResultPrefixes: *mut nsIAtom; - #[link_name = "?excludes@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?excludes@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_excludes: *mut nsIAtom; - #[link_name = "?expr@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?expr@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_expr: *mut nsIAtom; - #[link_name = "?extends@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?extends@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_extends: *mut nsIAtom; - #[link_name = "?extensionElementPrefixes@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?extensionElementPrefixes@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_extensionElementPrefixes: *mut nsIAtom; - #[link_name = "?face@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?face@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_face: *mut nsIAtom; - #[link_name = "?fallback@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?fallback@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_fallback: *mut nsIAtom; - #[link_name = "?_false@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_false@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__false: *mut nsIAtom; - #[link_name = "?farthest@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?farthest@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_farthest: *mut nsIAtom; - #[link_name = "?field@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?field@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_field: *mut nsIAtom; - #[link_name = "?fieldset@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?fieldset@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_fieldset: *mut nsIAtom; - #[link_name = "?figcaption@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?figcaption@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_figcaption: *mut nsIAtom; - #[link_name = "?figure@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?figure@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_figure: *mut nsIAtom; - #[link_name = "?fixed@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?fixed@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_fixed: *mut nsIAtom; - #[link_name = "?flags@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?flags@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_flags: *mut nsIAtom; - #[link_name = "?flex@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?flex@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_flex: *mut nsIAtom; - #[link_name = "?flexgroup@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?flexgroup@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_flexgroup: *mut nsIAtom; - #[link_name = "?flip@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?flip@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_flip: *mut nsIAtom; - #[link_name = "?floating@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?floating@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_floating: *mut nsIAtom; - #[link_name = "?floor@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?floor@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_floor: *mut nsIAtom; - #[link_name = "?flowlength@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?flowlength@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_flowlength: *mut nsIAtom; - #[link_name = "?focus@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?focus@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_focus: *mut nsIAtom; - #[link_name = "?focused@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?focused@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_focused: *mut nsIAtom; - #[link_name = "?following@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?following@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_following: *mut nsIAtom; - #[link_name = "?followingSibling@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?followingSibling@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_followingSibling: *mut nsIAtom; - #[link_name = "?font@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?font@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_font: *mut nsIAtom; - #[link_name = "?fontWeight@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?fontWeight@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_fontWeight: *mut nsIAtom; - #[link_name = "?fontpicker@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?fontpicker@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_fontpicker: *mut nsIAtom; - #[link_name = "?footer@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?footer@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_footer: *mut nsIAtom; - #[link_name = "?_for@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_for@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__for: *mut nsIAtom; - #[link_name = "?forEach@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?forEach@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_forEach: *mut nsIAtom; - #[link_name = "?forceOwnRefreshDriver@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?forceOwnRefreshDriver@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_forceOwnRefreshDriver: *mut nsIAtom; - #[link_name = "?form@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?form@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_form: *mut nsIAtom; - #[link_name = "?formaction@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?formaction@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_formaction: *mut nsIAtom; - #[link_name = "?format@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?format@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_format: *mut nsIAtom; - #[link_name = "?formatNumber@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?formatNumber@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_formatNumber: *mut nsIAtom; - #[link_name = "?formenctype@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?formenctype@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_formenctype: *mut nsIAtom; - #[link_name = "?formmethod@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?formmethod@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_formmethod: *mut nsIAtom; - #[link_name = "?formnovalidate@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?formnovalidate@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_formnovalidate: *mut nsIAtom; - #[link_name = "?formtarget@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?formtarget@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_formtarget: *mut nsIAtom; - #[link_name = "?frame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?frame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_frame: *mut nsIAtom; - #[link_name = "?frameborder@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?frameborder@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_frameborder: *mut nsIAtom; - #[link_name = "?frameset@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?frameset@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_frameset: *mut nsIAtom; - #[link_name = "?from@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?from@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_from: *mut nsIAtom; - #[link_name = "?fullscreenchange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?fullscreenchange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_fullscreenchange: *mut nsIAtom; - #[link_name = "?fullscreenerror@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?fullscreenerror@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_fullscreenerror: *mut nsIAtom; - #[link_name = "?functionAvailable@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?functionAvailable@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_functionAvailable: *mut nsIAtom; - #[link_name = "?generateId@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?generateId@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_generateId: *mut nsIAtom; - #[link_name = "?getter@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?getter@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_getter: *mut nsIAtom; - #[link_name = "?glyphchar@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?glyphchar@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_glyphchar: *mut nsIAtom; - #[link_name = "?glyphid@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?glyphid@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_glyphid: *mut nsIAtom; - #[link_name = "?grid@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?grid@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_grid: *mut nsIAtom; - #[link_name = "?grippy@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?grippy@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_grippy: *mut nsIAtom; - #[link_name = "?group@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?group@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_group: *mut nsIAtom; - #[link_name = "?groupingSeparator@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?groupingSeparator@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_groupingSeparator: *mut nsIAtom; - #[link_name = "?groupingSize@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?groupingSize@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_groupingSize: *mut nsIAtom; - #[link_name = "?grow@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?grow@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_grow: *mut nsIAtom; - #[link_name = "?gutter@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?gutter@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_gutter: *mut nsIAtom; - #[link_name = "?h1@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?h1@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_h1: *mut nsIAtom; - #[link_name = "?h2@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?h2@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_h2: *mut nsIAtom; - #[link_name = "?h3@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?h3@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_h3: *mut nsIAtom; - #[link_name = "?h4@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?h4@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_h4: *mut nsIAtom; - #[link_name = "?h5@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?h5@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_h5: *mut nsIAtom; - #[link_name = "?h6@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?h6@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_h6: *mut nsIAtom; - #[link_name = "?handheld@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?handheld@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_handheld: *mut nsIAtom; - #[link_name = "?handheldFriendly@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?handheldFriendly@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_handheldFriendly: *mut nsIAtom; - #[link_name = "?handler@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?handler@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_handler: *mut nsIAtom; - #[link_name = "?handlers@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?handlers@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_handlers: *mut nsIAtom; - #[link_name = "?HARD@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?HARD@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_HARD: *mut nsIAtom; - #[link_name = "?hasSameNode@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?hasSameNode@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_hasSameNode: *mut nsIAtom; - #[link_name = "?hbox@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?hbox@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_hbox: *mut nsIAtom; - #[link_name = "?head@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?head@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_head: *mut nsIAtom; - #[link_name = "?header@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?header@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_header: *mut nsIAtom; - #[link_name = "?headers@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?headers@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_headers: *mut nsIAtom; - #[link_name = "?height@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?height@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_height: *mut nsIAtom; - #[link_name = "?hgroup@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?hgroup@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_hgroup: *mut nsIAtom; - #[link_name = "?hidden@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?hidden@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_hidden: *mut nsIAtom; - #[link_name = "?hidechrome@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?hidechrome@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_hidechrome: *mut nsIAtom; - #[link_name = "?hidecolumnpicker@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?hidecolumnpicker@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_hidecolumnpicker: *mut nsIAtom; - #[link_name = "?high@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?high@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_high: *mut nsIAtom; - #[link_name = "?highest@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?highest@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_highest: *mut nsIAtom; - #[link_name = "?horizontal@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?horizontal@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_horizontal: *mut nsIAtom; - #[link_name = "?hover@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?hover@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_hover: *mut nsIAtom; - #[link_name = "?hr@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?hr@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_hr: *mut nsIAtom; - #[link_name = "?href@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?href@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_href: *mut nsIAtom; - #[link_name = "?hreflang@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?hreflang@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_hreflang: *mut nsIAtom; - #[link_name = "?hspace@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?hspace@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_hspace: *mut nsIAtom; - #[link_name = "?html@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?html@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_html: *mut nsIAtom; - #[link_name = "?httpEquiv@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?httpEquiv@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_httpEquiv: *mut nsIAtom; - #[link_name = "?i@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?i@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_i: *mut nsIAtom; - #[link_name = "?icon@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?icon@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_icon: *mut nsIAtom; - #[link_name = "?id@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?id@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_id: *mut nsIAtom; - #[link_name = "?_if@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_if@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__if: *mut nsIAtom; - #[link_name = "?iframe@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?iframe@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_iframe: *mut nsIAtom; - #[link_name = "?ignorecase@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ignorecase@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ignorecase: *mut nsIAtom; - #[link_name = "?ignorekeys@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ignorekeys@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ignorekeys: *mut nsIAtom; - #[link_name = "?ignoreuserfocus@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ignoreuserfocus@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ignoreuserfocus: *mut nsIAtom; - #[link_name = "?ilayer@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ilayer@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ilayer: *mut nsIAtom; - #[link_name = "?image@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?image@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_image: *mut nsIAtom; - #[link_name = "?imageClickedPoint@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?imageClickedPoint@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_imageClickedPoint: *mut nsIAtom; - #[link_name = "?img@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?img@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_img: *mut nsIAtom; - #[link_name = "?implementation@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?implementation@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_implementation: *mut nsIAtom; - #[link_name = "?implements@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?implements@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_implements: *mut nsIAtom; - #[link_name = "?import@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?import@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_import: *mut nsIAtom; - #[link_name = "?inactivetitlebarcolor@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?inactivetitlebarcolor@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_inactivetitlebarcolor: *mut nsIAtom; - #[link_name = "?include@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?include@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_include: *mut nsIAtom; - #[link_name = "?includes@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?includes@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_includes: *mut nsIAtom; - #[link_name = "?increment@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?increment@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_increment: *mut nsIAtom; - #[link_name = "?indent@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?indent@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_indent: *mut nsIAtom; - #[link_name = "?indeterminate@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?indeterminate@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_indeterminate: *mut nsIAtom; - #[link_name = "?index@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?index@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_index: *mut nsIAtom; - #[link_name = "?infer@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?infer@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_infer: *mut nsIAtom; - #[link_name = "?infinity@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?infinity@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_infinity: *mut nsIAtom; - #[link_name = "?inherit@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?inherit@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_inherit: *mut nsIAtom; - #[link_name = "?inherits@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?inherits@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_inherits: *mut nsIAtom; - #[link_name = "?inheritstyle@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?inheritstyle@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_inheritstyle: *mut nsIAtom; - #[link_name = "?initial_scale@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?initial_scale@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_initial_scale: *mut nsIAtom; - #[link_name = "?input@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?input@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_input: *mut nsIAtom; - #[link_name = "?inputmode@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?inputmode@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_inputmode: *mut nsIAtom; - #[link_name = "?ins@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ins@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ins: *mut nsIAtom; - #[link_name = "?insertafter@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?insertafter@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_insertafter: *mut nsIAtom; - #[link_name = "?insertbefore@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?insertbefore@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_insertbefore: *mut nsIAtom; - #[link_name = "?install@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?install@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_install: *mut nsIAtom; - #[link_name = "?instanceOf@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?instanceOf@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_instanceOf: *mut nsIAtom; - #[link_name = "?int32@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?int32@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_int32: *mut nsIAtom; - #[link_name = "?int64@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?int64@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_int64: *mut nsIAtom; - #[link_name = "?integer@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?integer@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_integer: *mut nsIAtom; - #[link_name = "?integrity@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?integrity@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_integrity: *mut nsIAtom; - #[link_name = "?intersection@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?intersection@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_intersection: *mut nsIAtom; - #[link_name = "?is@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?is@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_is: *mut nsIAtom; - #[link_name = "?iscontainer@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?iscontainer@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_iscontainer: *mut nsIAtom; - #[link_name = "?isempty@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?isempty@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_isempty: *mut nsIAtom; - #[link_name = "?ismap@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ismap@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ismap: *mut nsIAtom; - #[link_name = "?itemid@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?itemid@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_itemid: *mut nsIAtom; - #[link_name = "?itemprop@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?itemprop@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_itemprop: *mut nsIAtom; - #[link_name = "?itemref@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?itemref@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_itemref: *mut nsIAtom; - #[link_name = "?itemscope@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?itemscope@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_itemscope: *mut nsIAtom; - #[link_name = "?itemtype@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?itemtype@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_itemtype: *mut nsIAtom; - #[link_name = "?kbd@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?kbd@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_kbd: *mut nsIAtom; - #[link_name = "?keepcurrentinview@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?keepcurrentinview@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_keepcurrentinview: *mut nsIAtom; - #[link_name = "?keepobjectsalive@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?keepobjectsalive@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_keepobjectsalive: *mut nsIAtom; - #[link_name = "?key@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?key@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_key: *mut nsIAtom; - #[link_name = "?keycode@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?keycode@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_keycode: *mut nsIAtom; - #[link_name = "?keystatuseschange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?keystatuseschange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_keystatuseschange: *mut nsIAtom; - #[link_name = "?keydown@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?keydown@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_keydown: *mut nsIAtom; - #[link_name = "?keygen@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?keygen@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_keygen: *mut nsIAtom; - #[link_name = "?keypress@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?keypress@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_keypress: *mut nsIAtom; - #[link_name = "?keyset@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?keyset@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_keyset: *mut nsIAtom; - #[link_name = "?keysystem@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?keysystem@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_keysystem: *mut nsIAtom; - #[link_name = "?keytext@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?keytext@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_keytext: *mut nsIAtom; - #[link_name = "?keyup@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?keyup@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_keyup: *mut nsIAtom; - #[link_name = "?kind@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?kind@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_kind: *mut nsIAtom; - #[link_name = "?label@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?label@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_label: *mut nsIAtom; - #[link_name = "?lang@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?lang@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_lang: *mut nsIAtom; - #[link_name = "?language@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?language@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_language: *mut nsIAtom; - #[link_name = "?last@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?last@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_last: *mut nsIAtom; - #[link_name = "?layer@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?layer@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_layer: *mut nsIAtom; - #[link_name = "?LayerActivity@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?LayerActivity@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_LayerActivity: *mut nsIAtom; - #[link_name = "?layout@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?layout@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_layout: *mut nsIAtom; - #[link_name = "?leading@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?leading@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_leading: *mut nsIAtom; - #[link_name = "?leaf@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?leaf@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_leaf: *mut nsIAtom; - #[link_name = "?left@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?left@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_left: *mut nsIAtom; - #[link_name = "?leftmargin@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?leftmargin@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_leftmargin: *mut nsIAtom; - #[link_name = "?leftpadding@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?leftpadding@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_leftpadding: *mut nsIAtom; - #[link_name = "?legend@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?legend@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_legend: *mut nsIAtom; - #[link_name = "?length@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?length@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_length: *mut nsIAtom; - #[link_name = "?letterValue@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?letterValue@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_letterValue: *mut nsIAtom; - #[link_name = "?level@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?level@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_level: *mut nsIAtom; - #[link_name = "?li@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?li@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_li: *mut nsIAtom; - #[link_name = "?line@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?line@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_line: *mut nsIAtom; - #[link_name = "?link@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?link@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_link: *mut nsIAtom; - #[link_name = "?list@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?list@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_list: *mut nsIAtom; - #[link_name = "?listbox@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?listbox@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_listbox: *mut nsIAtom; - #[link_name = "?listboxbody@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?listboxbody@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_listboxbody: *mut nsIAtom; - #[link_name = "?listcell@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?listcell@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_listcell: *mut nsIAtom; - #[link_name = "?listcol@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?listcol@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_listcol: *mut nsIAtom; - #[link_name = "?listcols@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?listcols@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_listcols: *mut nsIAtom; - #[link_name = "?listener@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?listener@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_listener: *mut nsIAtom; - #[link_name = "?listhead@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?listhead@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_listhead: *mut nsIAtom; - #[link_name = "?listheader@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?listheader@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_listheader: *mut nsIAtom; - #[link_name = "?listing@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?listing@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_listing: *mut nsIAtom; - #[link_name = "?listitem@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?listitem@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_listitem: *mut nsIAtom; - #[link_name = "?listrows@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?listrows@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_listrows: *mut nsIAtom; - #[link_name = "?load@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?load@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_load: *mut nsIAtom; - #[link_name = "?localedir@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?localedir@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_localedir: *mut nsIAtom; - #[link_name = "?localName@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?localName@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_localName: *mut nsIAtom; - #[link_name = "?longdesc@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?longdesc@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_longdesc: *mut nsIAtom; - #[link_name = "?loop@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?loop@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_loop: *mut nsIAtom; - #[link_name = "?low@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?low@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_low: *mut nsIAtom; - #[link_name = "?lowerFirst@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?lowerFirst@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_lowerFirst: *mut nsIAtom; - #[link_name = "?lowest@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?lowest@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_lowest: *mut nsIAtom; - #[link_name = "?lowsrc@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?lowsrc@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_lowsrc: *mut nsIAtom; - #[link_name = "?ltr@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ltr@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ltr: *mut nsIAtom; - #[link_name = "?lwtheme@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?lwtheme@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_lwtheme: *mut nsIAtom; - #[link_name = "?lwthemetextcolor@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?lwthemetextcolor@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_lwthemetextcolor: *mut nsIAtom; - #[link_name = "?main@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?main@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_main: *mut nsIAtom; - #[link_name = "?map@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?map@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_map: *mut nsIAtom; - #[link_name = "?manifest@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?manifest@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_manifest: *mut nsIAtom; - #[link_name = "?marginBottom@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?marginBottom@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_marginBottom: *mut nsIAtom; - #[link_name = "?marginLeft@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?marginLeft@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_marginLeft: *mut nsIAtom; - #[link_name = "?marginRight@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?marginRight@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_marginRight: *mut nsIAtom; - #[link_name = "?marginTop@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?marginTop@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_marginTop: *mut nsIAtom; - #[link_name = "?marginheight@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?marginheight@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_marginheight: *mut nsIAtom; - #[link_name = "?marginwidth@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?marginwidth@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_marginwidth: *mut nsIAtom; - #[link_name = "?mark@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mark@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mark: *mut nsIAtom; - #[link_name = "?marquee@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?marquee@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_marquee: *mut nsIAtom; - #[link_name = "?match@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?match@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_match: *mut nsIAtom; - #[link_name = "?max@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?max@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_max: *mut nsIAtom; - #[link_name = "?maxheight@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?maxheight@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_maxheight: *mut nsIAtom; - #[link_name = "?maximum_scale@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?maximum_scale@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_maximum_scale: *mut nsIAtom; - #[link_name = "?maxlength@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?maxlength@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_maxlength: *mut nsIAtom; - #[link_name = "?maxpos@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?maxpos@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_maxpos: *mut nsIAtom; - #[link_name = "?maxwidth@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?maxwidth@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_maxwidth: *mut nsIAtom; - #[link_name = "?mayscript@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mayscript@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mayscript: *mut nsIAtom; - #[link_name = "?media@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?media@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_media: *mut nsIAtom; - #[link_name = "?mediaType@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mediaType@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mediaType: *mut nsIAtom; - #[link_name = "?member@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?member@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_member: *mut nsIAtom; - #[link_name = "?menu@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?menu@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_menu: *mut nsIAtom; - #[link_name = "?menubar@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?menubar@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_menubar: *mut nsIAtom; - #[link_name = "?menubutton@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?menubutton@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_menubutton: *mut nsIAtom; - #[link_name = "?menuButton@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?menuButton@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_menuButton: *mut nsIAtom; - #[link_name = "?menugroup@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?menugroup@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_menugroup: *mut nsIAtom; - #[link_name = "?menuitem@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?menuitem@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_menuitem: *mut nsIAtom; - #[link_name = "?menulist@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?menulist@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_menulist: *mut nsIAtom; - #[link_name = "?menupopup@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?menupopup@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_menupopup: *mut nsIAtom; - #[link_name = "?menuseparator@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?menuseparator@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_menuseparator: *mut nsIAtom; - #[link_name = "?message@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?message@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_message: *mut nsIAtom; - #[link_name = "?meta@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?meta@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_meta: *mut nsIAtom; - #[link_name = "?referrer@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?referrer@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_referrer: *mut nsIAtom; - #[link_name = "?referrerpolicy@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?referrerpolicy@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_referrerpolicy: *mut nsIAtom; - #[link_name = "?headerReferrerPolicy@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?headerReferrerPolicy@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_headerReferrerPolicy: *mut nsIAtom; - #[link_name = "?meter@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?meter@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_meter: *mut nsIAtom; - #[link_name = "?method@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?method@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_method: *mut nsIAtom; - #[link_name = "?middle@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?middle@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_middle: *mut nsIAtom; - #[link_name = "?min@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?min@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_min: *mut nsIAtom; - #[link_name = "?minheight@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?minheight@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_minheight: *mut nsIAtom; - #[link_name = "?minimum_scale@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?minimum_scale@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_minimum_scale: *mut nsIAtom; - #[link_name = "?minlength@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?minlength@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_minlength: *mut nsIAtom; - #[link_name = "?minpos@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?minpos@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_minpos: *mut nsIAtom; - #[link_name = "?minusSign@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?minusSign@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_minusSign: *mut nsIAtom; - #[link_name = "?minwidth@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?minwidth@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_minwidth: *mut nsIAtom; - #[link_name = "?_mixed@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_mixed@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__mixed: *mut nsIAtom; - #[link_name = "?messagemanagergroup@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?messagemanagergroup@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_messagemanagergroup: *mut nsIAtom; - #[link_name = "?mod@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mod@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mod: *mut nsIAtom; - #[link_name = "?mode@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mode@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mode: *mut nsIAtom; - #[link_name = "?modifiers@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?modifiers@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_modifiers: *mut nsIAtom; - #[link_name = "?monochrome@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?monochrome@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_monochrome: *mut nsIAtom; - #[link_name = "?mousedown@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mousedown@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mousedown: *mut nsIAtom; - #[link_name = "?mousemove@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mousemove@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mousemove: *mut nsIAtom; - #[link_name = "?mouseout@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mouseout@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mouseout: *mut nsIAtom; - #[link_name = "?mouseover@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mouseover@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mouseover: *mut nsIAtom; - #[link_name = "?mousethrough@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mousethrough@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mousethrough: *mut nsIAtom; - #[link_name = "?mouseup@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mouseup@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mouseup: *mut nsIAtom; - #[link_name = "?mozaudiochannel@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mozaudiochannel@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mozaudiochannel: *mut nsIAtom; - #[link_name = "?mozfullscreenchange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mozfullscreenchange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mozfullscreenchange: *mut nsIAtom; - #[link_name = "?mozfullscreenerror@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mozfullscreenerror@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mozfullscreenerror: *mut nsIAtom; - #[link_name = "?mozpasspointerevents@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mozpasspointerevents@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mozpasspointerevents: *mut nsIAtom; - #[link_name = "?mozpointerlockchange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mozpointerlockchange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mozpointerlockchange: *mut nsIAtom; - #[link_name = "?mozpointerlockerror@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mozpointerlockerror@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mozpointerlockerror: *mut nsIAtom; - #[link_name = "?mozprivatebrowsing@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mozprivatebrowsing@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mozprivatebrowsing: *mut nsIAtom; - #[link_name = "?moz_opaque@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?moz_opaque@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_moz_opaque: *mut nsIAtom; - #[link_name = "?moz_action_hint@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?moz_action_hint@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_moz_action_hint: *mut nsIAtom; - #[link_name = "?x_moz_errormessage@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?x_moz_errormessage@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_x_moz_errormessage: *mut nsIAtom; - #[link_name = "?msthemecompatible@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?msthemecompatible@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_msthemecompatible: *mut nsIAtom; - #[link_name = "?multicol@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?multicol@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_multicol: *mut nsIAtom; - #[link_name = "?multiple@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?multiple@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_multiple: *mut nsIAtom; - #[link_name = "?muted@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?muted@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_muted: *mut nsIAtom; - #[link_name = "?name@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?name@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_name: *mut nsIAtom; - #[link_name = "?_namespace@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_namespace@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__namespace: *mut nsIAtom; - #[link_name = "?namespaceAlias@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?namespaceAlias@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_namespaceAlias: *mut nsIAtom; - #[link_name = "?namespaceUri@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?namespaceUri@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_namespaceUri: *mut nsIAtom; - #[link_name = "?NaN@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?NaN@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_NaN: *mut nsIAtom; - #[link_name = "?nativeAnonymousChildList@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?nativeAnonymousChildList@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_nativeAnonymousChildList: *mut nsIAtom; - #[link_name = "?nav@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?nav@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_nav: *mut nsIAtom; - #[link_name = "?negate@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?negate@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_negate: *mut nsIAtom; - #[link_name = "?never@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?never@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_never: *mut nsIAtom; - #[link_name = "?_new@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_new@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__new: *mut nsIAtom; - #[link_name = "?newline@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?newline@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_newline: *mut nsIAtom; - #[link_name = "?nextBidi@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?nextBidi@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_nextBidi: *mut nsIAtom; - #[link_name = "?no@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?no@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_no: *mut nsIAtom; - #[link_name = "?noautofocus@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?noautofocus@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_noautofocus: *mut nsIAtom; - #[link_name = "?noautohide@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?noautohide@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_noautohide: *mut nsIAtom; - #[link_name = "?norolluponanchor@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?norolluponanchor@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_norolluponanchor: *mut nsIAtom; - #[link_name = "?nobr@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?nobr@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_nobr: *mut nsIAtom; - #[link_name = "?node@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?node@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_node: *mut nsIAtom; - #[link_name = "?nodefaultsrc@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?nodefaultsrc@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_nodefaultsrc: *mut nsIAtom; - #[link_name = "?nodeSet@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?nodeSet@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_nodeSet: *mut nsIAtom; - #[link_name = "?noembed@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?noembed@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_noembed: *mut nsIAtom; - #[link_name = "?noframes@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?noframes@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_noframes: *mut nsIAtom; - #[link_name = "?nohref@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?nohref@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_nohref: *mut nsIAtom; - #[link_name = "?noisolation@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?noisolation@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_noisolation: *mut nsIAtom; - #[link_name = "?nonce@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?nonce@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_nonce: *mut nsIAtom; - #[link_name = "?none@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?none@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_none: *mut nsIAtom; - #[link_name = "?noresize@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?noresize@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_noresize: *mut nsIAtom; - #[link_name = "?normal@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?normal@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_normal: *mut nsIAtom; - #[link_name = "?normalizeSpace@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?normalizeSpace@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_normalizeSpace: *mut nsIAtom; - #[link_name = "?noscript@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?noscript@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_noscript: *mut nsIAtom; - #[link_name = "?noshade@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?noshade@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_noshade: *mut nsIAtom; - #[link_name = "?novalidate@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?novalidate@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_novalidate: *mut nsIAtom; - #[link_name = "?_not@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_not@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__not: *mut nsIAtom; - #[link_name = "?nowrap@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?nowrap@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_nowrap: *mut nsIAtom; - #[link_name = "?number@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?number@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_number: *mut nsIAtom; - #[link_name = "?null@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?null@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_null: *mut nsIAtom; - #[link_name = "?object@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?object@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_object: *mut nsIAtom; - #[link_name = "?objectType@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?objectType@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_objectType: *mut nsIAtom; - #[link_name = "?observer@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?observer@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_observer: *mut nsIAtom; - #[link_name = "?observes@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?observes@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_observes: *mut nsIAtom; - #[link_name = "?odd@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?odd@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_odd: *mut nsIAtom; - #[link_name = "?OFF@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?OFF@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_OFF: *mut nsIAtom; - #[link_name = "?ol@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ol@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ol: *mut nsIAtom; - #[link_name = "?omitXmlDeclaration@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?omitXmlDeclaration@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_omitXmlDeclaration: *mut nsIAtom; - #[link_name = "?ona2dpstatuschanged@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ona2dpstatuschanged@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ona2dpstatuschanged: *mut nsIAtom; - #[link_name = "?onabort@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onabort@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onabort: *mut nsIAtom; - #[link_name = "?onmozaccesskeynotfound@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onmozaccesskeynotfound@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onmozaccesskeynotfound: *mut nsIAtom; - #[link_name = "?onactivate@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onactivate@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onactivate: *mut nsIAtom; - #[link_name = "?onadapteradded@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onadapteradded@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onadapteradded: *mut nsIAtom; - #[link_name = "?onadapterremoved@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onadapterremoved@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onadapterremoved: *mut nsIAtom; - #[link_name = "?onafterprint@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onafterprint@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onafterprint: *mut nsIAtom; - #[link_name = "?onafterscriptexecute@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onafterscriptexecute@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onafterscriptexecute: *mut nsIAtom; - #[link_name = "?onalerting@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onalerting@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onalerting: *mut nsIAtom; - #[link_name = "?onanimationend@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onanimationend@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onanimationend: *mut nsIAtom; - #[link_name = "?onanimationiteration@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onanimationiteration@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onanimationiteration: *mut nsIAtom; - #[link_name = "?onanimationstart@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onanimationstart@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onanimationstart: *mut nsIAtom; - #[link_name = "?onantennaavailablechange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onantennaavailablechange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onantennaavailablechange: *mut nsIAtom; - #[link_name = "?onAppCommand@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onAppCommand@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onAppCommand: *mut nsIAtom; - #[link_name = "?onattributechanged@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onattributechanged@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onattributechanged: *mut nsIAtom; - #[link_name = "?onattributereadreq@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onattributereadreq@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onattributereadreq: *mut nsIAtom; - #[link_name = "?onattributewritereq@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onattributewritereq@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onattributewritereq: *mut nsIAtom; - #[link_name = "?onaudioprocess@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onaudioprocess@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onaudioprocess: *mut nsIAtom; - #[link_name = "?onbeforecopy@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onbeforecopy@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onbeforecopy: *mut nsIAtom; - #[link_name = "?onbeforecut@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onbeforecut@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onbeforecut: *mut nsIAtom; - #[link_name = "?onbeforepaste@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onbeforepaste@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onbeforepaste: *mut nsIAtom; - #[link_name = "?onbeforeevicted@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onbeforeevicted@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onbeforeevicted: *mut nsIAtom; - #[link_name = "?onbeforeprint@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onbeforeprint@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onbeforeprint: *mut nsIAtom; - #[link_name = "?onbeforescriptexecute@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onbeforescriptexecute@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onbeforescriptexecute: *mut nsIAtom; - #[link_name = "?onbeforeunload@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onbeforeunload@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onbeforeunload: *mut nsIAtom; - #[link_name = "?onblocked@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onblocked@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onblocked: *mut nsIAtom; - #[link_name = "?onblur@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onblur@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onblur: *mut nsIAtom; - #[link_name = "?onbroadcast@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onbroadcast@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onbroadcast: *mut nsIAtom; - #[link_name = "?onbusy@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onbusy@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onbusy: *mut nsIAtom; - #[link_name = "?onbufferedamountlow@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onbufferedamountlow@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onbufferedamountlow: *mut nsIAtom; - #[link_name = "?oncached@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?oncached@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_oncached: *mut nsIAtom; - #[link_name = "?oncallschanged@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?oncallschanged@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_oncallschanged: *mut nsIAtom; - #[link_name = "?oncancel@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?oncancel@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_oncancel: *mut nsIAtom; - #[link_name = "?oncardstatechange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?oncardstatechange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_oncardstatechange: *mut nsIAtom; - #[link_name = "?oncfstatechange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?oncfstatechange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_oncfstatechange: *mut nsIAtom; - #[link_name = "?onchange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onchange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onchange: *mut nsIAtom; - #[link_name = "?oncharacteristicchanged@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?oncharacteristicchanged@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_oncharacteristicchanged: *mut nsIAtom; - #[link_name = "?onchargingchange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onchargingchange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onchargingchange: *mut nsIAtom; - #[link_name = "?onchargingtimechange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onchargingtimechange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onchargingtimechange: *mut nsIAtom; - #[link_name = "?onchecking@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onchecking@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onchecking: *mut nsIAtom; - #[link_name = "?onclick@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onclick@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onclick: *mut nsIAtom; - #[link_name = "?onclirmodechange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onclirmodechange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onclirmodechange: *mut nsIAtom; - #[link_name = "?onclose@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onclose@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onclose: *mut nsIAtom; - #[link_name = "?oncommand@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?oncommand@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_oncommand: *mut nsIAtom; - #[link_name = "?oncommandupdate@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?oncommandupdate@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_oncommandupdate: *mut nsIAtom; - #[link_name = "?oncomplete@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?oncomplete@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_oncomplete: *mut nsIAtom; - #[link_name = "?oncompositionend@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?oncompositionend@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_oncompositionend: *mut nsIAtom; - #[link_name = "?oncompositionstart@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?oncompositionstart@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_oncompositionstart: *mut nsIAtom; - #[link_name = "?oncompositionupdate@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?oncompositionupdate@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_oncompositionupdate: *mut nsIAtom; - #[link_name = "?onconfigurationchange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onconfigurationchange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onconfigurationchange: *mut nsIAtom; - #[link_name = "?onconnect@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onconnect@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onconnect: *mut nsIAtom; - #[link_name = "?onconnected@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onconnected@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onconnected: *mut nsIAtom; - #[link_name = "?onconnecting@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onconnecting@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onconnecting: *mut nsIAtom; - #[link_name = "?onconnectionavailable@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onconnectionavailable@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onconnectionavailable: *mut nsIAtom; - #[link_name = "?onconnectionstatechanged@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onconnectionstatechanged@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onconnectionstatechanged: *mut nsIAtom; - #[link_name = "?oncontextmenu@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?oncontextmenu@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_oncontextmenu: *mut nsIAtom; - #[link_name = "?oncopy@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?oncopy@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_oncopy: *mut nsIAtom; - #[link_name = "?oncurrentchannelchanged@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?oncurrentchannelchanged@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_oncurrentchannelchanged: *mut nsIAtom; - #[link_name = "?oncurrentsourcechanged@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?oncurrentsourcechanged@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_oncurrentsourcechanged: *mut nsIAtom; - #[link_name = "?oncut@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?oncut@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_oncut: *mut nsIAtom; - #[link_name = "?ondatachange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ondatachange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ondatachange: *mut nsIAtom; - #[link_name = "?ondataerror@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ondataerror@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ondataerror: *mut nsIAtom; - #[link_name = "?ondblclick@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ondblclick@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ondblclick: *mut nsIAtom; - #[link_name = "?ondeleted@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ondeleted@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ondeleted: *mut nsIAtom; - #[link_name = "?ondeliverysuccess@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ondeliverysuccess@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ondeliverysuccess: *mut nsIAtom; - #[link_name = "?ondeliveryerror@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ondeliveryerror@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ondeliveryerror: *mut nsIAtom; - #[link_name = "?ondevicefound@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ondevicefound@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ondevicefound: *mut nsIAtom; - #[link_name = "?ondevicepaired@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ondevicepaired@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ondevicepaired: *mut nsIAtom; - #[link_name = "?ondeviceunpaired@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ondeviceunpaired@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ondeviceunpaired: *mut nsIAtom; - #[link_name = "?ondialing@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ondialing@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ondialing: *mut nsIAtom; - #[link_name = "?ondisabled@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ondisabled@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ondisabled: *mut nsIAtom; - #[link_name = "?ondischargingtimechange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ondischargingtimechange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ondischargingtimechange: *mut nsIAtom; - #[link_name = "?ondisconnect@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ondisconnect@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ondisconnect: *mut nsIAtom; - #[link_name = "?ondisconnected@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ondisconnected@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ondisconnected: *mut nsIAtom; - #[link_name = "?ondisconnecting@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ondisconnecting@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ondisconnecting: *mut nsIAtom; - #[link_name = "?ondisplaypasskeyreq@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ondisplaypasskeyreq@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ondisplaypasskeyreq: *mut nsIAtom; - #[link_name = "?ondownloading@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ondownloading@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ondownloading: *mut nsIAtom; - #[link_name = "?onDOMActivate@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onDOMActivate@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onDOMActivate: *mut nsIAtom; - #[link_name = "?onDOMAttrModified@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onDOMAttrModified@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onDOMAttrModified: *mut nsIAtom; - #[link_name = "?onDOMCharacterDataModified@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onDOMCharacterDataModified@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onDOMCharacterDataModified: *mut nsIAtom; - #[link_name = "?onDOMFocusIn@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onDOMFocusIn@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onDOMFocusIn: *mut nsIAtom; - #[link_name = "?onDOMFocusOut@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onDOMFocusOut@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onDOMFocusOut: *mut nsIAtom; - #[link_name = "?onDOMMouseScroll@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onDOMMouseScroll@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onDOMMouseScroll: *mut nsIAtom; - #[link_name = "?onDOMNodeInserted@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onDOMNodeInserted@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onDOMNodeInserted: *mut nsIAtom; - #[link_name = "?onDOMNodeInsertedIntoDocument@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onDOMNodeInsertedIntoDocument@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onDOMNodeInsertedIntoDocument: *mut nsIAtom; - #[link_name = "?onDOMNodeRemoved@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onDOMNodeRemoved@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onDOMNodeRemoved: *mut nsIAtom; - #[link_name = "?onDOMNodeRemovedFromDocument@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onDOMNodeRemovedFromDocument@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onDOMNodeRemovedFromDocument: *mut nsIAtom; - #[link_name = "?onDOMSubtreeModified@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onDOMSubtreeModified@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onDOMSubtreeModified: *mut nsIAtom; - #[link_name = "?ondata@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ondata@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ondata: *mut nsIAtom; - #[link_name = "?ondrag@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ondrag@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ondrag: *mut nsIAtom; - #[link_name = "?ondragdrop@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ondragdrop@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ondragdrop: *mut nsIAtom; - #[link_name = "?ondragend@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ondragend@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ondragend: *mut nsIAtom; - #[link_name = "?ondragenter@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ondragenter@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ondragenter: *mut nsIAtom; - #[link_name = "?ondragexit@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ondragexit@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ondragexit: *mut nsIAtom; - #[link_name = "?ondraggesture@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ondraggesture@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ondraggesture: *mut nsIAtom; - #[link_name = "?ondragleave@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ondragleave@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ondragleave: *mut nsIAtom; - #[link_name = "?ondragover@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ondragover@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ondragover: *mut nsIAtom; - #[link_name = "?ondragstart@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ondragstart@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ondragstart: *mut nsIAtom; - #[link_name = "?ondrain@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ondrain@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ondrain: *mut nsIAtom; - #[link_name = "?ondrop@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ondrop@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ondrop: *mut nsIAtom; - #[link_name = "?oneitbroadcasted@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?oneitbroadcasted@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_oneitbroadcasted: *mut nsIAtom; - #[link_name = "?onenabled@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onenabled@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onenabled: *mut nsIAtom; - #[link_name = "?onenterpincodereq@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onenterpincodereq@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onenterpincodereq: *mut nsIAtom; - #[link_name = "?onemergencycbmodechange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onemergencycbmodechange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onemergencycbmodechange: *mut nsIAtom; - #[link_name = "?onerror@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onerror@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onerror: *mut nsIAtom; - #[link_name = "?onevicted@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onevicted@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onevicted: *mut nsIAtom; - #[link_name = "?onfacesdetected@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onfacesdetected@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onfacesdetected: *mut nsIAtom; - #[link_name = "?onfailed@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onfailed@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onfailed: *mut nsIAtom; - #[link_name = "?onfetch@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onfetch@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onfetch: *mut nsIAtom; - #[link_name = "?onfinish@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onfinish@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onfinish: *mut nsIAtom; - #[link_name = "?onfocus@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onfocus@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onfocus: *mut nsIAtom; - #[link_name = "?onfrequencychange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onfrequencychange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onfrequencychange: *mut nsIAtom; - #[link_name = "?onfullscreenchange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onfullscreenchange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onfullscreenchange: *mut nsIAtom; - #[link_name = "?onfullscreenerror@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onfullscreenerror@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onfullscreenerror: *mut nsIAtom; - #[link_name = "?onspeakerforcedchange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onspeakerforcedchange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onspeakerforcedchange: *mut nsIAtom; - #[link_name = "?onget@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onget@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onget: *mut nsIAtom; - #[link_name = "?ongroupchange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ongroupchange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ongroupchange: *mut nsIAtom; - #[link_name = "?onhashchange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onhashchange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onhashchange: *mut nsIAtom; - #[link_name = "?onheadphoneschange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onheadphoneschange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onheadphoneschange: *mut nsIAtom; - #[link_name = "?onheld@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onheld@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onheld: *mut nsIAtom; - #[link_name = "?onhfpstatuschanged@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onhfpstatuschanged@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onhfpstatuschanged: *mut nsIAtom; - #[link_name = "?onhidstatuschanged@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onhidstatuschanged@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onhidstatuschanged: *mut nsIAtom; - #[link_name = "?onholding@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onholding@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onholding: *mut nsIAtom; - #[link_name = "?oniccchange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?oniccchange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_oniccchange: *mut nsIAtom; - #[link_name = "?oniccdetected@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?oniccdetected@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_oniccdetected: *mut nsIAtom; - #[link_name = "?oniccinfochange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?oniccinfochange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_oniccinfochange: *mut nsIAtom; - #[link_name = "?oniccundetected@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?oniccundetected@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_oniccundetected: *mut nsIAtom; - #[link_name = "?onincoming@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onincoming@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onincoming: *mut nsIAtom; - #[link_name = "?oninput@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?oninput@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_oninput: *mut nsIAtom; - #[link_name = "?oninstall@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?oninstall@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_oninstall: *mut nsIAtom; - #[link_name = "?oninvalid@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?oninvalid@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_oninvalid: *mut nsIAtom; - #[link_name = "?onkeydown@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onkeydown@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onkeydown: *mut nsIAtom; - #[link_name = "?onkeypress@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onkeypress@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onkeypress: *mut nsIAtom; - #[link_name = "?onkeyup@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onkeyup@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onkeyup: *mut nsIAtom; - #[link_name = "?onlanguagechange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onlanguagechange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onlanguagechange: *mut nsIAtom; - #[link_name = "?onlevelchange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onlevelchange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onlevelchange: *mut nsIAtom; - #[link_name = "?onLoad@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onLoad@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onLoad: *mut nsIAtom; - #[link_name = "?onload@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onload@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onload: *mut nsIAtom; - #[link_name = "?onloading@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onloading@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onloading: *mut nsIAtom; - #[link_name = "?onloadingdone@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onloadingdone@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onloadingdone: *mut nsIAtom; - #[link_name = "?onloadingerror@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onloadingerror@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onloadingerror: *mut nsIAtom; - #[link_name = "?onpopstate@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onpopstate@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onpopstate: *mut nsIAtom; - #[link_name = "?only@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?only@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_only: *mut nsIAtom; - #[link_name = "?onmessage@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onmessage@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onmessage: *mut nsIAtom; - #[link_name = "?onmousedown@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onmousedown@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onmousedown: *mut nsIAtom; - #[link_name = "?onmouseenter@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onmouseenter@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onmouseenter: *mut nsIAtom; - #[link_name = "?onmouseleave@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onmouseleave@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onmouseleave: *mut nsIAtom; - #[link_name = "?onmousemove@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onmousemove@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onmousemove: *mut nsIAtom; - #[link_name = "?onmouseout@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onmouseout@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onmouseout: *mut nsIAtom; - #[link_name = "?onmouseover@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onmouseover@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onmouseover: *mut nsIAtom; - #[link_name = "?onMozMouseHittest@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onMozMouseHittest@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onMozMouseHittest: *mut nsIAtom; - #[link_name = "?onmouseup@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onmouseup@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onmouseup: *mut nsIAtom; - #[link_name = "?onMozAfterPaint@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onMozAfterPaint@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onMozAfterPaint: *mut nsIAtom; - #[link_name = "?onmozbrowserafterkeydown@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onmozbrowserafterkeydown@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onmozbrowserafterkeydown: *mut nsIAtom; - #[link_name = "?onmozbrowserafterkeyup@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onmozbrowserafterkeyup@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onmozbrowserafterkeyup: *mut nsIAtom; - #[link_name = "?onmozbrowserbeforekeydown@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onmozbrowserbeforekeydown@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onmozbrowserbeforekeydown: *mut nsIAtom; - #[link_name = "?onmozbrowserbeforekeyup@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onmozbrowserbeforekeyup@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onmozbrowserbeforekeyup: *mut nsIAtom; - #[link_name = "?onmozfullscreenchange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onmozfullscreenchange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onmozfullscreenchange: *mut nsIAtom; - #[link_name = "?onmozfullscreenerror@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onmozfullscreenerror@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onmozfullscreenerror: *mut nsIAtom; - #[link_name = "?onmozkeydownonplugin@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onmozkeydownonplugin@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onmozkeydownonplugin: *mut nsIAtom; - #[link_name = "?onmozkeyuponplugin@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onmozkeyuponplugin@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onmozkeyuponplugin: *mut nsIAtom; - #[link_name = "?onmozpointerlockchange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onmozpointerlockchange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onmozpointerlockchange: *mut nsIAtom; - #[link_name = "?onmozpointerlockerror@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onmozpointerlockerror@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onmozpointerlockerror: *mut nsIAtom; - #[link_name = "?onmoztimechange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onmoztimechange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onmoztimechange: *mut nsIAtom; - #[link_name = "?onMozMousePixelScroll@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onMozMousePixelScroll@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onMozMousePixelScroll: *mut nsIAtom; - #[link_name = "?onMozScrolledAreaChanged@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onMozScrolledAreaChanged@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onMozScrolledAreaChanged: *mut nsIAtom; - #[link_name = "?onmoznetworkupload@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onmoznetworkupload@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onmoznetworkupload: *mut nsIAtom; - #[link_name = "?onmoznetworkdownload@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onmoznetworkdownload@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onmoznetworkdownload: *mut nsIAtom; - #[link_name = "?onmapfolderlistingreq@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onmapfolderlistingreq@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onmapfolderlistingreq: *mut nsIAtom; - #[link_name = "?onmapmessageslistingreq@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onmapmessageslistingreq@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onmapmessageslistingreq: *mut nsIAtom; - #[link_name = "?onmapgetmessagereq@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onmapgetmessagereq@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onmapgetmessagereq: *mut nsIAtom; - #[link_name = "?onmapsetmessagestatusreq@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onmapsetmessagestatusreq@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onmapsetmessagestatusreq: *mut nsIAtom; - #[link_name = "?onmapsendmessagereq@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onmapsendmessagereq@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onmapsendmessagereq: *mut nsIAtom; - #[link_name = "?onmapmessageupdatereq@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onmapmessageupdatereq@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onmapmessageupdatereq: *mut nsIAtom; - #[link_name = "?onnewrdsgroup@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onnewrdsgroup@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onnewrdsgroup: *mut nsIAtom; - #[link_name = "?onnotificationclick@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onnotificationclick@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onnotificationclick: *mut nsIAtom; - #[link_name = "?onnotificationclose@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onnotificationclose@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onnotificationclose: *mut nsIAtom; - #[link_name = "?onnoupdate@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onnoupdate@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onnoupdate: *mut nsIAtom; - #[link_name = "?onobexpasswordreq@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onobexpasswordreq@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onobexpasswordreq: *mut nsIAtom; - #[link_name = "?onobsolete@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onobsolete@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onobsolete: *mut nsIAtom; - #[link_name = "?ononline@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ononline@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ononline: *mut nsIAtom; - #[link_name = "?onoffline@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onoffline@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onoffline: *mut nsIAtom; - #[link_name = "?onopen@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onopen@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onopen: *mut nsIAtom; - #[link_name = "?onorientationchange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onorientationchange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onorientationchange: *mut nsIAtom; - #[link_name = "?onotastatuschange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onotastatuschange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onotastatuschange: *mut nsIAtom; - #[link_name = "?onoverflow@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onoverflow@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onoverflow: *mut nsIAtom; - #[link_name = "?onoverflowchanged@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onoverflowchanged@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onoverflowchanged: *mut nsIAtom; - #[link_name = "?onpagehide@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onpagehide@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onpagehide: *mut nsIAtom; - #[link_name = "?onpageshow@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onpageshow@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onpageshow: *mut nsIAtom; - #[link_name = "?onpaint@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onpaint@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onpaint: *mut nsIAtom; - #[link_name = "?onpairingaborted@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onpairingaborted@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onpairingaborted: *mut nsIAtom; - #[link_name = "?onpairingconfirmationreq@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onpairingconfirmationreq@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onpairingconfirmationreq: *mut nsIAtom; - #[link_name = "?onpairingconsentreq@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onpairingconsentreq@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onpairingconsentreq: *mut nsIAtom; - #[link_name = "?onpaste@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onpaste@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onpaste: *mut nsIAtom; - #[link_name = "?onpendingchange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onpendingchange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onpendingchange: *mut nsIAtom; - #[link_name = "?onpichange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onpichange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onpichange: *mut nsIAtom; - #[link_name = "?onpicture@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onpicture@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onpicture: *mut nsIAtom; - #[link_name = "?onpointerlockchange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onpointerlockchange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onpointerlockchange: *mut nsIAtom; - #[link_name = "?onpointerlockerror@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onpointerlockerror@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onpointerlockerror: *mut nsIAtom; - #[link_name = "?onpopuphidden@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onpopuphidden@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onpopuphidden: *mut nsIAtom; - #[link_name = "?onpopuphiding@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onpopuphiding@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onpopuphiding: *mut nsIAtom; - #[link_name = "?onpopupshowing@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onpopupshowing@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onpopupshowing: *mut nsIAtom; - #[link_name = "?onpopupshown@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onpopupshown@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onpopupshown: *mut nsIAtom; - #[link_name = "?onposter@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onposter@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onposter: *mut nsIAtom; - #[link_name = "?onpreviewstatechange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onpreviewstatechange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onpreviewstatechange: *mut nsIAtom; - #[link_name = "?onpullphonebookreq@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onpullphonebookreq@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onpullphonebookreq: *mut nsIAtom; - #[link_name = "?onpullvcardentryreq@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onpullvcardentryreq@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onpullvcardentryreq: *mut nsIAtom; - #[link_name = "?onpullvcardlistingreq@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onpullvcardlistingreq@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onpullvcardlistingreq: *mut nsIAtom; - #[link_name = "?onpush@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onpush@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onpush: *mut nsIAtom; - #[link_name = "?onpushsubscriptionchange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onpushsubscriptionchange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onpushsubscriptionchange: *mut nsIAtom; - #[link_name = "?onpschange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onpschange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onpschange: *mut nsIAtom; - #[link_name = "?onptychange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onptychange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onptychange: *mut nsIAtom; - #[link_name = "?onradiostatechange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onradiostatechange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onradiostatechange: *mut nsIAtom; - #[link_name = "?onrdsdisabled@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onrdsdisabled@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onrdsdisabled: *mut nsIAtom; - #[link_name = "?onrdsenabled@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onrdsenabled@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onrdsenabled: *mut nsIAtom; - #[link_name = "?onreaderror@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onreaderror@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onreaderror: *mut nsIAtom; - #[link_name = "?onreadsuccess@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onreadsuccess@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onreadsuccess: *mut nsIAtom; - #[link_name = "?onready@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onready@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onready: *mut nsIAtom; - #[link_name = "?onreadystatechange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onreadystatechange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onreadystatechange: *mut nsIAtom; - #[link_name = "?onreceived@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onreceived@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onreceived: *mut nsIAtom; - #[link_name = "?onrecorderstatechange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onrecorderstatechange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onrecorderstatechange: *mut nsIAtom; - #[link_name = "?onremoteheld@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onremoteheld@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onremoteheld: *mut nsIAtom; - #[link_name = "?onremoteresumed@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onremoteresumed@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onremoteresumed: *mut nsIAtom; - #[link_name = "?onresourcetimingbufferfull@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onresourcetimingbufferfull@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onresourcetimingbufferfull: *mut nsIAtom; - #[link_name = "?onretrieving@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onretrieving@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onretrieving: *mut nsIAtom; - #[link_name = "?onRequest@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onRequest@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onRequest: *mut nsIAtom; - #[link_name = "?onrequestmediaplaystatus@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onrequestmediaplaystatus@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onrequestmediaplaystatus: *mut nsIAtom; - #[link_name = "?onreset@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onreset@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onreset: *mut nsIAtom; - #[link_name = "?onresuming@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onresuming@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onresuming: *mut nsIAtom; - #[link_name = "?onresize@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onresize@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onresize: *mut nsIAtom; - #[link_name = "?onrtchange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onrtchange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onrtchange: *mut nsIAtom; - #[link_name = "?onscanningstatechanged@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onscanningstatechanged@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onscanningstatechanged: *mut nsIAtom; - #[link_name = "?onscostatuschanged@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onscostatuschanged@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onscostatuschanged: *mut nsIAtom; - #[link_name = "?onscroll@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onscroll@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onscroll: *mut nsIAtom; - #[link_name = "?onselect@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onselect@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onselect: *mut nsIAtom; - #[link_name = "?onselectionchange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onselectionchange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onselectionchange: *mut nsIAtom; - #[link_name = "?onselectstart@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onselectstart@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onselectstart: *mut nsIAtom; - #[link_name = "?onsending@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onsending@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onsending: *mut nsIAtom; - #[link_name = "?onsent@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onsent@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onsent: *mut nsIAtom; - #[link_name = "?onset@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onset@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onset: *mut nsIAtom; - #[link_name = "?onshow@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onshow@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onshow: *mut nsIAtom; - #[link_name = "?onshutter@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onshutter@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onshutter: *mut nsIAtom; - #[link_name = "?onstatechange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onstatechange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onstatechange: *mut nsIAtom; - #[link_name = "?onstatuschanged@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onstatuschanged@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onstatuschanged: *mut nsIAtom; - #[link_name = "?onstkcommand@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onstkcommand@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onstkcommand: *mut nsIAtom; - #[link_name = "?onstksessionend@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onstksessionend@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onstksessionend: *mut nsIAtom; - #[link_name = "?onstorage@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onstorage@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onstorage: *mut nsIAtom; - #[link_name = "?onstorageareachanged@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onstorageareachanged@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onstorageareachanged: *mut nsIAtom; - #[link_name = "?onsubmit@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onsubmit@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onsubmit: *mut nsIAtom; - #[link_name = "?onsuccess@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onsuccess@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onsuccess: *mut nsIAtom; - #[link_name = "?ontypechange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ontypechange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ontypechange: *mut nsIAtom; - #[link_name = "?onterminate@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onterminate@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onterminate: *mut nsIAtom; - #[link_name = "?ontext@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ontext@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ontext: *mut nsIAtom; - #[link_name = "?ontoggle@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ontoggle@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ontoggle: *mut nsIAtom; - #[link_name = "?ontouchstart@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ontouchstart@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ontouchstart: *mut nsIAtom; - #[link_name = "?ontouchend@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ontouchend@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ontouchend: *mut nsIAtom; - #[link_name = "?ontouchmove@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ontouchmove@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ontouchmove: *mut nsIAtom; - #[link_name = "?ontouchcancel@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ontouchcancel@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ontouchcancel: *mut nsIAtom; - #[link_name = "?ontransitionend@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ontransitionend@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ontransitionend: *mut nsIAtom; - #[link_name = "?onunderflow@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onunderflow@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onunderflow: *mut nsIAtom; - #[link_name = "?onunload@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onunload@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onunload: *mut nsIAtom; - #[link_name = "?onupdatefound@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onupdatefound@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onupdatefound: *mut nsIAtom; - #[link_name = "?onupdateready@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onupdateready@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onupdateready: *mut nsIAtom; - #[link_name = "?onupgradeneeded@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onupgradeneeded@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onupgradeneeded: *mut nsIAtom; - #[link_name = "?onussdreceived@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onussdreceived@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onussdreceived: *mut nsIAtom; - #[link_name = "?onversionchange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onversionchange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onversionchange: *mut nsIAtom; - #[link_name = "?onvoicechange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onvoicechange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onvoicechange: *mut nsIAtom; - #[link_name = "?onvoiceschanged@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onvoiceschanged@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onvoiceschanged: *mut nsIAtom; - #[link_name = "?onvrdisplayconnect@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onvrdisplayconnect@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onvrdisplayconnect: *mut nsIAtom; - #[link_name = "?onvrdisplaydisconnect@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onvrdisplaydisconnect@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onvrdisplaydisconnect: *mut nsIAtom; - #[link_name = "?onvrdisplaypresentchange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onvrdisplaypresentchange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onvrdisplaypresentchange: *mut nsIAtom; - #[link_name = "?onwebkitAnimationEnd@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onwebkitAnimationEnd@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onwebkitAnimationEnd: *mut nsIAtom; - #[link_name = "?onwebkitAnimationIteration@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onwebkitAnimationIteration@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onwebkitAnimationIteration: *mut nsIAtom; - #[link_name = "?onwebkitAnimationStart@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onwebkitAnimationStart@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onwebkitAnimationStart: *mut nsIAtom; - #[link_name = "?onwebkitTransitionEnd@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onwebkitTransitionEnd@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onwebkitTransitionEnd: *mut nsIAtom; - #[link_name = "?onwebkitanimationend@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onwebkitanimationend@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onwebkitanimationend: *mut nsIAtom; - #[link_name = "?onwebkitanimationiteration@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onwebkitanimationiteration@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onwebkitanimationiteration: *mut nsIAtom; - #[link_name = "?onwebkitanimationstart@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onwebkitanimationstart@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onwebkitanimationstart: *mut nsIAtom; - #[link_name = "?onwebkittransitionend@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onwebkittransitionend@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onwebkittransitionend: *mut nsIAtom; - #[link_name = "?onwebsocket@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onwebsocket@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onwebsocket: *mut nsIAtom; - #[link_name = "?onwheel@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onwheel@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onwheel: *mut nsIAtom; - #[link_name = "?open@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?open@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_open: *mut nsIAtom; - #[link_name = "?optgroup@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?optgroup@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_optgroup: *mut nsIAtom; - #[link_name = "?optimum@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?optimum@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_optimum: *mut nsIAtom; - #[link_name = "?option@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?option@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_option: *mut nsIAtom; - #[link_name = "?_or@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_or@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__or: *mut nsIAtom; - #[link_name = "?order@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?order@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_order: *mut nsIAtom; - #[link_name = "?ordinal@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ordinal@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ordinal: *mut nsIAtom; - #[link_name = "?orient@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?orient@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_orient: *mut nsIAtom; - #[link_name = "?orientation@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?orientation@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_orientation: *mut nsIAtom; - #[link_name = "?otherwise@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?otherwise@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_otherwise: *mut nsIAtom; - #[link_name = "?output@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?output@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_output: *mut nsIAtom; - #[link_name = "?overflow@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?overflow@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_overflow: *mut nsIAtom; - #[link_name = "?overflowchanged@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?overflowchanged@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_overflowchanged: *mut nsIAtom; - #[link_name = "?overlay@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?overlay@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_overlay: *mut nsIAtom; - #[link_name = "?overlap@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?overlap@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_overlap: *mut nsIAtom; - #[link_name = "?p@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?p@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_p: *mut nsIAtom; - #[link_name = "?pack@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?pack@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_pack: *mut nsIAtom; - #[link_name = "?page@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?page@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_page: *mut nsIAtom; - #[link_name = "?pageincrement@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?pageincrement@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_pageincrement: *mut nsIAtom; - #[link_name = "?pagex@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?pagex@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_pagex: *mut nsIAtom; - #[link_name = "?pagey@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?pagey@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_pagey: *mut nsIAtom; - #[link_name = "?paint_order@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?paint_order@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_paint_order: *mut nsIAtom; - #[link_name = "?palettename@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?palettename@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_palettename: *mut nsIAtom; - #[link_name = "?panel@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?panel@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_panel: *mut nsIAtom; - #[link_name = "?param@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?param@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_param: *mut nsIAtom; - #[link_name = "?parameter@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?parameter@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_parameter: *mut nsIAtom; - #[link_name = "?parent@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?parent@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_parent: *mut nsIAtom; - #[link_name = "?parentapp@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?parentapp@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_parentapp: *mut nsIAtom; - #[link_name = "?parentfocused@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?parentfocused@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_parentfocused: *mut nsIAtom; - #[link_name = "?parsetype@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?parsetype@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_parsetype: *mut nsIAtom; - #[link_name = "?password@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?password@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_password: *mut nsIAtom; - #[link_name = "?pattern@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?pattern@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_pattern: *mut nsIAtom; - #[link_name = "?patternSeparator@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?patternSeparator@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_patternSeparator: *mut nsIAtom; - #[link_name = "?perMille@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?perMille@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_perMille: *mut nsIAtom; - #[link_name = "?percent@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?percent@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_percent: *mut nsIAtom; - #[link_name = "?persist@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?persist@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_persist: *mut nsIAtom; - #[link_name = "?phase@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?phase@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_phase: *mut nsIAtom; - #[link_name = "?picture@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?picture@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_picture: *mut nsIAtom; - #[link_name = "?ping@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ping@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ping: *mut nsIAtom; - #[link_name = "?pinned@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?pinned@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_pinned: *mut nsIAtom; - #[link_name = "?placeholder@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?placeholder@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_placeholder: *mut nsIAtom; - #[link_name = "?plaintext@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?plaintext@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_plaintext: *mut nsIAtom; - #[link_name = "?playbackrate@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?playbackrate@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_playbackrate: *mut nsIAtom; - #[link_name = "?pointSize@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?pointSize@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_pointSize: *mut nsIAtom; - #[link_name = "?pointerlockchange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?pointerlockchange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_pointerlockchange: *mut nsIAtom; - #[link_name = "?pointerlockerror@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?pointerlockerror@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_pointerlockerror: *mut nsIAtom; - #[link_name = "?poly@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?poly@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_poly: *mut nsIAtom; - #[link_name = "?polygon@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?polygon@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_polygon: *mut nsIAtom; - #[link_name = "?popup@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?popup@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_popup: *mut nsIAtom; - #[link_name = "?popupalign@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?popupalign@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_popupalign: *mut nsIAtom; - #[link_name = "?popupanchor@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?popupanchor@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_popupanchor: *mut nsIAtom; - #[link_name = "?popupgroup@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?popupgroup@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_popupgroup: *mut nsIAtom; - #[link_name = "?popuphidden@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?popuphidden@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_popuphidden: *mut nsIAtom; - #[link_name = "?popuphiding@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?popuphiding@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_popuphiding: *mut nsIAtom; - #[link_name = "?popupset@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?popupset@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_popupset: *mut nsIAtom; - #[link_name = "?popupshowing@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?popupshowing@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_popupshowing: *mut nsIAtom; - #[link_name = "?popupshown@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?popupshown@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_popupshown: *mut nsIAtom; - #[link_name = "?popupsinherittooltip@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?popupsinherittooltip@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_popupsinherittooltip: *mut nsIAtom; - #[link_name = "?position@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?position@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_position: *mut nsIAtom; - #[link_name = "?poster@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?poster@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_poster: *mut nsIAtom; - #[link_name = "?pre@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?pre@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_pre: *mut nsIAtom; - #[link_name = "?preceding@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?preceding@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_preceding: *mut nsIAtom; - #[link_name = "?precedingSibling@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?precedingSibling@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_precedingSibling: *mut nsIAtom; - #[link_name = "?predicate@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?predicate@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_predicate: *mut nsIAtom; - #[link_name = "?prefix@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?prefix@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_prefix: *mut nsIAtom; - #[link_name = "?preload@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?preload@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_preload: *mut nsIAtom; - #[link_name = "?prerendered@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?prerendered@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_prerendered: *mut nsIAtom; - #[link_name = "?mozpresentation@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mozpresentation@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mozpresentation: *mut nsIAtom; - #[link_name = "?preserve@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?preserve@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_preserve: *mut nsIAtom; - #[link_name = "?preserveSpace@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?preserveSpace@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_preserveSpace: *mut nsIAtom; - #[link_name = "?preventdefault@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?preventdefault@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_preventdefault: *mut nsIAtom; - #[link_name = "?primary@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?primary@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_primary: *mut nsIAtom; - #[link_name = "?print@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?print@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_print: *mut nsIAtom; - #[link_name = "?priority@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?priority@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_priority: *mut nsIAtom; - #[link_name = "?processingInstruction@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?processingInstruction@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_processingInstruction: *mut nsIAtom; - #[link_name = "?profile@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?profile@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_profile: *mut nsIAtom; - #[link_name = "?progress@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?progress@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_progress: *mut nsIAtom; - #[link_name = "?progressmeter@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?progressmeter@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_progressmeter: *mut nsIAtom; - #[link_name = "?progressNormal@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?progressNormal@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_progressNormal: *mut nsIAtom; - #[link_name = "?progressUndetermined@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?progressUndetermined@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_progressUndetermined: *mut nsIAtom; - #[link_name = "?projection@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?projection@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_projection: *mut nsIAtom; - #[link_name = "?prompt@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?prompt@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_prompt: *mut nsIAtom; - #[link_name = "?propagate@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?propagate@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_propagate: *mut nsIAtom; - #[link_name = "?properties@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?properties@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_properties: *mut nsIAtom; - #[link_name = "?property@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?property@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_property: *mut nsIAtom; - #[link_name = "?pubdate@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?pubdate@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_pubdate: *mut nsIAtom; - #[link_name = "?q@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?q@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_q: *mut nsIAtom; - #[link_name = "?query@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?query@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_query: *mut nsIAtom; - #[link_name = "?queryset@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?queryset@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_queryset: *mut nsIAtom; - #[link_name = "?querytype@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?querytype@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_querytype: *mut nsIAtom; - #[link_name = "?radio@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?radio@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_radio: *mut nsIAtom; - #[link_name = "?radiogroup@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?radiogroup@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_radiogroup: *mut nsIAtom; - #[link_name = "?range@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?range@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_range: *mut nsIAtom; - #[link_name = "?readonly@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?readonly@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_readonly: *mut nsIAtom; - #[link_name = "?rect@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rect@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rect: *mut nsIAtom; - #[link_name = "?rectangle@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rectangle@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rectangle: *mut nsIAtom; - #[link_name = "?ref@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ref@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ref: *mut nsIAtom; - #[link_name = "?refresh@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?refresh@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_refresh: *mut nsIAtom; - #[link_name = "?rel@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rel@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rel: *mut nsIAtom; - #[link_name = "?onreloadpage@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onreloadpage@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onreloadpage: *mut nsIAtom; - #[link_name = "?rem@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rem@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rem: *mut nsIAtom; - #[link_name = "?removeelement@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?removeelement@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_removeelement: *mut nsIAtom; - #[link_name = "?renderingobserverlist@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?renderingobserverlist@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_renderingobserverlist: *mut nsIAtom; - #[link_name = "?repeat@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?repeat@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_repeat: *mut nsIAtom; - #[link_name = "?replace@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?replace@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_replace: *mut nsIAtom; - #[link_name = "?required@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?required@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_required: *mut nsIAtom; - #[link_name = "?reserved@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?reserved@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_reserved: *mut nsIAtom; - #[link_name = "?reset@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?reset@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_reset: *mut nsIAtom; - #[link_name = "?resizeafter@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?resizeafter@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_resizeafter: *mut nsIAtom; - #[link_name = "?resizebefore@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?resizebefore@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_resizebefore: *mut nsIAtom; - #[link_name = "?resizer@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?resizer@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_resizer: *mut nsIAtom; - #[link_name = "?resolution@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?resolution@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_resolution: *mut nsIAtom; - #[link_name = "?resource@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?resource@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_resource: *mut nsIAtom; - #[link_name = "?resources@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?resources@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_resources: *mut nsIAtom; - #[link_name = "?result@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?result@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_result: *mut nsIAtom; - #[link_name = "?resultPrefix@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?resultPrefix@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_resultPrefix: *mut nsIAtom; - #[link_name = "?retargetdocumentfocus@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?retargetdocumentfocus@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_retargetdocumentfocus: *mut nsIAtom; - #[link_name = "?rev@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rev@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rev: *mut nsIAtom; - #[link_name = "?reverse@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?reverse@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_reverse: *mut nsIAtom; - #[link_name = "?reversed@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?reversed@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_reversed: *mut nsIAtom; - #[link_name = "?richlistbox@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?richlistbox@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_richlistbox: *mut nsIAtom; - #[link_name = "?richlistitem@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?richlistitem@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_richlistitem: *mut nsIAtom; - #[link_name = "?right@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?right@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_right: *mut nsIAtom; - #[link_name = "?rightmargin@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rightmargin@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rightmargin: *mut nsIAtom; - #[link_name = "?rightpadding@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rightpadding@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rightpadding: *mut nsIAtom; - #[link_name = "?role@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?role@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_role: *mut nsIAtom; - #[link_name = "?rolluponmousewheel@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rolluponmousewheel@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rolluponmousewheel: *mut nsIAtom; - #[link_name = "?round@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?round@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_round: *mut nsIAtom; - #[link_name = "?row@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?row@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_row: *mut nsIAtom; - #[link_name = "?rows@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rows@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rows: *mut nsIAtom; - #[link_name = "?rowspan@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rowspan@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rowspan: *mut nsIAtom; - #[link_name = "?rb@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rb@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rb: *mut nsIAtom; - #[link_name = "?rp@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rp@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rp: *mut nsIAtom; - #[link_name = "?rt@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rt@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rt: *mut nsIAtom; - #[link_name = "?rtc@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rtc@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rtc: *mut nsIAtom; - #[link_name = "?rtl@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rtl@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rtl: *mut nsIAtom; - #[link_name = "?ruby@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ruby@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ruby: *mut nsIAtom; - #[link_name = "?rubyBase@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rubyBase@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rubyBase: *mut nsIAtom; - #[link_name = "?rubyBaseContainer@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rubyBaseContainer@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rubyBaseContainer: *mut nsIAtom; - #[link_name = "?rubyText@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rubyText@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rubyText: *mut nsIAtom; - #[link_name = "?rubyTextContainer@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rubyTextContainer@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rubyTextContainer: *mut nsIAtom; - #[link_name = "?rule@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rule@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rule: *mut nsIAtom; - #[link_name = "?rules@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rules@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rules: *mut nsIAtom; - #[link_name = "?s@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?s@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_s: *mut nsIAtom; - #[link_name = "?samp@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?samp@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_samp: *mut nsIAtom; - #[link_name = "?sandbox@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?sandbox@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_sandbox: *mut nsIAtom; - #[link_name = "?sbattr@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?sbattr@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_sbattr: *mut nsIAtom; - #[link_name = "?scale@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?scale@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_scale: *mut nsIAtom; - #[link_name = "?scan@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?scan@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_scan: *mut nsIAtom; - #[link_name = "?scheme@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?scheme@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_scheme: *mut nsIAtom; - #[link_name = "?scope@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?scope@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_scope: *mut nsIAtom; - #[link_name = "?scoped@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?scoped@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_scoped: *mut nsIAtom; - #[link_name = "?screen@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?screen@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_screen: *mut nsIAtom; - #[link_name = "?screenX@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?screenX@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_screenX: *mut nsIAtom; - #[link_name = "?screenY@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?screenY@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_screenY: *mut nsIAtom; - #[link_name = "?script@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?script@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_script: *mut nsIAtom; - #[link_name = "?scriptEnabledBeforePrintOrPreview@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?scriptEnabledBeforePrintOrPreview@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_scriptEnabledBeforePrintOrPreview: *mut nsIAtom; - #[link_name = "?scrollbar@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?scrollbar@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_scrollbar: *mut nsIAtom; - #[link_name = "?scrollbarbutton@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?scrollbarbutton@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_scrollbarbutton: *mut nsIAtom; - #[link_name = "?scrollbarDownBottom@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?scrollbarDownBottom@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_scrollbarDownBottom: *mut nsIAtom; - #[link_name = "?scrollbarDownTop@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?scrollbarDownTop@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_scrollbarDownTop: *mut nsIAtom; - #[link_name = "?scrollbarUpBottom@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?scrollbarUpBottom@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_scrollbarUpBottom: *mut nsIAtom; - #[link_name = "?scrollbarUpTop@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?scrollbarUpTop@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_scrollbarUpTop: *mut nsIAtom; - #[link_name = "?scrollbox@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?scrollbox@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_scrollbox: *mut nsIAtom; - #[link_name = "?scrollcorner@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?scrollcorner@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_scrollcorner: *mut nsIAtom; - #[link_name = "?scrolling@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?scrolling@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_scrolling: *mut nsIAtom; - #[link_name = "?section@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?section@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_section: *mut nsIAtom; - #[link_name = "?select@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?select@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_select: *mut nsIAtom; - #[link_name = "?selectable@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?selectable@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_selectable: *mut nsIAtom; - #[link_name = "?selected@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?selected@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_selected: *mut nsIAtom; - #[link_name = "?selectedIndex@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?selectedIndex@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_selectedIndex: *mut nsIAtom; - #[link_name = "?selectedindex@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?selectedindex@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_selectedindex: *mut nsIAtom; - #[link_name = "?self@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?self@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_self: *mut nsIAtom; - #[link_name = "?seltype@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?seltype@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_seltype: *mut nsIAtom; - #[link_name = "?setcookie@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?setcookie@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_setcookie: *mut nsIAtom; - #[link_name = "?setter@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?setter@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_setter: *mut nsIAtom; - #[link_name = "?shape@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?shape@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_shape: *mut nsIAtom; - #[link_name = "?show@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?show@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_show: *mut nsIAtom; - #[link_name = "?showcaret@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?showcaret@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_showcaret: *mut nsIAtom; - #[link_name = "?showresizer@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?showresizer@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_showresizer: *mut nsIAtom; - #[link_name = "?simple@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?simple@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_simple: *mut nsIAtom; - #[link_name = "?single@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?single@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_single: *mut nsIAtom; - #[link_name = "?size@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?size@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_size: *mut nsIAtom; - #[link_name = "?sizes@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?sizes@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_sizes: *mut nsIAtom; - #[link_name = "?sizemode@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?sizemode@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_sizemode: *mut nsIAtom; - #[link_name = "?sizetopopup@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?sizetopopup@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_sizetopopup: *mut nsIAtom; - #[link_name = "?slider@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?slider@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_slider: *mut nsIAtom; - #[link_name = "?small@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?small@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_small: *mut nsIAtom; - #[link_name = "?smooth@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?smooth@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_smooth: *mut nsIAtom; - #[link_name = "?snap@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?snap@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_snap: *mut nsIAtom; - #[link_name = "?sort@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?sort@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_sort: *mut nsIAtom; - #[link_name = "?sortActive@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?sortActive@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_sortActive: *mut nsIAtom; - #[link_name = "?sortDirection@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?sortDirection@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_sortDirection: *mut nsIAtom; - #[link_name = "?sorted@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?sorted@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_sorted: *mut nsIAtom; - #[link_name = "?sorthints@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?sorthints@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_sorthints: *mut nsIAtom; - #[link_name = "?sortLocked@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?sortLocked@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_sortLocked: *mut nsIAtom; - #[link_name = "?sortResource@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?sortResource@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_sortResource: *mut nsIAtom; - #[link_name = "?sortResource2@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?sortResource2@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_sortResource2: *mut nsIAtom; - #[link_name = "?sortSeparators@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?sortSeparators@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_sortSeparators: *mut nsIAtom; - #[link_name = "?sortStaticsLast@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?sortStaticsLast@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_sortStaticsLast: *mut nsIAtom; - #[link_name = "?source@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?source@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_source: *mut nsIAtom; - #[link_name = "?space@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?space@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_space: *mut nsIAtom; - #[link_name = "?spacer@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?spacer@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_spacer: *mut nsIAtom; - #[link_name = "?span@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?span@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_span: *mut nsIAtom; - #[link_name = "?spellcheck@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?spellcheck@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_spellcheck: *mut nsIAtom; - #[link_name = "?spinner@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?spinner@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_spinner: *mut nsIAtom; - #[link_name = "?split@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?split@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_split: *mut nsIAtom; - #[link_name = "?splitmenu@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?splitmenu@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_splitmenu: *mut nsIAtom; - #[link_name = "?splitter@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?splitter@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_splitter: *mut nsIAtom; - #[link_name = "?spring@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?spring@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_spring: *mut nsIAtom; - #[link_name = "?src@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?src@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_src: *mut nsIAtom; - #[link_name = "?srcdoc@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?srcdoc@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_srcdoc: *mut nsIAtom; - #[link_name = "?srclang@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?srclang@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_srclang: *mut nsIAtom; - #[link_name = "?srcset@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?srcset@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_srcset: *mut nsIAtom; - #[link_name = "?stack@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?stack@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_stack: *mut nsIAtom; - #[link_name = "?standalone@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?standalone@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_standalone: *mut nsIAtom; - #[link_name = "?standby@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?standby@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_standby: *mut nsIAtom; - #[link_name = "?start@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?start@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_start: *mut nsIAtom; - #[link_name = "?start_after@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?start_after@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_start_after: *mut nsIAtom; - #[link_name = "?start_before@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?start_before@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_start_before: *mut nsIAtom; - #[link_name = "?startsWith@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?startsWith@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_startsWith: *mut nsIAtom; - #[link_name = "?state@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?state@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_state: *mut nsIAtom; - #[link_name = "?statedatasource@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?statedatasource@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_statedatasource: *mut nsIAtom; - #[link_name = "?staticHint@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?staticHint@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_staticHint: *mut nsIAtom; - #[link_name = "?statusbar@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?statusbar@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_statusbar: *mut nsIAtom; - #[link_name = "?statustext@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?statustext@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_statustext: *mut nsIAtom; - #[link_name = "?step@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?step@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_step: *mut nsIAtom; - #[link_name = "?stop@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?stop@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_stop: *mut nsIAtom; - #[link_name = "?stretch@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?stretch@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_stretch: *mut nsIAtom; - #[link_name = "?strike@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?strike@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_strike: *mut nsIAtom; - #[link_name = "?string@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?string@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_string: *mut nsIAtom; - #[link_name = "?stringLength@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?stringLength@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_stringLength: *mut nsIAtom; - #[link_name = "?stripSpace@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?stripSpace@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_stripSpace: *mut nsIAtom; - #[link_name = "?strong@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?strong@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_strong: *mut nsIAtom; - #[link_name = "?style@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?style@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_style: *mut nsIAtom; - #[link_name = "?stylesheet@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?stylesheet@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_stylesheet: *mut nsIAtom; - #[link_name = "?stylesheetPrefix@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?stylesheetPrefix@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_stylesheetPrefix: *mut nsIAtom; - #[link_name = "?subject@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?subject@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_subject: *mut nsIAtom; - #[link_name = "?submit@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?submit@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_submit: *mut nsIAtom; - #[link_name = "?substate@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?substate@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_substate: *mut nsIAtom; - #[link_name = "?substring@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?substring@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_substring: *mut nsIAtom; - #[link_name = "?substringAfter@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?substringAfter@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_substringAfter: *mut nsIAtom; - #[link_name = "?substringBefore@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?substringBefore@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_substringBefore: *mut nsIAtom; - #[link_name = "?sub@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?sub@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_sub: *mut nsIAtom; - #[link_name = "?sum@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?sum@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_sum: *mut nsIAtom; - #[link_name = "?sup@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?sup@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_sup: *mut nsIAtom; - #[link_name = "?summary@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?summary@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_summary: *mut nsIAtom; - #[link_name = "?systemProperty@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?systemProperty@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_systemProperty: *mut nsIAtom; - #[link_name = "?tab@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?tab@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_tab: *mut nsIAtom; - #[link_name = "?tabbox@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?tabbox@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_tabbox: *mut nsIAtom; - #[link_name = "?tabindex@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?tabindex@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_tabindex: *mut nsIAtom; - #[link_name = "?table@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?table@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_table: *mut nsIAtom; - #[link_name = "?tabpanel@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?tabpanel@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_tabpanel: *mut nsIAtom; - #[link_name = "?tabpanels@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?tabpanels@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_tabpanels: *mut nsIAtom; - #[link_name = "?tag@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?tag@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_tag: *mut nsIAtom; - #[link_name = "?target@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?target@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_target: *mut nsIAtom; - #[link_name = "?targets@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?targets@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_targets: *mut nsIAtom; - #[link_name = "?tbody@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?tbody@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_tbody: *mut nsIAtom; - #[link_name = "?td@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?td@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_td: *mut nsIAtom; - #[link_name = "?_template@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_template@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__template: *mut nsIAtom; - #[link_name = "?text_decoration@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?text_decoration@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_text_decoration: *mut nsIAtom; - #[link_name = "?terminate@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?terminate@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_terminate: *mut nsIAtom; - #[link_name = "?test@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?test@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_test: *mut nsIAtom; - #[link_name = "?text@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?text@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_text: *mut nsIAtom; - #[link_name = "?textAlign@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?textAlign@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_textAlign: *mut nsIAtom; - #[link_name = "?textarea@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?textarea@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_textarea: *mut nsIAtom; - #[link_name = "?textbox@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?textbox@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_textbox: *mut nsIAtom; - #[link_name = "?textnode@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?textnode@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_textnode: *mut nsIAtom; - #[link_name = "?textNodeDirectionalityMap@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?textNodeDirectionalityMap@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_textNodeDirectionalityMap: *mut nsIAtom; - #[link_name = "?tfoot@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?tfoot@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_tfoot: *mut nsIAtom; - #[link_name = "?th@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?th@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_th: *mut nsIAtom; - #[link_name = "?thead@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?thead@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_thead: *mut nsIAtom; - #[link_name = "?thumb@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?thumb@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_thumb: *mut nsIAtom; - #[link_name = "?time@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?time@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_time: *mut nsIAtom; - #[link_name = "?title@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?title@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_title: *mut nsIAtom; - #[link_name = "?titlebar@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?titlebar@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_titlebar: *mut nsIAtom; - #[link_name = "?titletip@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?titletip@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_titletip: *mut nsIAtom; - #[link_name = "?toggled@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?toggled@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_toggled: *mut nsIAtom; - #[link_name = "?token@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?token@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_token: *mut nsIAtom; - #[link_name = "?tokenize@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?tokenize@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_tokenize: *mut nsIAtom; - #[link_name = "?toolbar@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?toolbar@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_toolbar: *mut nsIAtom; - #[link_name = "?toolbarbutton@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?toolbarbutton@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_toolbarbutton: *mut nsIAtom; - #[link_name = "?toolbaritem@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?toolbaritem@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_toolbaritem: *mut nsIAtom; - #[link_name = "?toolbox@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?toolbox@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_toolbox: *mut nsIAtom; - #[link_name = "?tooltip@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?tooltip@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_tooltip: *mut nsIAtom; - #[link_name = "?tooltiptext@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?tooltiptext@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_tooltiptext: *mut nsIAtom; - #[link_name = "?top@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?top@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_top: *mut nsIAtom; - #[link_name = "?topleft@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?topleft@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_topleft: *mut nsIAtom; - #[link_name = "?topmargin@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?topmargin@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_topmargin: *mut nsIAtom; - #[link_name = "?toppadding@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?toppadding@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_toppadding: *mut nsIAtom; - #[link_name = "?topright@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?topright@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_topright: *mut nsIAtom; - #[link_name = "?tr@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?tr@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_tr: *mut nsIAtom; - #[link_name = "?track@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?track@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_track: *mut nsIAtom; - #[link_name = "?trailing@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?trailing@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_trailing: *mut nsIAtom; - #[link_name = "?transform@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?transform@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_transform: *mut nsIAtom; - #[link_name = "?transform_3d@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?transform_3d@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_transform_3d: *mut nsIAtom; - #[link_name = "?transformiix@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?transformiix@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_transformiix: *mut nsIAtom; - #[link_name = "?translate@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?translate@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_translate: *mut nsIAtom; - #[link_name = "?transparent@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?transparent@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_transparent: *mut nsIAtom; - #[link_name = "?tree@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?tree@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_tree: *mut nsIAtom; - #[link_name = "?treecell@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?treecell@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_treecell: *mut nsIAtom; - #[link_name = "?treechildren@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?treechildren@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_treechildren: *mut nsIAtom; - #[link_name = "?treecol@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?treecol@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_treecol: *mut nsIAtom; - #[link_name = "?treecolpicker@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?treecolpicker@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_treecolpicker: *mut nsIAtom; - #[link_name = "?treecols@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?treecols@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_treecols: *mut nsIAtom; - #[link_name = "?treeitem@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?treeitem@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_treeitem: *mut nsIAtom; - #[link_name = "?treerow@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?treerow@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_treerow: *mut nsIAtom; - #[link_name = "?treeseparator@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?treeseparator@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_treeseparator: *mut nsIAtom; - #[link_name = "?triple@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?triple@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_triple: *mut nsIAtom; - #[link_name = "?_true@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_true@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__true: *mut nsIAtom; - #[link_name = "?tt@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?tt@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_tt: *mut nsIAtom; - #[link_name = "?tty@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?tty@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_tty: *mut nsIAtom; - #[link_name = "?tv@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?tv@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_tv: *mut nsIAtom; - #[link_name = "?type@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?type@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_type: *mut nsIAtom; - #[link_name = "?typemustmatch@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?typemustmatch@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_typemustmatch: *mut nsIAtom; - #[link_name = "?u@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?u@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_u: *mut nsIAtom; - #[link_name = "?ul@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ul@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ul: *mut nsIAtom; - #[link_name = "?underflow@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?underflow@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_underflow: *mut nsIAtom; - #[link_name = "?undetermined@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?undetermined@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_undetermined: *mut nsIAtom; - #[link_name = "?undoscope@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?undoscope@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_undoscope: *mut nsIAtom; - #[link_name = "?unload@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?unload@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_unload: *mut nsIAtom; - #[link_name = "?unparsedEntityUri@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?unparsedEntityUri@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_unparsedEntityUri: *mut nsIAtom; - #[link_name = "?upperFirst@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?upperFirst@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_upperFirst: *mut nsIAtom; - #[link_name = "?uri@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?uri@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_uri: *mut nsIAtom; - #[link_name = "?use@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?use@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_use: *mut nsIAtom; - #[link_name = "?useAttributeSets@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?useAttributeSets@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_useAttributeSets: *mut nsIAtom; - #[link_name = "?usemap@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?usemap@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_usemap: *mut nsIAtom; - #[link_name = "?user_scalable@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?user_scalable@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_user_scalable: *mut nsIAtom; - #[link_name = "?userInput@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?userInput@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_userInput: *mut nsIAtom; - #[link_name = "?validate@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?validate@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_validate: *mut nsIAtom; - #[link_name = "?valign@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?valign@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_valign: *mut nsIAtom; - #[link_name = "?value@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?value@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_value: *mut nsIAtom; - #[link_name = "?values@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?values@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_values: *mut nsIAtom; - #[link_name = "?valueOf@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?valueOf@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_valueOf: *mut nsIAtom; - #[link_name = "?valuetype@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?valuetype@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_valuetype: *mut nsIAtom; - #[link_name = "?var@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?var@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_var: *mut nsIAtom; - #[link_name = "?variable@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?variable@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_variable: *mut nsIAtom; - #[link_name = "?vbox@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?vbox@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_vbox: *mut nsIAtom; - #[link_name = "?vcard_name@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?vcard_name@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_vcard_name: *mut nsIAtom; - #[link_name = "?vendor@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?vendor@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_vendor: *mut nsIAtom; - #[link_name = "?vendorUrl@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?vendorUrl@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_vendorUrl: *mut nsIAtom; - #[link_name = "?version@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?version@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_version: *mut nsIAtom; - #[link_name = "?vert@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?vert@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_vert: *mut nsIAtom; - #[link_name = "?vertical@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?vertical@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_vertical: *mut nsIAtom; - #[link_name = "?audio@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?audio@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_audio: *mut nsIAtom; - #[link_name = "?video@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?video@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_video: *mut nsIAtom; - #[link_name = "?videocontrols@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?videocontrols@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_videocontrols: *mut nsIAtom; - #[link_name = "?viewport@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?viewport@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_viewport: *mut nsIAtom; - #[link_name = "?viewport_height@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?viewport_height@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_viewport_height: *mut nsIAtom; - #[link_name = "?viewport_initial_scale@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?viewport_initial_scale@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_viewport_initial_scale: *mut nsIAtom; - #[link_name = "?viewport_maximum_scale@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?viewport_maximum_scale@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_viewport_maximum_scale: *mut nsIAtom; - #[link_name = "?viewport_minimum_scale@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?viewport_minimum_scale@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_viewport_minimum_scale: *mut nsIAtom; - #[link_name = "?viewport_user_scalable@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?viewport_user_scalable@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_viewport_user_scalable: *mut nsIAtom; - #[link_name = "?viewport_width@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?viewport_width@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_viewport_width: *mut nsIAtom; - #[link_name = "?visibility@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?visibility@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_visibility: *mut nsIAtom; - #[link_name = "?visuallyselected@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?visuallyselected@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_visuallyselected: *mut nsIAtom; - #[link_name = "?vlink@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?vlink@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_vlink: *mut nsIAtom; - #[link_name = "?vspace@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?vspace@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_vspace: *mut nsIAtom; - #[link_name = "?wbr@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?wbr@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_wbr: *mut nsIAtom; - #[link_name = "?webkitdirectory@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?webkitdirectory@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_webkitdirectory: *mut nsIAtom; - #[link_name = "?when@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?when@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_when: *mut nsIAtom; - #[link_name = "?where@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?where@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_where: *mut nsIAtom; - #[link_name = "?widget@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?widget@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_widget: *mut nsIAtom; - #[link_name = "?width@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?width@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_width: *mut nsIAtom; - #[link_name = "?window@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?window@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_window: *mut nsIAtom; - #[link_name = "?headerWindowTarget@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?headerWindowTarget@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_headerWindowTarget: *mut nsIAtom; - #[link_name = "?windowtype@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?windowtype@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_windowtype: *mut nsIAtom; - #[link_name = "?withParam@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?withParam@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_withParam: *mut nsIAtom; - #[link_name = "?wizard@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?wizard@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_wizard: *mut nsIAtom; - #[link_name = "?wrap@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?wrap@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_wrap: *mut nsIAtom; - #[link_name = "?headerDNSPrefetchControl@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?headerDNSPrefetchControl@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_headerDNSPrefetchControl: *mut nsIAtom; - #[link_name = "?headerCSP@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?headerCSP@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_headerCSP: *mut nsIAtom; - #[link_name = "?headerCSPReportOnly@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?headerCSPReportOnly@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_headerCSPReportOnly: *mut nsIAtom; - #[link_name = "?headerXFO@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?headerXFO@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_headerXFO: *mut nsIAtom; - #[link_name = "?x_western@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?x_western@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_x_western: *mut nsIAtom; - #[link_name = "?xml@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?xml@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_xml: *mut nsIAtom; - #[link_name = "?xml_stylesheet@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?xml_stylesheet@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_xml_stylesheet: *mut nsIAtom; - #[link_name = "?xmlns@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?xmlns@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_xmlns: *mut nsIAtom; - #[link_name = "?xmp@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?xmp@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_xmp: *mut nsIAtom; - #[link_name = "?xulcontentsgenerated@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?xulcontentsgenerated@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_xulcontentsgenerated: *mut nsIAtom; - #[link_name = "?yes@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?yes@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_yes: *mut nsIAtom; - #[link_name = "?z_index@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?z_index@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_z_index: *mut nsIAtom; - #[link_name = "?zeroDigit@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?zeroDigit@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_zeroDigit: *mut nsIAtom; - #[link_name = "?percentage@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?percentage@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_percentage: *mut nsIAtom; - #[link_name = "?A@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?A@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_A: *mut nsIAtom; - #[link_name = "?alignment_baseline@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?alignment_baseline@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_alignment_baseline: *mut nsIAtom; - #[link_name = "?amplitude@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?amplitude@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_amplitude: *mut nsIAtom; - #[link_name = "?animate@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?animate@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_animate: *mut nsIAtom; - #[link_name = "?animateColor@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?animateColor@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_animateColor: *mut nsIAtom; - #[link_name = "?animateMotion@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?animateMotion@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_animateMotion: *mut nsIAtom; - #[link_name = "?animateTransform@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?animateTransform@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_animateTransform: *mut nsIAtom; - #[link_name = "?arithmetic@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?arithmetic@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_arithmetic: *mut nsIAtom; - #[link_name = "?atop@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?atop@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_atop: *mut nsIAtom; - #[link_name = "?azimuth@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?azimuth@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_azimuth: *mut nsIAtom; - #[link_name = "?B@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?B@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_B: *mut nsIAtom; - #[link_name = "?backgroundColor@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?backgroundColor@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_backgroundColor: *mut nsIAtom; - #[link_name = "?background_image@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?background_image@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_background_image: *mut nsIAtom; - #[link_name = "?baseFrequency@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?baseFrequency@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_baseFrequency: *mut nsIAtom; - #[link_name = "?baseline_shift@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?baseline_shift@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_baseline_shift: *mut nsIAtom; - #[link_name = "?bias@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?bias@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_bias: *mut nsIAtom; - #[link_name = "?caption_side@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?caption_side@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_caption_side: *mut nsIAtom; - #[link_name = "?clip_path@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?clip_path@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_clip_path: *mut nsIAtom; - #[link_name = "?clip_rule@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?clip_rule@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_clip_rule: *mut nsIAtom; - #[link_name = "?clipPath@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?clipPath@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_clipPath: *mut nsIAtom; - #[link_name = "?clipPathUnits@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?clipPathUnits@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_clipPathUnits: *mut nsIAtom; - #[link_name = "?cm@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?cm@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_cm: *mut nsIAtom; - #[link_name = "?colorBurn@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?colorBurn@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_colorBurn: *mut nsIAtom; - #[link_name = "?colorDodge@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?colorDodge@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_colorDodge: *mut nsIAtom; - #[link_name = "?colorInterpolation@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?colorInterpolation@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_colorInterpolation: *mut nsIAtom; - #[link_name = "?colorInterpolationFilters@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?colorInterpolationFilters@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_colorInterpolationFilters: *mut nsIAtom; - #[link_name = "?colorProfile@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?colorProfile@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_colorProfile: *mut nsIAtom; - #[link_name = "?cursor@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?cursor@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_cursor: *mut nsIAtom; - #[link_name = "?cx@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?cx@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_cx: *mut nsIAtom; - #[link_name = "?cy@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?cy@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_cy: *mut nsIAtom; - #[link_name = "?d@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?d@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_d: *mut nsIAtom; - #[link_name = "?darken@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?darken@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_darken: *mut nsIAtom; - #[link_name = "?defs@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?defs@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_defs: *mut nsIAtom; - #[link_name = "?deg@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?deg@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_deg: *mut nsIAtom; - #[link_name = "?desc@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?desc@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_desc: *mut nsIAtom; - #[link_name = "?diffuseConstant@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?diffuseConstant@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_diffuseConstant: *mut nsIAtom; - #[link_name = "?dilate@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?dilate@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_dilate: *mut nsIAtom; - #[link_name = "?direction@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?direction@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_direction: *mut nsIAtom; - #[link_name = "?disable@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?disable@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_disable: *mut nsIAtom; - #[link_name = "?discrete@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?discrete@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_discrete: *mut nsIAtom; - #[link_name = "?divisor@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?divisor@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_divisor: *mut nsIAtom; - #[link_name = "?dominant_baseline@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?dominant_baseline@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_dominant_baseline: *mut nsIAtom; - #[link_name = "?duplicate@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?duplicate@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_duplicate: *mut nsIAtom; - #[link_name = "?dx@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?dx@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_dx: *mut nsIAtom; - #[link_name = "?dy@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?dy@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_dy: *mut nsIAtom; - #[link_name = "?edgeMode@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?edgeMode@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_edgeMode: *mut nsIAtom; - #[link_name = "?ellipse@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ellipse@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ellipse: *mut nsIAtom; - #[link_name = "?elevation@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?elevation@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_elevation: *mut nsIAtom; - #[link_name = "?erode@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?erode@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_erode: *mut nsIAtom; - #[link_name = "?ex@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ex@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ex: *mut nsIAtom; - #[link_name = "?exact@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?exact@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_exact: *mut nsIAtom; - #[link_name = "?exclusion@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?exclusion@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_exclusion: *mut nsIAtom; - #[link_name = "?exponent@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?exponent@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_exponent: *mut nsIAtom; - #[link_name = "?feBlend@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?feBlend@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_feBlend: *mut nsIAtom; - #[link_name = "?feColorMatrix@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?feColorMatrix@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_feColorMatrix: *mut nsIAtom; - #[link_name = "?feComponentTransfer@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?feComponentTransfer@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_feComponentTransfer: *mut nsIAtom; - #[link_name = "?feComposite@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?feComposite@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_feComposite: *mut nsIAtom; - #[link_name = "?feConvolveMatrix@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?feConvolveMatrix@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_feConvolveMatrix: *mut nsIAtom; - #[link_name = "?feDiffuseLighting@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?feDiffuseLighting@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_feDiffuseLighting: *mut nsIAtom; - #[link_name = "?feDisplacementMap@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?feDisplacementMap@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_feDisplacementMap: *mut nsIAtom; - #[link_name = "?feDistantLight@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?feDistantLight@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_feDistantLight: *mut nsIAtom; - #[link_name = "?feDropShadow@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?feDropShadow@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_feDropShadow: *mut nsIAtom; - #[link_name = "?feFlood@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?feFlood@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_feFlood: *mut nsIAtom; - #[link_name = "?feFuncA@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?feFuncA@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_feFuncA: *mut nsIAtom; - #[link_name = "?feFuncB@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?feFuncB@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_feFuncB: *mut nsIAtom; - #[link_name = "?feFuncG@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?feFuncG@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_feFuncG: *mut nsIAtom; - #[link_name = "?feFuncR@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?feFuncR@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_feFuncR: *mut nsIAtom; - #[link_name = "?feGaussianBlur@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?feGaussianBlur@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_feGaussianBlur: *mut nsIAtom; - #[link_name = "?feImage@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?feImage@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_feImage: *mut nsIAtom; - #[link_name = "?feMerge@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?feMerge@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_feMerge: *mut nsIAtom; - #[link_name = "?feMergeNode@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?feMergeNode@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_feMergeNode: *mut nsIAtom; - #[link_name = "?feMorphology@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?feMorphology@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_feMorphology: *mut nsIAtom; - #[link_name = "?feOffset@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?feOffset@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_feOffset: *mut nsIAtom; - #[link_name = "?fePointLight@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?fePointLight@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_fePointLight: *mut nsIAtom; - #[link_name = "?feSpecularLighting@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?feSpecularLighting@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_feSpecularLighting: *mut nsIAtom; - #[link_name = "?feSpotLight@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?feSpotLight@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_feSpotLight: *mut nsIAtom; - #[link_name = "?feTile@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?feTile@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_feTile: *mut nsIAtom; - #[link_name = "?feTurbulence@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?feTurbulence@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_feTurbulence: *mut nsIAtom; - #[link_name = "?fill@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?fill@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_fill: *mut nsIAtom; - #[link_name = "?fill_opacity@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?fill_opacity@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_fill_opacity: *mut nsIAtom; - #[link_name = "?fill_rule@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?fill_rule@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_fill_rule: *mut nsIAtom; - #[link_name = "?filter@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?filter@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_filter: *mut nsIAtom; - #[link_name = "?filterUnits@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?filterUnits@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_filterUnits: *mut nsIAtom; - #[link_name = "?_float@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_float@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__float: *mut nsIAtom; - #[link_name = "?flood_color@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?flood_color@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_flood_color: *mut nsIAtom; - #[link_name = "?flood_opacity@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?flood_opacity@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_flood_opacity: *mut nsIAtom; - #[link_name = "?font_face@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?font_face@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_font_face: *mut nsIAtom; - #[link_name = "?font_face_format@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?font_face_format@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_font_face_format: *mut nsIAtom; - #[link_name = "?font_face_name@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?font_face_name@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_font_face_name: *mut nsIAtom; - #[link_name = "?font_face_src@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?font_face_src@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_font_face_src: *mut nsIAtom; - #[link_name = "?font_face_uri@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?font_face_uri@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_font_face_uri: *mut nsIAtom; - #[link_name = "?font_family@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?font_family@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_font_family: *mut nsIAtom; - #[link_name = "?font_size@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?font_size@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_font_size: *mut nsIAtom; - #[link_name = "?font_size_adjust@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?font_size_adjust@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_font_size_adjust: *mut nsIAtom; - #[link_name = "?font_stretch@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?font_stretch@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_font_stretch: *mut nsIAtom; - #[link_name = "?font_style@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?font_style@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_font_style: *mut nsIAtom; - #[link_name = "?font_variant@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?font_variant@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_font_variant: *mut nsIAtom; - #[link_name = "?foreignObject@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?foreignObject@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_foreignObject: *mut nsIAtom; - #[link_name = "?fractalNoise@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?fractalNoise@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_fractalNoise: *mut nsIAtom; - #[link_name = "?fx@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?fx@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_fx: *mut nsIAtom; - #[link_name = "?fy@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?fy@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_fy: *mut nsIAtom; - #[link_name = "?G@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?G@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_G: *mut nsIAtom; - #[link_name = "?g@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?g@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_g: *mut nsIAtom; - #[link_name = "?gamma@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?gamma@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_gamma: *mut nsIAtom; - #[link_name = "?generic_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?generic_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_generic_: *mut nsIAtom; - #[link_name = "?glyphRef@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?glyphRef@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_glyphRef: *mut nsIAtom; - #[link_name = "?grad@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?grad@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_grad: *mut nsIAtom; - #[link_name = "?gradientTransform@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?gradientTransform@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_gradientTransform: *mut nsIAtom; - #[link_name = "?gradientUnits@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?gradientUnits@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_gradientUnits: *mut nsIAtom; - #[link_name = "?hardLight@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?hardLight@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_hardLight: *mut nsIAtom; - #[link_name = "?hue@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?hue@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_hue: *mut nsIAtom; - #[link_name = "?hueRotate@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?hueRotate@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_hueRotate: *mut nsIAtom; - #[link_name = "?identity@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?identity@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_identity: *mut nsIAtom; - #[link_name = "?image_rendering@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?image_rendering@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_image_rendering: *mut nsIAtom; - #[link_name = "?in@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?in@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_in: *mut nsIAtom; - #[link_name = "?in2@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?in2@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_in2: *mut nsIAtom; - #[link_name = "?intercept@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?intercept@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_intercept: *mut nsIAtom; - #[link_name = "?k1@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?k1@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_k1: *mut nsIAtom; - #[link_name = "?k2@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?k2@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_k2: *mut nsIAtom; - #[link_name = "?k3@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?k3@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_k3: *mut nsIAtom; - #[link_name = "?k4@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?k4@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_k4: *mut nsIAtom; - #[link_name = "?kernelMatrix@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?kernelMatrix@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_kernelMatrix: *mut nsIAtom; - #[link_name = "?kernelUnitLength@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?kernelUnitLength@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_kernelUnitLength: *mut nsIAtom; - #[link_name = "?lengthAdjust@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?lengthAdjust@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_lengthAdjust: *mut nsIAtom; - #[link_name = "?letter_spacing@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?letter_spacing@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_letter_spacing: *mut nsIAtom; - #[link_name = "?lighten@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?lighten@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_lighten: *mut nsIAtom; - #[link_name = "?lighting_color@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?lighting_color@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_lighting_color: *mut nsIAtom; - #[link_name = "?limitingConeAngle@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?limitingConeAngle@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_limitingConeAngle: *mut nsIAtom; - #[link_name = "?linear@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?linear@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_linear: *mut nsIAtom; - #[link_name = "?linearGradient@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?linearGradient@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_linearGradient: *mut nsIAtom; - #[link_name = "?linearRGB@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?linearRGB@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_linearRGB: *mut nsIAtom; - #[link_name = "?list_style_type@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?list_style_type@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_list_style_type: *mut nsIAtom; - #[link_name = "?luminanceToAlpha@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?luminanceToAlpha@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_luminanceToAlpha: *mut nsIAtom; - #[link_name = "?luminosity@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?luminosity@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_luminosity: *mut nsIAtom; - #[link_name = "?magnify@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?magnify@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_magnify: *mut nsIAtom; - #[link_name = "?marker@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?marker@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_marker: *mut nsIAtom; - #[link_name = "?marker_end@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?marker_end@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_marker_end: *mut nsIAtom; - #[link_name = "?marker_mid@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?marker_mid@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_marker_mid: *mut nsIAtom; - #[link_name = "?marker_start@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?marker_start@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_marker_start: *mut nsIAtom; - #[link_name = "?markerHeight@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?markerHeight@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_markerHeight: *mut nsIAtom; - #[link_name = "?markerUnits@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?markerUnits@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_markerUnits: *mut nsIAtom; - #[link_name = "?markerWidth@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?markerWidth@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_markerWidth: *mut nsIAtom; - #[link_name = "?mask@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mask@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mask: *mut nsIAtom; - #[link_name = "?maskContentUnits@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?maskContentUnits@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_maskContentUnits: *mut nsIAtom; - #[link_name = "?mask_type@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mask_type@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mask_type: *mut nsIAtom; - #[link_name = "?maskUnits@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?maskUnits@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_maskUnits: *mut nsIAtom; - #[link_name = "?matrix@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?matrix@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_matrix: *mut nsIAtom; - #[link_name = "?metadata@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?metadata@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_metadata: *mut nsIAtom; - #[link_name = "?missingGlyph@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?missingGlyph@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_missingGlyph: *mut nsIAtom; - #[link_name = "?mm@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mm@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mm: *mut nsIAtom; - #[link_name = "?mpath@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mpath@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mpath: *mut nsIAtom; - #[link_name = "?noStitch@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?noStitch@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_noStitch: *mut nsIAtom; - #[link_name = "?numOctaves@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?numOctaves@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_numOctaves: *mut nsIAtom; - #[link_name = "?multiply@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?multiply@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_multiply: *mut nsIAtom; - #[link_name = "?objectBoundingBox@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?objectBoundingBox@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_objectBoundingBox: *mut nsIAtom; - #[link_name = "?offset@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?offset@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_offset: *mut nsIAtom; - #[link_name = "?onSVGLoad@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onSVGLoad@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onSVGLoad: *mut nsIAtom; - #[link_name = "?onSVGResize@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onSVGResize@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onSVGResize: *mut nsIAtom; - #[link_name = "?onSVGScroll@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onSVGScroll@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onSVGScroll: *mut nsIAtom; - #[link_name = "?onSVGUnload@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onSVGUnload@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onSVGUnload: *mut nsIAtom; - #[link_name = "?onSVGZoom@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onSVGZoom@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onSVGZoom: *mut nsIAtom; - #[link_name = "?onzoom@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onzoom@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onzoom: *mut nsIAtom; - #[link_name = "?opacity@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?opacity@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_opacity: *mut nsIAtom; - #[link_name = "?_operator@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_operator@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__operator: *mut nsIAtom; - #[link_name = "?out@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?out@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_out: *mut nsIAtom; - #[link_name = "?over@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?over@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_over: *mut nsIAtom; - #[link_name = "?overridePreserveAspectRatio@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?overridePreserveAspectRatio@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_overridePreserveAspectRatio: *mut nsIAtom; - #[link_name = "?pad@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?pad@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_pad: *mut nsIAtom; - #[link_name = "?path@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?path@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_path: *mut nsIAtom; - #[link_name = "?pathLength@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?pathLength@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_pathLength: *mut nsIAtom; - #[link_name = "?patternContentUnits@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?patternContentUnits@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_patternContentUnits: *mut nsIAtom; - #[link_name = "?patternTransform@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?patternTransform@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_patternTransform: *mut nsIAtom; - #[link_name = "?patternUnits@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?patternUnits@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_patternUnits: *mut nsIAtom; - #[link_name = "?pc@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?pc@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_pc: *mut nsIAtom; - #[link_name = "?pointer_events@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?pointer_events@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_pointer_events: *mut nsIAtom; - #[link_name = "?points@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?points@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_points: *mut nsIAtom; - #[link_name = "?pointsAtX@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?pointsAtX@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_pointsAtX: *mut nsIAtom; - #[link_name = "?pointsAtY@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?pointsAtY@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_pointsAtY: *mut nsIAtom; - #[link_name = "?pointsAtZ@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?pointsAtZ@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_pointsAtZ: *mut nsIAtom; - #[link_name = "?polyline@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?polyline@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_polyline: *mut nsIAtom; - #[link_name = "?preserveAlpha@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?preserveAlpha@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_preserveAlpha: *mut nsIAtom; - #[link_name = "?preserveAspectRatio@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?preserveAspectRatio@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_preserveAspectRatio: *mut nsIAtom; - #[link_name = "?primitiveUnits@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?primitiveUnits@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_primitiveUnits: *mut nsIAtom; - #[link_name = "?pt@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?pt@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_pt: *mut nsIAtom; - #[link_name = "?px@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?px@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_px: *mut nsIAtom; - #[link_name = "?R@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?R@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_R: *mut nsIAtom; - #[link_name = "?r@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?r@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_r: *mut nsIAtom; - #[link_name = "?rad@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rad@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rad: *mut nsIAtom; - #[link_name = "?radialGradient@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?radialGradient@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_radialGradient: *mut nsIAtom; - #[link_name = "?radius@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?radius@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_radius: *mut nsIAtom; - #[link_name = "?reflect@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?reflect@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_reflect: *mut nsIAtom; - #[link_name = "?refX@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?refX@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_refX: *mut nsIAtom; - #[link_name = "?refY@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?refY@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_refY: *mut nsIAtom; - #[link_name = "?requiredExtensions@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?requiredExtensions@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_requiredExtensions: *mut nsIAtom; - #[link_name = "?requiredFeatures@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?requiredFeatures@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_requiredFeatures: *mut nsIAtom; - #[link_name = "?rotate@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rotate@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rotate: *mut nsIAtom; - #[link_name = "?rx@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rx@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rx: *mut nsIAtom; - #[link_name = "?ry@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ry@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ry: *mut nsIAtom; - #[link_name = "?saturate@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?saturate@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_saturate: *mut nsIAtom; - #[link_name = "?saturation@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?saturation@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_saturation: *mut nsIAtom; - #[link_name = "?set@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?set@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_set: *mut nsIAtom; - #[link_name = "?seed@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?seed@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_seed: *mut nsIAtom; - #[link_name = "?shadow@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?shadow@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_shadow: *mut nsIAtom; - #[link_name = "?shape_rendering@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?shape_rendering@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_shape_rendering: *mut nsIAtom; - #[link_name = "?skewX@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?skewX@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_skewX: *mut nsIAtom; - #[link_name = "?skewY@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?skewY@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_skewY: *mut nsIAtom; - #[link_name = "?slope@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?slope@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_slope: *mut nsIAtom; - #[link_name = "?softLight@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?softLight@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_softLight: *mut nsIAtom; - #[link_name = "?spacing@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?spacing@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_spacing: *mut nsIAtom; - #[link_name = "?spacingAndGlyphs@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?spacingAndGlyphs@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_spacingAndGlyphs: *mut nsIAtom; - #[link_name = "?specularConstant@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?specularConstant@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_specularConstant: *mut nsIAtom; - #[link_name = "?specularExponent@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?specularExponent@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_specularExponent: *mut nsIAtom; - #[link_name = "?spreadMethod@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?spreadMethod@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_spreadMethod: *mut nsIAtom; - #[link_name = "?sRGB@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?sRGB@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_sRGB: *mut nsIAtom; - #[link_name = "?startOffset@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?startOffset@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_startOffset: *mut nsIAtom; - #[link_name = "?stdDeviation@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?stdDeviation@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_stdDeviation: *mut nsIAtom; - #[link_name = "?stitch@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?stitch@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_stitch: *mut nsIAtom; - #[link_name = "?stitchTiles@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?stitchTiles@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_stitchTiles: *mut nsIAtom; - #[link_name = "?stop_color@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?stop_color@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_stop_color: *mut nsIAtom; - #[link_name = "?stop_opacity@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?stop_opacity@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_stop_opacity: *mut nsIAtom; - #[link_name = "?stroke@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?stroke@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_stroke: *mut nsIAtom; - #[link_name = "?stroke_dasharray@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?stroke_dasharray@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_stroke_dasharray: *mut nsIAtom; - #[link_name = "?stroke_dashoffset@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?stroke_dashoffset@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_stroke_dashoffset: *mut nsIAtom; - #[link_name = "?stroke_linecap@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?stroke_linecap@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_stroke_linecap: *mut nsIAtom; - #[link_name = "?stroke_linejoin@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?stroke_linejoin@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_stroke_linejoin: *mut nsIAtom; - #[link_name = "?stroke_miterlimit@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?stroke_miterlimit@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_stroke_miterlimit: *mut nsIAtom; - #[link_name = "?stroke_opacity@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?stroke_opacity@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_stroke_opacity: *mut nsIAtom; - #[link_name = "?stroke_width@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?stroke_width@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_stroke_width: *mut nsIAtom; - #[link_name = "?strokeWidth@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?strokeWidth@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_strokeWidth: *mut nsIAtom; - #[link_name = "?surfaceScale@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?surfaceScale@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_surfaceScale: *mut nsIAtom; - #[link_name = "?svg@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?svg@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_svg: *mut nsIAtom; - #[link_name = "?svgContextPaint@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?svgContextPaint@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_svgContextPaint: *mut nsIAtom; - #[link_name = "?svgSwitch@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?svgSwitch@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_svgSwitch: *mut nsIAtom; - #[link_name = "?symbol@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?symbol@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_symbol: *mut nsIAtom; - #[link_name = "?systemLanguage@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?systemLanguage@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_systemLanguage: *mut nsIAtom; - #[link_name = "?tableValues@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?tableValues@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_tableValues: *mut nsIAtom; - #[link_name = "?targetX@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?targetX@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_targetX: *mut nsIAtom; - #[link_name = "?targetY@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?targetY@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_targetY: *mut nsIAtom; - #[link_name = "?text_anchor@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?text_anchor@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_text_anchor: *mut nsIAtom; - #[link_name = "?text_rendering@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?text_rendering@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_text_rendering: *mut nsIAtom; - #[link_name = "?textLength@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?textLength@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_textLength: *mut nsIAtom; - #[link_name = "?textPath@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?textPath@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_textPath: *mut nsIAtom; - #[link_name = "?tref@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?tref@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_tref: *mut nsIAtom; - #[link_name = "?tspan@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?tspan@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_tspan: *mut nsIAtom; - #[link_name = "?turbulence@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?turbulence@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_turbulence: *mut nsIAtom; - #[link_name = "?unicode_bidi@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?unicode_bidi@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_unicode_bidi: *mut nsIAtom; - #[link_name = "?userSpaceOnUse@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?userSpaceOnUse@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_userSpaceOnUse: *mut nsIAtom; - #[link_name = "?view@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?view@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_view: *mut nsIAtom; - #[link_name = "?viewBox@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?viewBox@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_viewBox: *mut nsIAtom; - #[link_name = "?viewTarget@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?viewTarget@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_viewTarget: *mut nsIAtom; - #[link_name = "?white_space@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?white_space@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_white_space: *mut nsIAtom; - #[link_name = "?word_spacing@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?word_spacing@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_word_spacing: *mut nsIAtom; - #[link_name = "?writing_mode@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?writing_mode@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_writing_mode: *mut nsIAtom; - #[link_name = "?x@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?x@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_x: *mut nsIAtom; - #[link_name = "?x1@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?x1@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_x1: *mut nsIAtom; - #[link_name = "?x2@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?x2@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_x2: *mut nsIAtom; - #[link_name = "?xChannelSelector@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?xChannelSelector@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_xChannelSelector: *mut nsIAtom; - #[link_name = "?xor_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?xor_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_xor_: *mut nsIAtom; - #[link_name = "?y@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?y@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_y: *mut nsIAtom; - #[link_name = "?y1@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?y1@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_y1: *mut nsIAtom; - #[link_name = "?y2@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?y2@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_y2: *mut nsIAtom; - #[link_name = "?yChannelSelector@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?yChannelSelector@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_yChannelSelector: *mut nsIAtom; - #[link_name = "?z@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?z@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_z: *mut nsIAtom; - #[link_name = "?zoomAndPan@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?zoomAndPan@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_zoomAndPan: *mut nsIAtom; - #[link_name = "?vector_effect@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?vector_effect@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_vector_effect: *mut nsIAtom; - #[link_name = "?vertical_align@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?vertical_align@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_vertical_align: *mut nsIAtom; - #[link_name = "?accumulate@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?accumulate@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_accumulate: *mut nsIAtom; - #[link_name = "?additive@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?additive@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_additive: *mut nsIAtom; - #[link_name = "?attributeName@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?attributeName@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_attributeName: *mut nsIAtom; - #[link_name = "?attributeType@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?attributeType@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_attributeType: *mut nsIAtom; - #[link_name = "?auto_reverse@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?auto_reverse@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_auto_reverse: *mut nsIAtom; - #[link_name = "?begin@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?begin@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_begin: *mut nsIAtom; - #[link_name = "?beginEvent@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?beginEvent@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_beginEvent: *mut nsIAtom; - #[link_name = "?by@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?by@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_by: *mut nsIAtom; - #[link_name = "?calcMode@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?calcMode@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_calcMode: *mut nsIAtom; - #[link_name = "?css@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?css@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_css: *mut nsIAtom; - #[link_name = "?dur@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?dur@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_dur: *mut nsIAtom; - #[link_name = "?keyPoints@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?keyPoints@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_keyPoints: *mut nsIAtom; - #[link_name = "?keySplines@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?keySplines@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_keySplines: *mut nsIAtom; - #[link_name = "?keyTimes@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?keyTimes@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_keyTimes: *mut nsIAtom; - #[link_name = "?mozAnimateMotionDummyAttr@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mozAnimateMotionDummyAttr@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mozAnimateMotionDummyAttr: *mut nsIAtom; - #[link_name = "?onbegin@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onbegin@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onbegin: *mut nsIAtom; - #[link_name = "?onbeginEvent@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onbeginEvent@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onbeginEvent: *mut nsIAtom; - #[link_name = "?onend@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onend@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onend: *mut nsIAtom; - #[link_name = "?onendEvent@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onendEvent@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onendEvent: *mut nsIAtom; - #[link_name = "?onrepeat@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onrepeat@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onrepeat: *mut nsIAtom; - #[link_name = "?onrepeatEvent@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onrepeatEvent@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onrepeatEvent: *mut nsIAtom; - #[link_name = "?repeatCount@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?repeatCount@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_repeatCount: *mut nsIAtom; - #[link_name = "?repeatDur@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?repeatDur@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_repeatDur: *mut nsIAtom; - #[link_name = "?repeatEvent@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?repeatEvent@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_repeatEvent: *mut nsIAtom; - #[link_name = "?restart@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?restart@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_restart: *mut nsIAtom; - #[link_name = "?to@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?to@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_to: *mut nsIAtom; - #[link_name = "?XML@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?XML@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_XML: *mut nsIAtom; - #[link_name = "?abs_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?abs_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_abs_: *mut nsIAtom; - #[link_name = "?accent_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?accent_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_accent_: *mut nsIAtom; - #[link_name = "?accentunder_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?accentunder_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_accentunder_: *mut nsIAtom; - #[link_name = "?actiontype_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?actiontype_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_actiontype_: *mut nsIAtom; - #[link_name = "?alignmentscope_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?alignmentscope_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_alignmentscope_: *mut nsIAtom; - #[link_name = "?altimg_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?altimg_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_altimg_: *mut nsIAtom; - #[link_name = "?altimg_height_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?altimg_height_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_altimg_height_: *mut nsIAtom; - #[link_name = "?altimg_valign_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?altimg_valign_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_altimg_valign_: *mut nsIAtom; - #[link_name = "?altimg_width_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?altimg_width_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_altimg_width_: *mut nsIAtom; - #[link_name = "?annotation_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?annotation_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_annotation_: *mut nsIAtom; - #[link_name = "?annotation_xml_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?annotation_xml_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_annotation_xml_: *mut nsIAtom; - #[link_name = "?apply_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?apply_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_apply_: *mut nsIAtom; - #[link_name = "?approx_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?approx_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_approx_: *mut nsIAtom; - #[link_name = "?arccos_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?arccos_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_arccos_: *mut nsIAtom; - #[link_name = "?arccosh_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?arccosh_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_arccosh_: *mut nsIAtom; - #[link_name = "?arccot_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?arccot_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_arccot_: *mut nsIAtom; - #[link_name = "?arccoth_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?arccoth_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_arccoth_: *mut nsIAtom; - #[link_name = "?arccsc_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?arccsc_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_arccsc_: *mut nsIAtom; - #[link_name = "?arccsch_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?arccsch_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_arccsch_: *mut nsIAtom; - #[link_name = "?arcsec_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?arcsec_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_arcsec_: *mut nsIAtom; - #[link_name = "?arcsech_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?arcsech_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_arcsech_: *mut nsIAtom; - #[link_name = "?arcsin_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?arcsin_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_arcsin_: *mut nsIAtom; - #[link_name = "?arcsinh_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?arcsinh_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_arcsinh_: *mut nsIAtom; - #[link_name = "?arctan_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?arctan_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_arctan_: *mut nsIAtom; - #[link_name = "?arctanh_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?arctanh_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_arctanh_: *mut nsIAtom; - #[link_name = "?arg_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?arg_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_arg_: *mut nsIAtom; - #[link_name = "?bevelled_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?bevelled_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_bevelled_: *mut nsIAtom; - #[link_name = "?bind_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?bind_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_bind_: *mut nsIAtom; - #[link_name = "?bvar_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?bvar_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_bvar_: *mut nsIAtom; - #[link_name = "?card_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?card_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_card_: *mut nsIAtom; - #[link_name = "?cartesianproduct_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?cartesianproduct_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_cartesianproduct_: *mut nsIAtom; - #[link_name = "?cbytes_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?cbytes_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_cbytes_: *mut nsIAtom; - #[link_name = "?cd_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?cd_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_cd_: *mut nsIAtom; - #[link_name = "?cdgroup_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?cdgroup_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_cdgroup_: *mut nsIAtom; - #[link_name = "?cerror_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?cerror_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_cerror_: *mut nsIAtom; - #[link_name = "?charalign_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?charalign_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_charalign_: *mut nsIAtom; - #[link_name = "?ci_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ci_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ci_: *mut nsIAtom; - #[link_name = "?closure_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?closure_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_closure_: *mut nsIAtom; - #[link_name = "?cn_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?cn_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_cn_: *mut nsIAtom; - #[link_name = "?codomain_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?codomain_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_codomain_: *mut nsIAtom; - #[link_name = "?columnalign_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?columnalign_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_columnalign_: *mut nsIAtom; - #[link_name = "?columnalignment_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?columnalignment_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_columnalignment_: *mut nsIAtom; - #[link_name = "?columnlines_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?columnlines_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_columnlines_: *mut nsIAtom; - #[link_name = "?columnspacing_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?columnspacing_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_columnspacing_: *mut nsIAtom; - #[link_name = "?columnspan_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?columnspan_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_columnspan_: *mut nsIAtom; - #[link_name = "?columnwidth_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?columnwidth_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_columnwidth_: *mut nsIAtom; - #[link_name = "?complexes_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?complexes_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_complexes_: *mut nsIAtom; - #[link_name = "?compose_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?compose_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_compose_: *mut nsIAtom; - #[link_name = "?condition_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?condition_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_condition_: *mut nsIAtom; - #[link_name = "?conjugate_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?conjugate_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_conjugate_: *mut nsIAtom; - #[link_name = "?cos_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?cos_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_cos_: *mut nsIAtom; - #[link_name = "?cosh_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?cosh_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_cosh_: *mut nsIAtom; - #[link_name = "?cot_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?cot_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_cot_: *mut nsIAtom; - #[link_name = "?coth_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?coth_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_coth_: *mut nsIAtom; - #[link_name = "?crossout_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?crossout_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_crossout_: *mut nsIAtom; - #[link_name = "?csc_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?csc_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_csc_: *mut nsIAtom; - #[link_name = "?csch_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?csch_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_csch_: *mut nsIAtom; - #[link_name = "?cs_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?cs_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_cs_: *mut nsIAtom; - #[link_name = "?csymbol_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?csymbol_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_csymbol_: *mut nsIAtom; - #[link_name = "?curl_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?curl_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_curl_: *mut nsIAtom; - #[link_name = "?decimalpoint_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?decimalpoint_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_decimalpoint_: *mut nsIAtom; - #[link_name = "?definitionURL_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?definitionURL_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_definitionURL_: *mut nsIAtom; - #[link_name = "?degree_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?degree_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_degree_: *mut nsIAtom; - #[link_name = "?denomalign_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?denomalign_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_denomalign_: *mut nsIAtom; - #[link_name = "?depth_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?depth_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_depth_: *mut nsIAtom; - #[link_name = "?determinant_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?determinant_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_determinant_: *mut nsIAtom; - #[link_name = "?diff_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?diff_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_diff_: *mut nsIAtom; - #[link_name = "?displaystyle_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?displaystyle_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_displaystyle_: *mut nsIAtom; - #[link_name = "?divergence_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?divergence_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_divergence_: *mut nsIAtom; - #[link_name = "?divide_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?divide_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_divide_: *mut nsIAtom; - #[link_name = "?domain_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?domain_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_domain_: *mut nsIAtom; - #[link_name = "?domainofapplication_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?domainofapplication_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_domainofapplication_: *mut nsIAtom; - #[link_name = "?edge_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?edge_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_edge_: *mut nsIAtom; - #[link_name = "?el_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?el_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_el_: *mut nsIAtom; - #[link_name = "?emptyset_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?emptyset_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_emptyset_: *mut nsIAtom; - #[link_name = "?eq_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?eq_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_eq_: *mut nsIAtom; - #[link_name = "?equalcolumns_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?equalcolumns_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_equalcolumns_: *mut nsIAtom; - #[link_name = "?equalrows_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?equalrows_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_equalrows_: *mut nsIAtom; - #[link_name = "?equivalent_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?equivalent_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_equivalent_: *mut nsIAtom; - #[link_name = "?eulergamma_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?eulergamma_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_eulergamma_: *mut nsIAtom; - #[link_name = "?exists_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?exists_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_exists_: *mut nsIAtom; - #[link_name = "?exp_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?exp_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_exp_: *mut nsIAtom; - #[link_name = "?exponentiale_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?exponentiale_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_exponentiale_: *mut nsIAtom; - #[link_name = "?factorial_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?factorial_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_factorial_: *mut nsIAtom; - #[link_name = "?factorof_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?factorof_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_factorof_: *mut nsIAtom; - #[link_name = "?fence_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?fence_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_fence_: *mut nsIAtom; - #[link_name = "?fn_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?fn_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_fn_: *mut nsIAtom; - #[link_name = "?fontfamily_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?fontfamily_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_fontfamily_: *mut nsIAtom; - #[link_name = "?fontsize_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?fontsize_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_fontsize_: *mut nsIAtom; - #[link_name = "?fontstyle_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?fontstyle_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_fontstyle_: *mut nsIAtom; - #[link_name = "?fontweight_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?fontweight_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_fontweight_: *mut nsIAtom; - #[link_name = "?forall_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?forall_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_forall_: *mut nsIAtom; - #[link_name = "?framespacing_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?framespacing_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_framespacing_: *mut nsIAtom; - #[link_name = "?gcd_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?gcd_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_gcd_: *mut nsIAtom; - #[link_name = "?geq_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?geq_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_geq_: *mut nsIAtom; - #[link_name = "?groupalign_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?groupalign_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_groupalign_: *mut nsIAtom; - #[link_name = "?gt_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?gt_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_gt_: *mut nsIAtom; - #[link_name = "?ident_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ident_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ident_: *mut nsIAtom; - #[link_name = "?imaginaryi_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?imaginaryi_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_imaginaryi_: *mut nsIAtom; - #[link_name = "?imaginary_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?imaginary_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_imaginary_: *mut nsIAtom; - #[link_name = "?implies_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?implies_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_implies_: *mut nsIAtom; - #[link_name = "?indentalignfirst_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?indentalignfirst_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_indentalignfirst_: *mut nsIAtom; - #[link_name = "?indentalign_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?indentalign_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_indentalign_: *mut nsIAtom; - #[link_name = "?indentalignlast_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?indentalignlast_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_indentalignlast_: *mut nsIAtom; - #[link_name = "?indentshiftfirst_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?indentshiftfirst_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_indentshiftfirst_: *mut nsIAtom; - #[link_name = "?indentshift_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?indentshift_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_indentshift_: *mut nsIAtom; - #[link_name = "?indenttarget_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?indenttarget_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_indenttarget_: *mut nsIAtom; - #[link_name = "?integers_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?integers_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_integers_: *mut nsIAtom; - #[link_name = "?intersect_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?intersect_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_intersect_: *mut nsIAtom; - #[link_name = "?interval_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?interval_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_interval_: *mut nsIAtom; - #[link_name = "?int_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?int_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_int_: *mut nsIAtom; - #[link_name = "?inverse_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?inverse_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_inverse_: *mut nsIAtom; - #[link_name = "?lambda_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?lambda_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_lambda_: *mut nsIAtom; - #[link_name = "?laplacian_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?laplacian_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_laplacian_: *mut nsIAtom; - #[link_name = "?largeop_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?largeop_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_largeop_: *mut nsIAtom; - #[link_name = "?lcm_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?lcm_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_lcm_: *mut nsIAtom; - #[link_name = "?leq_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?leq_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_leq_: *mut nsIAtom; - #[link_name = "?limit_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?limit_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_limit_: *mut nsIAtom; - #[link_name = "?linebreak_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?linebreak_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_linebreak_: *mut nsIAtom; - #[link_name = "?linebreakmultchar_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?linebreakmultchar_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_linebreakmultchar_: *mut nsIAtom; - #[link_name = "?linebreakstyle_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?linebreakstyle_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_linebreakstyle_: *mut nsIAtom; - #[link_name = "?linethickness_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?linethickness_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_linethickness_: *mut nsIAtom; - #[link_name = "?list_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?list_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_list_: *mut nsIAtom; - #[link_name = "?ln_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ln_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ln_: *mut nsIAtom; - #[link_name = "?location_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?location_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_location_: *mut nsIAtom; - #[link_name = "?logbase_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?logbase_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_logbase_: *mut nsIAtom; - #[link_name = "?log_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?log_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_log_: *mut nsIAtom; - #[link_name = "?longdivstyle_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?longdivstyle_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_longdivstyle_: *mut nsIAtom; - #[link_name = "?lowlimit_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?lowlimit_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_lowlimit_: *mut nsIAtom; - #[link_name = "?lquote_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?lquote_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_lquote_: *mut nsIAtom; - #[link_name = "?lspace_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?lspace_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_lspace_: *mut nsIAtom; - #[link_name = "?lt_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?lt_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_lt_: *mut nsIAtom; - #[link_name = "?maction_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?maction_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_maction_: *mut nsIAtom; - #[link_name = "?maligngroup_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?maligngroup_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_maligngroup_: *mut nsIAtom; - #[link_name = "?malignmark_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?malignmark_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_malignmark_: *mut nsIAtom; - #[link_name = "?mathbackground_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mathbackground_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mathbackground_: *mut nsIAtom; - #[link_name = "?mathcolor_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mathcolor_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mathcolor_: *mut nsIAtom; - #[link_name = "?mathsize_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mathsize_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mathsize_: *mut nsIAtom; - #[link_name = "?mathvariant_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mathvariant_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mathvariant_: *mut nsIAtom; - #[link_name = "?matrixrow_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?matrixrow_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_matrixrow_: *mut nsIAtom; - #[link_name = "?maxsize_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?maxsize_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_maxsize_: *mut nsIAtom; - #[link_name = "?mean_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mean_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mean_: *mut nsIAtom; - #[link_name = "?median_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?median_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_median_: *mut nsIAtom; - #[link_name = "?menclose_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?menclose_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_menclose_: *mut nsIAtom; - #[link_name = "?merror_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?merror_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_merror_: *mut nsIAtom; - #[link_name = "?mfenced_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mfenced_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mfenced_: *mut nsIAtom; - #[link_name = "?mfrac_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mfrac_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mfrac_: *mut nsIAtom; - #[link_name = "?mglyph_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mglyph_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mglyph_: *mut nsIAtom; - #[link_name = "?mi_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mi_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mi_: *mut nsIAtom; - #[link_name = "?minlabelspacing_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?minlabelspacing_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_minlabelspacing_: *mut nsIAtom; - #[link_name = "?minsize_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?minsize_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_minsize_: *mut nsIAtom; - #[link_name = "?minus_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?minus_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_minus_: *mut nsIAtom; - #[link_name = "?mlabeledtr_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mlabeledtr_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mlabeledtr_: *mut nsIAtom; - #[link_name = "?mlongdiv_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mlongdiv_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mlongdiv_: *mut nsIAtom; - #[link_name = "?mmultiscripts_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mmultiscripts_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mmultiscripts_: *mut nsIAtom; - #[link_name = "?mn_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mn_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mn_: *mut nsIAtom; - #[link_name = "?momentabout_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?momentabout_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_momentabout_: *mut nsIAtom; - #[link_name = "?moment_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?moment_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_moment_: *mut nsIAtom; - #[link_name = "?mo_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mo_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mo_: *mut nsIAtom; - #[link_name = "?movablelimits_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?movablelimits_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_movablelimits_: *mut nsIAtom; - #[link_name = "?mover_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mover_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mover_: *mut nsIAtom; - #[link_name = "?mpadded_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mpadded_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mpadded_: *mut nsIAtom; - #[link_name = "?mphantom_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mphantom_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mphantom_: *mut nsIAtom; - #[link_name = "?mprescripts_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mprescripts_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mprescripts_: *mut nsIAtom; - #[link_name = "?mroot_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mroot_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mroot_: *mut nsIAtom; - #[link_name = "?mrow_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mrow_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mrow_: *mut nsIAtom; - #[link_name = "?mscarries_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mscarries_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mscarries_: *mut nsIAtom; - #[link_name = "?mscarry_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mscarry_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mscarry_: *mut nsIAtom; - #[link_name = "?msgroup_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?msgroup_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_msgroup_: *mut nsIAtom; - #[link_name = "?msline_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?msline_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_msline_: *mut nsIAtom; - #[link_name = "?ms_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ms_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ms_: *mut nsIAtom; - #[link_name = "?mspace_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mspace_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mspace_: *mut nsIAtom; - #[link_name = "?msqrt_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?msqrt_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_msqrt_: *mut nsIAtom; - #[link_name = "?msrow_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?msrow_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_msrow_: *mut nsIAtom; - #[link_name = "?mstack_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mstack_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mstack_: *mut nsIAtom; - #[link_name = "?mstyle_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mstyle_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mstyle_: *mut nsIAtom; - #[link_name = "?msub_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?msub_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_msub_: *mut nsIAtom; - #[link_name = "?msubsup_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?msubsup_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_msubsup_: *mut nsIAtom; - #[link_name = "?msup_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?msup_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_msup_: *mut nsIAtom; - #[link_name = "?mtable_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mtable_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mtable_: *mut nsIAtom; - #[link_name = "?mtd_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mtd_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mtd_: *mut nsIAtom; - #[link_name = "?mtext_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mtext_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mtext_: *mut nsIAtom; - #[link_name = "?mtr_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mtr_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mtr_: *mut nsIAtom; - #[link_name = "?munder_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?munder_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_munder_: *mut nsIAtom; - #[link_name = "?munderover_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?munderover_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_munderover_: *mut nsIAtom; - #[link_name = "?naturalnumbers_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?naturalnumbers_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_naturalnumbers_: *mut nsIAtom; - #[link_name = "?neq_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?neq_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_neq_: *mut nsIAtom; - #[link_name = "?notanumber_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?notanumber_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_notanumber_: *mut nsIAtom; - #[link_name = "?notation_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?notation_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_notation_: *mut nsIAtom; - #[link_name = "?note_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?note_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_note_: *mut nsIAtom; - #[link_name = "?notin_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?notin_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_notin_: *mut nsIAtom; - #[link_name = "?notprsubset_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?notprsubset_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_notprsubset_: *mut nsIAtom; - #[link_name = "?notsubset_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?notsubset_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_notsubset_: *mut nsIAtom; - #[link_name = "?numalign_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?numalign_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_numalign_: *mut nsIAtom; - #[link_name = "?other_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?other_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_other_: *mut nsIAtom; - #[link_name = "?outerproduct_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?outerproduct_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_outerproduct_: *mut nsIAtom; - #[link_name = "?partialdiff_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?partialdiff_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_partialdiff_: *mut nsIAtom; - #[link_name = "?piece_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?piece_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_piece_: *mut nsIAtom; - #[link_name = "?piecewise_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?piecewise_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_piecewise_: *mut nsIAtom; - #[link_name = "?pi_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?pi_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_pi_: *mut nsIAtom; - #[link_name = "?plus_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?plus_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_plus_: *mut nsIAtom; - #[link_name = "?power_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?power_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_power_: *mut nsIAtom; - #[link_name = "?primes_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?primes_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_primes_: *mut nsIAtom; - #[link_name = "?product_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?product_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_product_: *mut nsIAtom; - #[link_name = "?prsubset_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?prsubset_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_prsubset_: *mut nsIAtom; - #[link_name = "?quotient_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?quotient_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_quotient_: *mut nsIAtom; - #[link_name = "?rationals_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rationals_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rationals_: *mut nsIAtom; - #[link_name = "?real_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?real_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_real_: *mut nsIAtom; - #[link_name = "?reals_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?reals_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_reals_: *mut nsIAtom; - #[link_name = "?reln_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?reln_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_reln_: *mut nsIAtom; - #[link_name = "?root_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?root_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_root_: *mut nsIAtom; - #[link_name = "?rowalign_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rowalign_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rowalign_: *mut nsIAtom; - #[link_name = "?rowlines_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rowlines_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rowlines_: *mut nsIAtom; - #[link_name = "?rowspacing_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rowspacing_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rowspacing_: *mut nsIAtom; - #[link_name = "?rquote_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rquote_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rquote_: *mut nsIAtom; - #[link_name = "?rspace_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rspace_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rspace_: *mut nsIAtom; - #[link_name = "?scalarproduct_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?scalarproduct_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_scalarproduct_: *mut nsIAtom; - #[link_name = "?schemaLocation_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?schemaLocation_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_schemaLocation_: *mut nsIAtom; - #[link_name = "?scriptlevel_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?scriptlevel_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_scriptlevel_: *mut nsIAtom; - #[link_name = "?scriptminsize_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?scriptminsize_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_scriptminsize_: *mut nsIAtom; - #[link_name = "?scriptsizemultiplier_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?scriptsizemultiplier_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_scriptsizemultiplier_: *mut nsIAtom; - #[link_name = "?scriptsize_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?scriptsize_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_scriptsize_: *mut nsIAtom; - #[link_name = "?sdev_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?sdev_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_sdev_: *mut nsIAtom; - #[link_name = "?sech_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?sech_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_sech_: *mut nsIAtom; - #[link_name = "?sec_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?sec_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_sec_: *mut nsIAtom; - #[link_name = "?selection_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?selection_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_selection_: *mut nsIAtom; - #[link_name = "?selector_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?selector_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_selector_: *mut nsIAtom; - #[link_name = "?semantics_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?semantics_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_semantics_: *mut nsIAtom; - #[link_name = "?separator_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?separator_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_separator_: *mut nsIAtom; - #[link_name = "?separators_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?separators_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_separators_: *mut nsIAtom; - #[link_name = "?sep_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?sep_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_sep_: *mut nsIAtom; - #[link_name = "?setdiff_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?setdiff_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_setdiff_: *mut nsIAtom; - #[link_name = "?set_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?set_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_set_: *mut nsIAtom; - #[link_name = "?share_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?share_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_share_: *mut nsIAtom; - #[link_name = "?shift_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?shift_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_shift_: *mut nsIAtom; - #[link_name = "?side_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?side_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_side_: *mut nsIAtom; - #[link_name = "?sinh_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?sinh_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_sinh_: *mut nsIAtom; - #[link_name = "?sin_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?sin_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_sin_: *mut nsIAtom; - #[link_name = "?stackalign_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?stackalign_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_stackalign_: *mut nsIAtom; - #[link_name = "?stretchy_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?stretchy_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_stretchy_: *mut nsIAtom; - #[link_name = "?subscriptshift_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?subscriptshift_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_subscriptshift_: *mut nsIAtom; - #[link_name = "?subset_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?subset_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_subset_: *mut nsIAtom; - #[link_name = "?superscriptshift_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?superscriptshift_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_superscriptshift_: *mut nsIAtom; - #[link_name = "?symmetric_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?symmetric_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_symmetric_: *mut nsIAtom; - #[link_name = "?tanh_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?tanh_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_tanh_: *mut nsIAtom; - #[link_name = "?tan_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?tan_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_tan_: *mut nsIAtom; - #[link_name = "?tendsto_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?tendsto_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_tendsto_: *mut nsIAtom; - #[link_name = "?times_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?times_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_times_: *mut nsIAtom; - #[link_name = "?transpose_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?transpose_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_transpose_: *mut nsIAtom; - #[link_name = "?union_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?union_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_union_: *mut nsIAtom; - #[link_name = "?uplimit_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?uplimit_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_uplimit_: *mut nsIAtom; - #[link_name = "?variance_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?variance_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_variance_: *mut nsIAtom; - #[link_name = "?vectorproduct_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?vectorproduct_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_vectorproduct_: *mut nsIAtom; - #[link_name = "?vector_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?vector_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_vector_: *mut nsIAtom; - #[link_name = "?voffset_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?voffset_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_voffset_: *mut nsIAtom; - #[link_name = "?xref_@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?xref_@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_xref_: *mut nsIAtom; - #[link_name = "?math@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?math@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_math: *mut nsIAtom; - #[link_name = "?avg@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?avg@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_avg: *mut nsIAtom; - #[link_name = "?booleanFromString@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?booleanFromString@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_booleanFromString: *mut nsIAtom; - #[link_name = "?countNonEmpty@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?countNonEmpty@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_countNonEmpty: *mut nsIAtom; - #[link_name = "?daysFromDate@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?daysFromDate@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_daysFromDate: *mut nsIAtom; - #[link_name = "?init@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?init@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_init: *mut nsIAtom; - #[link_name = "?instance@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?instance@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_instance: *mut nsIAtom; - #[link_name = "?months@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?months@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_months: *mut nsIAtom; - #[link_name = "?now@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?now@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_now: *mut nsIAtom; - #[link_name = "?seconds@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?seconds@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_seconds: *mut nsIAtom; - #[link_name = "?secondsFromDateTime@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?secondsFromDateTime@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_secondsFromDateTime: *mut nsIAtom; - #[link_name = "?onMozSwipeGestureMayStart@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onMozSwipeGestureMayStart@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onMozSwipeGestureMayStart: *mut nsIAtom; - #[link_name = "?onMozSwipeGestureStart@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onMozSwipeGestureStart@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onMozSwipeGestureStart: *mut nsIAtom; - #[link_name = "?onMozSwipeGestureUpdate@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onMozSwipeGestureUpdate@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onMozSwipeGestureUpdate: *mut nsIAtom; - #[link_name = "?onMozSwipeGestureEnd@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onMozSwipeGestureEnd@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onMozSwipeGestureEnd: *mut nsIAtom; - #[link_name = "?onMozSwipeGesture@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onMozSwipeGesture@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onMozSwipeGesture: *mut nsIAtom; - #[link_name = "?onMozMagnifyGestureStart@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onMozMagnifyGestureStart@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onMozMagnifyGestureStart: *mut nsIAtom; - #[link_name = "?onMozMagnifyGestureUpdate@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onMozMagnifyGestureUpdate@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onMozMagnifyGestureUpdate: *mut nsIAtom; - #[link_name = "?onMozMagnifyGesture@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onMozMagnifyGesture@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onMozMagnifyGesture: *mut nsIAtom; - #[link_name = "?onMozRotateGestureStart@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onMozRotateGestureStart@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onMozRotateGestureStart: *mut nsIAtom; - #[link_name = "?onMozRotateGestureUpdate@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onMozRotateGestureUpdate@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onMozRotateGestureUpdate: *mut nsIAtom; - #[link_name = "?onMozRotateGesture@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onMozRotateGesture@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onMozRotateGesture: *mut nsIAtom; - #[link_name = "?onMozTapGesture@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onMozTapGesture@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onMozTapGesture: *mut nsIAtom; - #[link_name = "?onMozPressTapGesture@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onMozPressTapGesture@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onMozPressTapGesture: *mut nsIAtom; - #[link_name = "?onMozEdgeUIStarted@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onMozEdgeUIStarted@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onMozEdgeUIStarted: *mut nsIAtom; - #[link_name = "?onMozEdgeUICanceled@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onMozEdgeUICanceled@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onMozEdgeUICanceled: *mut nsIAtom; - #[link_name = "?onMozEdgeUICompleted@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onMozEdgeUICompleted@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onMozEdgeUICompleted: *mut nsIAtom; - #[link_name = "?onpointerdown@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onpointerdown@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onpointerdown: *mut nsIAtom; - #[link_name = "?onpointermove@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onpointermove@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onpointermove: *mut nsIAtom; - #[link_name = "?onpointerup@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onpointerup@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onpointerup: *mut nsIAtom; - #[link_name = "?onpointercancel@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onpointercancel@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onpointercancel: *mut nsIAtom; - #[link_name = "?onpointerover@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onpointerover@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onpointerover: *mut nsIAtom; - #[link_name = "?onpointerout@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onpointerout@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onpointerout: *mut nsIAtom; - #[link_name = "?onpointerenter@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onpointerenter@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onpointerenter: *mut nsIAtom; - #[link_name = "?onpointerleave@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onpointerleave@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onpointerleave: *mut nsIAtom; - #[link_name = "?ongotpointercapture@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ongotpointercapture@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ongotpointercapture: *mut nsIAtom; - #[link_name = "?onlostpointercapture@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onlostpointercapture@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onlostpointercapture: *mut nsIAtom; - #[link_name = "?ondevicemotion@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ondevicemotion@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ondevicemotion: *mut nsIAtom; - #[link_name = "?ondeviceorientation@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ondeviceorientation@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ondeviceorientation: *mut nsIAtom; - #[link_name = "?onabsolutedeviceorientation@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onabsolutedeviceorientation@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onabsolutedeviceorientation: *mut nsIAtom; - #[link_name = "?ondeviceproximity@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ondeviceproximity@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ondeviceproximity: *mut nsIAtom; - #[link_name = "?onmozorientationchange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onmozorientationchange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onmozorientationchange: *mut nsIAtom; - #[link_name = "?onuserproximity@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onuserproximity@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onuserproximity: *mut nsIAtom; - #[link_name = "?ondevicelight@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ondevicelight@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ondevicelight: *mut nsIAtom; - #[link_name = "?onmozinterruptbegin@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onmozinterruptbegin@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onmozinterruptbegin: *mut nsIAtom; - #[link_name = "?onmozinterruptend@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onmozinterruptend@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onmozinterruptend: *mut nsIAtom; - #[link_name = "?ondevicechange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ondevicechange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ondevicechange: *mut nsIAtom; - #[link_name = "?cdataTagName@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?cdataTagName@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_cdataTagName: *mut nsIAtom; - #[link_name = "?commentTagName@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?commentTagName@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_commentTagName: *mut nsIAtom; - #[link_name = "?documentNodeName@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?documentNodeName@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_documentNodeName: *mut nsIAtom; - #[link_name = "?documentFragmentNodeName@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?documentFragmentNodeName@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_documentFragmentNodeName: *mut nsIAtom; - #[link_name = "?documentTypeNodeName@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?documentTypeNodeName@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_documentTypeNodeName: *mut nsIAtom; - #[link_name = "?processingInstructionTagName@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?processingInstructionTagName@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_processingInstructionTagName: *mut nsIAtom; - #[link_name = "?textTagName@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?textTagName@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_textTagName: *mut nsIAtom; - #[link_name = "?bcTableCellFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?bcTableCellFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_bcTableCellFrame: *mut nsIAtom; - #[link_name = "?blockFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?blockFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_blockFrame: *mut nsIAtom; - #[link_name = "?boxFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?boxFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_boxFrame: *mut nsIAtom; - #[link_name = "?brFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?brFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_brFrame: *mut nsIAtom; - #[link_name = "?bulletFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?bulletFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_bulletFrame: *mut nsIAtom; - #[link_name = "?colorControlFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?colorControlFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_colorControlFrame: *mut nsIAtom; - #[link_name = "?columnSetFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?columnSetFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_columnSetFrame: *mut nsIAtom; - #[link_name = "?comboboxControlFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?comboboxControlFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_comboboxControlFrame: *mut nsIAtom; - #[link_name = "?comboboxDisplayFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?comboboxDisplayFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_comboboxDisplayFrame: *mut nsIAtom; - #[link_name = "?deckFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?deckFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_deckFrame: *mut nsIAtom; - #[link_name = "?detailsFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?detailsFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_detailsFrame: *mut nsIAtom; - #[link_name = "?fieldSetFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?fieldSetFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_fieldSetFrame: *mut nsIAtom; - #[link_name = "?flexContainerFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?flexContainerFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_flexContainerFrame: *mut nsIAtom; - #[link_name = "?formControlFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?formControlFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_formControlFrame: *mut nsIAtom; - #[link_name = "?frameSetFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?frameSetFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_frameSetFrame: *mut nsIAtom; - #[link_name = "?gfxButtonControlFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?gfxButtonControlFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_gfxButtonControlFrame: *mut nsIAtom; - #[link_name = "?gridContainerFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?gridContainerFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_gridContainerFrame: *mut nsIAtom; - #[link_name = "?HTMLButtonControlFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?HTMLButtonControlFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_HTMLButtonControlFrame: *mut nsIAtom; - #[link_name = "?HTMLCanvasFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?HTMLCanvasFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_HTMLCanvasFrame: *mut nsIAtom; - #[link_name = "?subDocumentFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?subDocumentFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_subDocumentFrame: *mut nsIAtom; - #[link_name = "?imageBoxFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?imageBoxFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_imageBoxFrame: *mut nsIAtom; - #[link_name = "?imageFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?imageFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_imageFrame: *mut nsIAtom; - #[link_name = "?imageControlFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?imageControlFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_imageControlFrame: *mut nsIAtom; - #[link_name = "?inlineFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?inlineFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_inlineFrame: *mut nsIAtom; - #[link_name = "?leafBoxFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?leafBoxFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_leafBoxFrame: *mut nsIAtom; - #[link_name = "?legendFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?legendFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_legendFrame: *mut nsIAtom; - #[link_name = "?letterFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?letterFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_letterFrame: *mut nsIAtom; - #[link_name = "?lineFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?lineFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_lineFrame: *mut nsIAtom; - #[link_name = "?listControlFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?listControlFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_listControlFrame: *mut nsIAtom; - #[link_name = "?menuFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?menuFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_menuFrame: *mut nsIAtom; - #[link_name = "?meterFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?meterFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_meterFrame: *mut nsIAtom; - #[link_name = "?menuPopupFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?menuPopupFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_menuPopupFrame: *mut nsIAtom; - #[link_name = "?numberControlFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?numberControlFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_numberControlFrame: *mut nsIAtom; - #[link_name = "?objectFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?objectFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_objectFrame: *mut nsIAtom; - #[link_name = "?pageFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?pageFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_pageFrame: *mut nsIAtom; - #[link_name = "?pageBreakFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?pageBreakFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_pageBreakFrame: *mut nsIAtom; - #[link_name = "?pageContentFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?pageContentFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_pageContentFrame: *mut nsIAtom; - #[link_name = "?placeholderFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?placeholderFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_placeholderFrame: *mut nsIAtom; - #[link_name = "?popupSetFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?popupSetFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_popupSetFrame: *mut nsIAtom; - #[link_name = "?progressFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?progressFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_progressFrame: *mut nsIAtom; - #[link_name = "?canvasFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?canvasFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_canvasFrame: *mut nsIAtom; - #[link_name = "?rangeFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rangeFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rangeFrame: *mut nsIAtom; - #[link_name = "?rootFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rootFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rootFrame: *mut nsIAtom; - #[link_name = "?rubyBaseContainerFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rubyBaseContainerFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rubyBaseContainerFrame: *mut nsIAtom; - #[link_name = "?rubyBaseFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rubyBaseFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rubyBaseFrame: *mut nsIAtom; - #[link_name = "?rubyFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rubyFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rubyFrame: *mut nsIAtom; - #[link_name = "?rubyTextContainerFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rubyTextContainerFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rubyTextContainerFrame: *mut nsIAtom; - #[link_name = "?rubyTextFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rubyTextFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rubyTextFrame: *mut nsIAtom; - #[link_name = "?scrollFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?scrollFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_scrollFrame: *mut nsIAtom; - #[link_name = "?scrollbarFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?scrollbarFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_scrollbarFrame: *mut nsIAtom; - #[link_name = "?sequenceFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?sequenceFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_sequenceFrame: *mut nsIAtom; - #[link_name = "?sliderFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?sliderFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_sliderFrame: *mut nsIAtom; - #[link_name = "?tableCellFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?tableCellFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_tableCellFrame: *mut nsIAtom; - #[link_name = "?tableColFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?tableColFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_tableColFrame: *mut nsIAtom; - #[link_name = "?tableColGroupFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?tableColGroupFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_tableColGroupFrame: *mut nsIAtom; - #[link_name = "?tableFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?tableFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_tableFrame: *mut nsIAtom; - #[link_name = "?tableWrapperFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?tableWrapperFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_tableWrapperFrame: *mut nsIAtom; - #[link_name = "?tableRowGroupFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?tableRowGroupFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_tableRowGroupFrame: *mut nsIAtom; - #[link_name = "?tableRowFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?tableRowFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_tableRowFrame: *mut nsIAtom; - #[link_name = "?textInputFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?textInputFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_textInputFrame: *mut nsIAtom; - #[link_name = "?textFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?textFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_textFrame: *mut nsIAtom; - #[link_name = "?viewportFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?viewportFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_viewportFrame: *mut nsIAtom; - #[link_name = "?XULLabelFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?XULLabelFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_XULLabelFrame: *mut nsIAtom; - #[link_name = "?svgAFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?svgAFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_svgAFrame: *mut nsIAtom; - #[link_name = "?svgClipPathFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?svgClipPathFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_svgClipPathFrame: *mut nsIAtom; - #[link_name = "?svgDefsFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?svgDefsFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_svgDefsFrame: *mut nsIAtom; - #[link_name = "?svgFEContainerFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?svgFEContainerFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_svgFEContainerFrame: *mut nsIAtom; - #[link_name = "?svgFEImageFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?svgFEImageFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_svgFEImageFrame: *mut nsIAtom; - #[link_name = "?svgFELeafFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?svgFELeafFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_svgFELeafFrame: *mut nsIAtom; - #[link_name = "?svgFEUnstyledLeafFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?svgFEUnstyledLeafFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_svgFEUnstyledLeafFrame: *mut nsIAtom; - #[link_name = "?svgFilterFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?svgFilterFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_svgFilterFrame: *mut nsIAtom; - #[link_name = "?svgForeignObjectFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?svgForeignObjectFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_svgForeignObjectFrame: *mut nsIAtom; - #[link_name = "?svgGenericContainerFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?svgGenericContainerFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_svgGenericContainerFrame: *mut nsIAtom; - #[link_name = "?svgGFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?svgGFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_svgGFrame: *mut nsIAtom; - #[link_name = "?svgGradientFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?svgGradientFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_svgGradientFrame: *mut nsIAtom; - #[link_name = "?svgImageFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?svgImageFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_svgImageFrame: *mut nsIAtom; - #[link_name = "?svgInnerSVGFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?svgInnerSVGFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_svgInnerSVGFrame: *mut nsIAtom; - #[link_name = "?svgLinearGradientFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?svgLinearGradientFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_svgLinearGradientFrame: *mut nsIAtom; - #[link_name = "?svgMarkerFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?svgMarkerFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_svgMarkerFrame: *mut nsIAtom; - #[link_name = "?svgMarkerAnonChildFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?svgMarkerAnonChildFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_svgMarkerAnonChildFrame: *mut nsIAtom; - #[link_name = "?svgMaskFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?svgMaskFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_svgMaskFrame: *mut nsIAtom; - #[link_name = "?svgOuterSVGFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?svgOuterSVGFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_svgOuterSVGFrame: *mut nsIAtom; - #[link_name = "?svgOuterSVGAnonChildFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?svgOuterSVGAnonChildFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_svgOuterSVGAnonChildFrame: *mut nsIAtom; - #[link_name = "?svgPathGeometryFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?svgPathGeometryFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_svgPathGeometryFrame: *mut nsIAtom; - #[link_name = "?svgPatternFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?svgPatternFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_svgPatternFrame: *mut nsIAtom; - #[link_name = "?svgRadialGradientFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?svgRadialGradientFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_svgRadialGradientFrame: *mut nsIAtom; - #[link_name = "?svgStopFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?svgStopFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_svgStopFrame: *mut nsIAtom; - #[link_name = "?svgSwitchFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?svgSwitchFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_svgSwitchFrame: *mut nsIAtom; - #[link_name = "?svgTextFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?svgTextFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_svgTextFrame: *mut nsIAtom; - #[link_name = "?svgUseFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?svgUseFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_svgUseFrame: *mut nsIAtom; - #[link_name = "?svgViewFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?svgViewFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_svgViewFrame: *mut nsIAtom; - #[link_name = "?HTMLVideoFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?HTMLVideoFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_HTMLVideoFrame: *mut nsIAtom; - #[link_name = "?onloadend@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onloadend@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onloadend: *mut nsIAtom; - #[link_name = "?onloadstart@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onloadstart@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onloadstart: *mut nsIAtom; - #[link_name = "?onprogress@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onprogress@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onprogress: *mut nsIAtom; - #[link_name = "?onsuspend@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onsuspend@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onsuspend: *mut nsIAtom; - #[link_name = "?onemptied@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onemptied@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onemptied: *mut nsIAtom; - #[link_name = "?onstalled@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onstalled@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onstalled: *mut nsIAtom; - #[link_name = "?onplay@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onplay@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onplay: *mut nsIAtom; - #[link_name = "?onpause@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onpause@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onpause: *mut nsIAtom; - #[link_name = "?onloadedmetadata@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onloadedmetadata@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onloadedmetadata: *mut nsIAtom; - #[link_name = "?onloadeddata@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onloadeddata@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onloadeddata: *mut nsIAtom; - #[link_name = "?onwaiting@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onwaiting@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onwaiting: *mut nsIAtom; - #[link_name = "?onplaying@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onplaying@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onplaying: *mut nsIAtom; - #[link_name = "?oncanplay@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?oncanplay@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_oncanplay: *mut nsIAtom; - #[link_name = "?oncanplaythrough@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?oncanplaythrough@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_oncanplaythrough: *mut nsIAtom; - #[link_name = "?onseeking@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onseeking@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onseeking: *mut nsIAtom; - #[link_name = "?onseeked@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onseeked@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onseeked: *mut nsIAtom; - #[link_name = "?ontimeout@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ontimeout@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ontimeout: *mut nsIAtom; - #[link_name = "?ontimeupdate@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ontimeupdate@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ontimeupdate: *mut nsIAtom; - #[link_name = "?onended@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onended@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onended: *mut nsIAtom; - #[link_name = "?onratechange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onratechange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onratechange: *mut nsIAtom; - #[link_name = "?ondurationchange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ondurationchange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ondurationchange: *mut nsIAtom; - #[link_name = "?onvolumechange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onvolumechange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onvolumechange: *mut nsIAtom; - #[link_name = "?onaddtrack@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onaddtrack@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onaddtrack: *mut nsIAtom; - #[link_name = "?oncontrollerchange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?oncontrollerchange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_oncontrollerchange: *mut nsIAtom; - #[link_name = "?oncuechange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?oncuechange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_oncuechange: *mut nsIAtom; - #[link_name = "?onenter@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onenter@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onenter: *mut nsIAtom; - #[link_name = "?onexit@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onexit@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onexit: *mut nsIAtom; - #[link_name = "?onencrypted@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onencrypted@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onencrypted: *mut nsIAtom; - #[link_name = "?encrypted@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?encrypted@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_encrypted: *mut nsIAtom; - #[link_name = "?onremovetrack@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onremovetrack@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onremovetrack: *mut nsIAtom; - #[link_name = "?loadstart@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?loadstart@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_loadstart: *mut nsIAtom; - #[link_name = "?suspend@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?suspend@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_suspend: *mut nsIAtom; - #[link_name = "?emptied@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?emptied@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_emptied: *mut nsIAtom; - #[link_name = "?stalled@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?stalled@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_stalled: *mut nsIAtom; - #[link_name = "?play@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?play@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_play: *mut nsIAtom; - #[link_name = "?pause@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?pause@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_pause: *mut nsIAtom; - #[link_name = "?loadedmetadata@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?loadedmetadata@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_loadedmetadata: *mut nsIAtom; - #[link_name = "?loadeddata@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?loadeddata@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_loadeddata: *mut nsIAtom; - #[link_name = "?waiting@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?waiting@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_waiting: *mut nsIAtom; - #[link_name = "?playing@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?playing@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_playing: *mut nsIAtom; - #[link_name = "?seeking@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?seeking@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_seeking: *mut nsIAtom; - #[link_name = "?seeked@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?seeked@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_seeked: *mut nsIAtom; - #[link_name = "?timeupdate@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?timeupdate@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_timeupdate: *mut nsIAtom; - #[link_name = "?ended@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ended@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ended: *mut nsIAtom; - #[link_name = "?canplay@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?canplay@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_canplay: *mut nsIAtom; - #[link_name = "?canplaythrough@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?canplaythrough@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_canplaythrough: *mut nsIAtom; - #[link_name = "?ratechange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ratechange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ratechange: *mut nsIAtom; - #[link_name = "?durationchange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?durationchange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_durationchange: *mut nsIAtom; - #[link_name = "?volumechange@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?volumechange@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_volumechange: *mut nsIAtom; - #[link_name = "?ondataavailable@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ondataavailable@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ondataavailable: *mut nsIAtom; - #[link_name = "?onwarning@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onwarning@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onwarning: *mut nsIAtom; - #[link_name = "?onstart@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onstart@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onstart: *mut nsIAtom; - #[link_name = "?onstop@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onstop@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onstop: *mut nsIAtom; - #[link_name = "?onphoto@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onphoto@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onphoto: *mut nsIAtom; - #[link_name = "?onactivestatechanged@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onactivestatechanged@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onactivestatechanged: *mut nsIAtom; - #[link_name = "?ongamepadbuttondown@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ongamepadbuttondown@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ongamepadbuttondown: *mut nsIAtom; - #[link_name = "?ongamepadbuttonup@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ongamepadbuttonup@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ongamepadbuttonup: *mut nsIAtom; - #[link_name = "?ongamepadaxismove@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ongamepadaxismove@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ongamepadaxismove: *mut nsIAtom; - #[link_name = "?ongamepadconnected@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ongamepadconnected@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ongamepadconnected: *mut nsIAtom; - #[link_name = "?ongamepaddisconnected@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ongamepaddisconnected@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ongamepaddisconnected: *mut nsIAtom; - #[link_name = "?animationsProperty@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?animationsProperty@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_animationsProperty: *mut nsIAtom; - #[link_name = "?animationsOfBeforeProperty@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?animationsOfBeforeProperty@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_animationsOfBeforeProperty: *mut nsIAtom; - #[link_name = "?animationsOfAfterProperty@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?animationsOfAfterProperty@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_animationsOfAfterProperty: *mut nsIAtom; - #[link_name = "?animationEffectsProperty@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?animationEffectsProperty@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_animationEffectsProperty: *mut nsIAtom; - #[link_name = "?animationEffectsForBeforeProperty@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?animationEffectsForBeforeProperty@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_animationEffectsForBeforeProperty: *mut nsIAtom; - #[link_name = "?animationEffectsForAfterProperty@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?animationEffectsForAfterProperty@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_animationEffectsForAfterProperty: *mut nsIAtom; - #[link_name = "?cssPseudoElementBeforeProperty@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?cssPseudoElementBeforeProperty@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_cssPseudoElementBeforeProperty: *mut nsIAtom; - #[link_name = "?cssPseudoElementAfterProperty@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?cssPseudoElementAfterProperty@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_cssPseudoElementAfterProperty: *mut nsIAtom; - #[link_name = "?transitionsProperty@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?transitionsProperty@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_transitionsProperty: *mut nsIAtom; - #[link_name = "?transitionsOfBeforeProperty@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?transitionsOfBeforeProperty@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_transitionsOfBeforeProperty: *mut nsIAtom; - #[link_name = "?transitionsOfAfterProperty@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?transitionsOfAfterProperty@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_transitionsOfAfterProperty: *mut nsIAtom; - #[link_name = "?genConInitializerProperty@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?genConInitializerProperty@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_genConInitializerProperty: *mut nsIAtom; - #[link_name = "?labelMouseDownPtProperty@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?labelMouseDownPtProperty@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_labelMouseDownPtProperty: *mut nsIAtom; - #[link_name = "?baseURIProperty@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?baseURIProperty@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_baseURIProperty: *mut nsIAtom; - #[link_name = "?lockedStyleStates@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?lockedStyleStates@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_lockedStyleStates: *mut nsIAtom; - #[link_name = "?apzCallbackTransform@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?apzCallbackTransform@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_apzCallbackTransform: *mut nsIAtom; - #[link_name = "?restylableAnonymousNode@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?restylableAnonymousNode@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_restylableAnonymousNode: *mut nsIAtom; - #[link_name = "?paintRequestTime@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?paintRequestTime@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_paintRequestTime: *mut nsIAtom; - #[link_name = "?Japanese@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?Japanese@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_Japanese: *mut nsIAtom; - #[link_name = "?Chinese@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?Chinese@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_Chinese: *mut nsIAtom; - #[link_name = "?Taiwanese@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?Taiwanese@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_Taiwanese: *mut nsIAtom; - #[link_name = "?HongKongChinese@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?HongKongChinese@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_HongKongChinese: *mut nsIAtom; - #[link_name = "?Unicode@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?Unicode@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_Unicode: *mut nsIAtom; - #[link_name = "?ko@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ko@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ko: *mut nsIAtom; - #[link_name = "?zh_cn@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?zh_cn@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_zh_cn: *mut nsIAtom; - #[link_name = "?zh_hk@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?zh_hk@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_zh_hk: *mut nsIAtom; - #[link_name = "?zh_tw@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?zh_tw@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_zh_tw: *mut nsIAtom; - #[link_name = "?x_cyrillic@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?x_cyrillic@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_x_cyrillic: *mut nsIAtom; - #[link_name = "?he@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?he@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_he: *mut nsIAtom; - #[link_name = "?ar@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ar@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ar: *mut nsIAtom; - #[link_name = "?x_devanagari@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?x_devanagari@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_x_devanagari: *mut nsIAtom; - #[link_name = "?x_tamil@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?x_tamil@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_x_tamil: *mut nsIAtom; - #[link_name = "?x_armn@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?x_armn@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_x_armn: *mut nsIAtom; - #[link_name = "?x_beng@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?x_beng@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_x_beng: *mut nsIAtom; - #[link_name = "?x_cans@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?x_cans@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_x_cans: *mut nsIAtom; - #[link_name = "?x_ethi@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?x_ethi@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_x_ethi: *mut nsIAtom; - #[link_name = "?x_geor@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?x_geor@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_x_geor: *mut nsIAtom; - #[link_name = "?x_gujr@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?x_gujr@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_x_gujr: *mut nsIAtom; - #[link_name = "?x_guru@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?x_guru@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_x_guru: *mut nsIAtom; - #[link_name = "?x_khmr@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?x_khmr@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_x_khmr: *mut nsIAtom; - #[link_name = "?x_knda@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?x_knda@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_x_knda: *mut nsIAtom; - #[link_name = "?x_mlym@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?x_mlym@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_x_mlym: *mut nsIAtom; - #[link_name = "?x_orya@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?x_orya@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_x_orya: *mut nsIAtom; - #[link_name = "?x_sinh@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?x_sinh@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_x_sinh: *mut nsIAtom; - #[link_name = "?x_telu@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?x_telu@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_x_telu: *mut nsIAtom; - #[link_name = "?x_tibt@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?x_tibt@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_x_tibt: *mut nsIAtom; - #[link_name = "?az@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?az@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_az: *mut nsIAtom; - #[link_name = "?ba@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ba@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ba: *mut nsIAtom; - #[link_name = "?crh@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?crh@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_crh: *mut nsIAtom; - #[link_name = "?el@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?el@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_el: *mut nsIAtom; - #[link_name = "?ga@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ga@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ga: *mut nsIAtom; - #[link_name = "?nl@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?nl@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_nl: *mut nsIAtom; - #[link_name = "?x_math@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?x_math@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_x_math: *mut nsIAtom; - #[link_name = "?TypingTxnName@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?TypingTxnName@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_TypingTxnName: *mut nsIAtom; - #[link_name = "?IMETxnName@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?IMETxnName@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_IMETxnName: *mut nsIAtom; - #[link_name = "?DeleteTxnName@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?DeleteTxnName@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_DeleteTxnName: *mut nsIAtom; - #[link_name = "?serif@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?serif@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_serif: *mut nsIAtom; - #[link_name = "?sans_serif@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?sans_serif@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_sans_serif: *mut nsIAtom; - #[link_name = "?cursive@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?cursive@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_cursive: *mut nsIAtom; - #[link_name = "?fantasy@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?fantasy@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_fantasy: *mut nsIAtom; - #[link_name = "?monospace@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?monospace@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_monospace: *mut nsIAtom; - #[link_name = "?Remote@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?Remote@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_Remote: *mut nsIAtom; - #[link_name = "?RemoteId@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?RemoteId@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_RemoteId: *mut nsIAtom; - #[link_name = "?DisplayPort@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?DisplayPort@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_DisplayPort: *mut nsIAtom; - #[link_name = "?DisplayPortMargins@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?DisplayPortMargins@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_DisplayPortMargins: *mut nsIAtom; - #[link_name = "?DisplayPortBase@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?DisplayPortBase@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_DisplayPortBase: *mut nsIAtom; - #[link_name = "?AsyncScrollLayerCreationFailed@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?AsyncScrollLayerCreationFailed@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_AsyncScrollLayerCreationFailed: *mut nsIAtom; - #[link_name = "?forcemessagemanager@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?forcemessagemanager@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_forcemessagemanager: *mut nsIAtom; - #[link_name = "?color_picker_available@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?color_picker_available@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_color_picker_available: *mut nsIAtom; - #[link_name = "?scrollbar_start_backward@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?scrollbar_start_backward@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_scrollbar_start_backward: *mut nsIAtom; - #[link_name = "?scrollbar_start_forward@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?scrollbar_start_forward@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_scrollbar_start_forward: *mut nsIAtom; - #[link_name = "?scrollbar_end_backward@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?scrollbar_end_backward@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_scrollbar_end_backward: *mut nsIAtom; - #[link_name = "?scrollbar_end_forward@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?scrollbar_end_forward@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_scrollbar_end_forward: *mut nsIAtom; - #[link_name = "?scrollbar_thumb_proportional@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?scrollbar_thumb_proportional@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_scrollbar_thumb_proportional: *mut nsIAtom; - #[link_name = "?images_in_menus@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?images_in_menus@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_images_in_menus: *mut nsIAtom; - #[link_name = "?images_in_buttons@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?images_in_buttons@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_images_in_buttons: *mut nsIAtom; - #[link_name = "?overlay_scrollbars@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?overlay_scrollbars@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_overlay_scrollbars: *mut nsIAtom; - #[link_name = "?windows_default_theme@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?windows_default_theme@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_windows_default_theme: *mut nsIAtom; - #[link_name = "?mac_graphite_theme@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mac_graphite_theme@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mac_graphite_theme: *mut nsIAtom; - #[link_name = "?mac_lion_theme@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mac_lion_theme@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mac_lion_theme: *mut nsIAtom; - #[link_name = "?mac_yosemite_theme@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mac_yosemite_theme@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mac_yosemite_theme: *mut nsIAtom; - #[link_name = "?windows_compositor@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?windows_compositor@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_windows_compositor: *mut nsIAtom; - #[link_name = "?windows_glass@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?windows_glass@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_windows_glass: *mut nsIAtom; - #[link_name = "?touch_enabled@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?touch_enabled@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_touch_enabled: *mut nsIAtom; - #[link_name = "?menubar_drag@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?menubar_drag@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_menubar_drag: *mut nsIAtom; - #[link_name = "?swipe_animation_enabled@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?swipe_animation_enabled@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_swipe_animation_enabled: *mut nsIAtom; - #[link_name = "?physical_home_button@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?physical_home_button@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_physical_home_button: *mut nsIAtom; - #[link_name = "?windows_classic@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?windows_classic@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_windows_classic: *mut nsIAtom; - #[link_name = "?windows_theme_aero@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?windows_theme_aero@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_windows_theme_aero: *mut nsIAtom; - #[link_name = "?windows_theme_aero_lite@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?windows_theme_aero_lite@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_windows_theme_aero_lite: *mut nsIAtom; - #[link_name = "?windows_theme_luna_blue@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?windows_theme_luna_blue@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_windows_theme_luna_blue: *mut nsIAtom; - #[link_name = "?windows_theme_luna_olive@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?windows_theme_luna_olive@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_windows_theme_luna_olive: *mut nsIAtom; - #[link_name = "?windows_theme_luna_silver@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?windows_theme_luna_silver@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_windows_theme_luna_silver: *mut nsIAtom; - #[link_name = "?windows_theme_royale@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?windows_theme_royale@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_windows_theme_royale: *mut nsIAtom; - #[link_name = "?windows_theme_zune@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?windows_theme_zune@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_windows_theme_zune: *mut nsIAtom; - #[link_name = "?windows_theme_generic@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?windows_theme_generic@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_windows_theme_generic: *mut nsIAtom; - #[link_name = "?_moz_color_picker_available@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_moz_color_picker_available@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__moz_color_picker_available: *mut nsIAtom; - #[link_name = "?_moz_scrollbar_start_backward@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_moz_scrollbar_start_backward@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__moz_scrollbar_start_backward: *mut nsIAtom; - #[link_name = "?_moz_scrollbar_start_forward@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_moz_scrollbar_start_forward@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__moz_scrollbar_start_forward: *mut nsIAtom; - #[link_name = "?_moz_scrollbar_end_backward@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_moz_scrollbar_end_backward@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__moz_scrollbar_end_backward: *mut nsIAtom; - #[link_name = "?_moz_scrollbar_end_forward@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_moz_scrollbar_end_forward@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__moz_scrollbar_end_forward: *mut nsIAtom; - #[link_name = "?_moz_scrollbar_thumb_proportional@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_moz_scrollbar_thumb_proportional@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__moz_scrollbar_thumb_proportional: *mut nsIAtom; - #[link_name = "?_moz_images_in_menus@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_moz_images_in_menus@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__moz_images_in_menus: *mut nsIAtom; - #[link_name = "?_moz_images_in_buttons@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_moz_images_in_buttons@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__moz_images_in_buttons: *mut nsIAtom; - #[link_name = "?_moz_overlay_scrollbars@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_moz_overlay_scrollbars@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__moz_overlay_scrollbars: *mut nsIAtom; - #[link_name = "?_moz_windows_default_theme@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_moz_windows_default_theme@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__moz_windows_default_theme: *mut nsIAtom; - #[link_name = "?_moz_mac_graphite_theme@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_moz_mac_graphite_theme@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__moz_mac_graphite_theme: *mut nsIAtom; - #[link_name = "?_moz_mac_lion_theme@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_moz_mac_lion_theme@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__moz_mac_lion_theme: *mut nsIAtom; - #[link_name = "?_moz_mac_yosemite_theme@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_moz_mac_yosemite_theme@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__moz_mac_yosemite_theme: *mut nsIAtom; - #[link_name = "?_moz_windows_compositor@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_moz_windows_compositor@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__moz_windows_compositor: *mut nsIAtom; - #[link_name = "?_moz_windows_classic@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_moz_windows_classic@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__moz_windows_classic: *mut nsIAtom; - #[link_name = "?_moz_windows_glass@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_moz_windows_glass@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__moz_windows_glass: *mut nsIAtom; - #[link_name = "?_moz_windows_theme@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_moz_windows_theme@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__moz_windows_theme: *mut nsIAtom; - #[link_name = "?_moz_os_version@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_moz_os_version@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__moz_os_version: *mut nsIAtom; - #[link_name = "?_moz_touch_enabled@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_moz_touch_enabled@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__moz_touch_enabled: *mut nsIAtom; - #[link_name = "?_moz_menubar_drag@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_moz_menubar_drag@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__moz_menubar_drag: *mut nsIAtom; - #[link_name = "?_moz_device_pixel_ratio@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_moz_device_pixel_ratio@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__moz_device_pixel_ratio: *mut nsIAtom; - #[link_name = "?_moz_device_orientation@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_moz_device_orientation@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__moz_device_orientation: *mut nsIAtom; - #[link_name = "?_moz_is_resource_document@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_moz_is_resource_document@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__moz_is_resource_document: *mut nsIAtom; - #[link_name = "?_moz_swipe_animation_enabled@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_moz_swipe_animation_enabled@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__moz_swipe_animation_enabled: *mut nsIAtom; - #[link_name = "?_moz_physical_home_button@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_moz_physical_home_button@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__moz_physical_home_button: *mut nsIAtom; - #[link_name = "?Back@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?Back@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_Back: *mut nsIAtom; - #[link_name = "?Forward@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?Forward@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_Forward: *mut nsIAtom; - #[link_name = "?Reload@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?Reload@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_Reload: *mut nsIAtom; - #[link_name = "?Stop@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?Stop@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_Stop: *mut nsIAtom; - #[link_name = "?Search@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?Search@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_Search: *mut nsIAtom; - #[link_name = "?Bookmarks@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?Bookmarks@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_Bookmarks: *mut nsIAtom; - #[link_name = "?Home@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?Home@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_Home: *mut nsIAtom; - #[link_name = "?Clear@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?Clear@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_Clear: *mut nsIAtom; - #[link_name = "?VolumeUp@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?VolumeUp@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_VolumeUp: *mut nsIAtom; - #[link_name = "?VolumeDown@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?VolumeDown@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_VolumeDown: *mut nsIAtom; - #[link_name = "?NextTrack@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?NextTrack@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_NextTrack: *mut nsIAtom; - #[link_name = "?PreviousTrack@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?PreviousTrack@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_PreviousTrack: *mut nsIAtom; - #[link_name = "?MediaStop@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?MediaStop@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_MediaStop: *mut nsIAtom; - #[link_name = "?PlayPause@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?PlayPause@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_PlayPause: *mut nsIAtom; - #[link_name = "?Menu@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?Menu@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_Menu: *mut nsIAtom; - #[link_name = "?New@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?New@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_New: *mut nsIAtom; - #[link_name = "?Open@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?Open@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_Open: *mut nsIAtom; - #[link_name = "?Close@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?Close@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_Close: *mut nsIAtom; - #[link_name = "?Save@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?Save@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_Save: *mut nsIAtom; - #[link_name = "?Find@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?Find@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_Find: *mut nsIAtom; - #[link_name = "?Help@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?Help@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_Help: *mut nsIAtom; - #[link_name = "?Print@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?Print@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_Print: *mut nsIAtom; - #[link_name = "?SendMail@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?SendMail@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_SendMail: *mut nsIAtom; - #[link_name = "?ForwardMail@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ForwardMail@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ForwardMail: *mut nsIAtom; - #[link_name = "?ReplyToMail@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?ReplyToMail@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_ReplyToMail: *mut nsIAtom; - #[link_name = "?mouseWheel@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mouseWheel@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mouseWheel: *mut nsIAtom; - #[link_name = "?pixels@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?pixels@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_pixels: *mut nsIAtom; - #[link_name = "?lines@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?lines@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_lines: *mut nsIAtom; - #[link_name = "?pages@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?pages@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_pages: *mut nsIAtom; - #[link_name = "?scrollbars@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?scrollbars@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_scrollbars: *mut nsIAtom; - #[link_name = "?other@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?other@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_other: *mut nsIAtom; - #[link_name = "?apz@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?apz@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_apz: *mut nsIAtom; - #[link_name = "?restore@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?restore@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_restore: *mut nsIAtom; - #[link_name = "?alert@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?alert@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_alert: *mut nsIAtom; - #[link_name = "?alertdialog@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?alertdialog@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_alertdialog: *mut nsIAtom; - #[link_name = "?application@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?application@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_application: *mut nsIAtom; - #[link_name = "?aria_activedescendant@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_activedescendant@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_activedescendant: *mut nsIAtom; - #[link_name = "?aria_atomic@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_atomic@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_atomic: *mut nsIAtom; - #[link_name = "?aria_autocomplete@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_autocomplete@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_autocomplete: *mut nsIAtom; - #[link_name = "?aria_busy@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_busy@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_busy: *mut nsIAtom; - #[link_name = "?aria_checked@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_checked@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_checked: *mut nsIAtom; - #[link_name = "?aria_colcount@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_colcount@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_colcount: *mut nsIAtom; - #[link_name = "?aria_colindex@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_colindex@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_colindex: *mut nsIAtom; - #[link_name = "?aria_controls@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_controls@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_controls: *mut nsIAtom; - #[link_name = "?aria_describedby@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_describedby@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_describedby: *mut nsIAtom; - #[link_name = "?aria_disabled@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_disabled@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_disabled: *mut nsIAtom; - #[link_name = "?aria_dropeffect@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_dropeffect@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_dropeffect: *mut nsIAtom; - #[link_name = "?aria_expanded@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_expanded@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_expanded: *mut nsIAtom; - #[link_name = "?aria_flowto@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_flowto@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_flowto: *mut nsIAtom; - #[link_name = "?aria_grabbed@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_grabbed@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_grabbed: *mut nsIAtom; - #[link_name = "?aria_haspopup@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_haspopup@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_haspopup: *mut nsIAtom; - #[link_name = "?aria_hidden@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_hidden@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_hidden: *mut nsIAtom; - #[link_name = "?aria_invalid@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_invalid@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_invalid: *mut nsIAtom; - #[link_name = "?aria_label@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_label@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_label: *mut nsIAtom; - #[link_name = "?aria_labelledby@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_labelledby@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_labelledby: *mut nsIAtom; - #[link_name = "?aria_level@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_level@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_level: *mut nsIAtom; - #[link_name = "?aria_live@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_live@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_live: *mut nsIAtom; - #[link_name = "?aria_modal@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_modal@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_modal: *mut nsIAtom; - #[link_name = "?aria_multiline@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_multiline@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_multiline: *mut nsIAtom; - #[link_name = "?aria_multiselectable@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_multiselectable@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_multiselectable: *mut nsIAtom; - #[link_name = "?aria_orientation@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_orientation@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_orientation: *mut nsIAtom; - #[link_name = "?aria_owns@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_owns@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_owns: *mut nsIAtom; - #[link_name = "?aria_posinset@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_posinset@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_posinset: *mut nsIAtom; - #[link_name = "?aria_pressed@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_pressed@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_pressed: *mut nsIAtom; - #[link_name = "?aria_readonly@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_readonly@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_readonly: *mut nsIAtom; - #[link_name = "?aria_relevant@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_relevant@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_relevant: *mut nsIAtom; - #[link_name = "?aria_required@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_required@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_required: *mut nsIAtom; - #[link_name = "?aria_rowcount@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_rowcount@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_rowcount: *mut nsIAtom; - #[link_name = "?aria_rowindex@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_rowindex@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_rowindex: *mut nsIAtom; - #[link_name = "?aria_selected@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_selected@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_selected: *mut nsIAtom; - #[link_name = "?aria_setsize@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_setsize@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_setsize: *mut nsIAtom; - #[link_name = "?aria_sort@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_sort@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_sort: *mut nsIAtom; - #[link_name = "?aria_valuenow@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_valuenow@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_valuenow: *mut nsIAtom; - #[link_name = "?aria_valuemin@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_valuemin@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_valuemin: *mut nsIAtom; - #[link_name = "?aria_valuemax@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_valuemax@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_valuemax: *mut nsIAtom; - #[link_name = "?aria_valuetext@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?aria_valuetext@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_aria_valuetext: *mut nsIAtom; - #[link_name = "?AreaFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?AreaFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_AreaFrame: *mut nsIAtom; - #[link_name = "?auto_generated@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?auto_generated@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_auto_generated: *mut nsIAtom; - #[link_name = "?banner@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?banner@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_banner: *mut nsIAtom; - #[link_name = "?checkable@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?checkable@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_checkable: *mut nsIAtom; - #[link_name = "?choices@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?choices@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_choices: *mut nsIAtom; - #[link_name = "?columnheader@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?columnheader@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_columnheader: *mut nsIAtom; - #[link_name = "?complementary@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?complementary@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_complementary: *mut nsIAtom; - #[link_name = "?containerAtomic@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?containerAtomic@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_containerAtomic: *mut nsIAtom; - #[link_name = "?containerBusy@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?containerBusy@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_containerBusy: *mut nsIAtom; - #[link_name = "?containerLive@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?containerLive@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_containerLive: *mut nsIAtom; - #[link_name = "?containerLiveRole@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?containerLiveRole@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_containerLiveRole: *mut nsIAtom; - #[link_name = "?containerRelevant@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?containerRelevant@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_containerRelevant: *mut nsIAtom; - #[link_name = "?contentinfo@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?contentinfo@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_contentinfo: *mut nsIAtom; - #[link_name = "?cycles@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?cycles@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_cycles: *mut nsIAtom; - #[link_name = "?datatable@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?datatable@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_datatable: *mut nsIAtom; - #[link_name = "?eventFromInput@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?eventFromInput@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_eventFromInput: *mut nsIAtom; - #[link_name = "?feed@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?feed@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_feed: *mut nsIAtom; - #[link_name = "?grammar@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?grammar@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_grammar: *mut nsIAtom; - #[link_name = "?gridcell@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?gridcell@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_gridcell: *mut nsIAtom; - #[link_name = "?heading@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?heading@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_heading: *mut nsIAtom; - #[link_name = "?hitregion@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?hitregion@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_hitregion: *mut nsIAtom; - #[link_name = "?InlineBlockFrame@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?InlineBlockFrame@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_InlineBlockFrame: *mut nsIAtom; - #[link_name = "?inlinevalue@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?inlinevalue@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_inlinevalue: *mut nsIAtom; - #[link_name = "?invalid@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?invalid@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_invalid: *mut nsIAtom; - #[link_name = "?item@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?item@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_item: *mut nsIAtom; - #[link_name = "?itemset@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?itemset@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_itemset: *mut nsIAtom; - #[link_name = "?lineNumber@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?lineNumber@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_lineNumber: *mut nsIAtom; - #[link_name = "?linkedPanel@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?linkedPanel@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_linkedPanel: *mut nsIAtom; - #[link_name = "?live@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?live@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_live: *mut nsIAtom; - #[link_name = "?menuitemcheckbox@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?menuitemcheckbox@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_menuitemcheckbox: *mut nsIAtom; - #[link_name = "?menuitemradio@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?menuitemradio@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_menuitemradio: *mut nsIAtom; - #[link_name = "?mixed@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?mixed@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_mixed: *mut nsIAtom; - #[link_name = "?multiline@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?multiline@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_multiline: *mut nsIAtom; - #[link_name = "?navigation@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?navigation@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_navigation: *mut nsIAtom; - #[link_name = "?polite@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?polite@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_polite: *mut nsIAtom; - #[link_name = "?posinset@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?posinset@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_posinset: *mut nsIAtom; - #[link_name = "?presentation@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?presentation@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_presentation: *mut nsIAtom; - #[link_name = "?progressbar@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?progressbar@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_progressbar: *mut nsIAtom; - #[link_name = "?region@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?region@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_region: *mut nsIAtom; - #[link_name = "?rowgroup@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rowgroup@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rowgroup: *mut nsIAtom; - #[link_name = "?rowheader@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?rowheader@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_rowheader: *mut nsIAtom; - #[link_name = "?search@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?search@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_search: *mut nsIAtom; - #[link_name = "?searchbox@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?searchbox@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_searchbox: *mut nsIAtom; - #[link_name = "?select1@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?select1@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_select1: *mut nsIAtom; - #[link_name = "?setsize@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?setsize@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_setsize: *mut nsIAtom; - #[link_name = "?spelling@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?spelling@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_spelling: *mut nsIAtom; - #[link_name = "?spinbutton@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?spinbutton@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_spinbutton: *mut nsIAtom; - #[link_name = "?status@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?status@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_status: *mut nsIAtom; - #[link_name = "?_switch@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_switch@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__switch: *mut nsIAtom; - #[link_name = "?tableCellIndex@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?tableCellIndex@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_tableCellIndex: *mut nsIAtom; - #[link_name = "?tablist@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?tablist@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_tablist: *mut nsIAtom; - #[link_name = "?textIndent@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?textIndent@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_textIndent: *mut nsIAtom; - #[link_name = "?textInputType@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?textInputType@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_textInputType: *mut nsIAtom; - #[link_name = "?textLineThroughColor@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?textLineThroughColor@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_textLineThroughColor: *mut nsIAtom; - #[link_name = "?textLineThroughStyle@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?textLineThroughStyle@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_textLineThroughStyle: *mut nsIAtom; - #[link_name = "?textPosition@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?textPosition@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_textPosition: *mut nsIAtom; - #[link_name = "?textUnderlineColor@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?textUnderlineColor@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_textUnderlineColor: *mut nsIAtom; - #[link_name = "?textUnderlineStyle@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?textUnderlineStyle@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_textUnderlineStyle: *mut nsIAtom; - #[link_name = "?timer@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?timer@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_timer: *mut nsIAtom; - #[link_name = "?toolbarname@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?toolbarname@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_toolbarname: *mut nsIAtom; - #[link_name = "?toolbarseparator@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?toolbarseparator@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_toolbarseparator: *mut nsIAtom; - #[link_name = "?toolbarspacer@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?toolbarspacer@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_toolbarspacer: *mut nsIAtom; - #[link_name = "?toolbarspring@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?toolbarspring@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_toolbarspring: *mut nsIAtom; - #[link_name = "?treegrid@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?treegrid@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_treegrid: *mut nsIAtom; - #[link_name = "?_undefined@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?_undefined@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms__undefined: *mut nsIAtom; - #[link_name = "?xmlroles@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?xmlroles@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_xmlroles: *mut nsIAtom; - #[link_name = "?close_fence@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?close_fence@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_close_fence: *mut nsIAtom; - #[link_name = "?denominator@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?denominator@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_denominator: *mut nsIAtom; - #[link_name = "?numerator@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?numerator@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_numerator: *mut nsIAtom; - #[link_name = "?open_fence@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?open_fence@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_open_fence: *mut nsIAtom; - #[link_name = "?overscript@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?overscript@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_overscript: *mut nsIAtom; - #[link_name = "?presubscript@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?presubscript@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_presubscript: *mut nsIAtom; - #[link_name = "?presuperscript@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?presuperscript@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_presuperscript: *mut nsIAtom; - #[link_name = "?root_index@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?root_index@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_root_index: *mut nsIAtom; - #[link_name = "?subscript@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?subscript@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_subscript: *mut nsIAtom; - #[link_name = "?superscript@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?superscript@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_superscript: *mut nsIAtom; - #[link_name = "?underscript@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?underscript@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_underscript: *mut nsIAtom; - #[link_name = "?onaudiostart@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onaudiostart@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onaudiostart: *mut nsIAtom; - #[link_name = "?onaudioend@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onaudioend@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onaudioend: *mut nsIAtom; - #[link_name = "?onsoundstart@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onsoundstart@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onsoundstart: *mut nsIAtom; - #[link_name = "?onsoundend@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onsoundend@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onsoundend: *mut nsIAtom; - #[link_name = "?onspeechstart@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onspeechstart@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onspeechstart: *mut nsIAtom; - #[link_name = "?onspeechend@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onspeechend@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onspeechend: *mut nsIAtom; - #[link_name = "?onresult@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onresult@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onresult: *mut nsIAtom; - #[link_name = "?onnomatch@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onnomatch@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onnomatch: *mut nsIAtom; - #[link_name = "?onresume@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onresume@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onresume: *mut nsIAtom; - #[link_name = "?onmark@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onmark@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onmark: *mut nsIAtom; - #[link_name = "?onboundary@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onboundary@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onboundary: *mut nsIAtom; - #[link_name = "?usercontextid@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?usercontextid@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_usercontextid: *mut nsIAtom; - #[link_name = "?nsuri_xmlns@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?nsuri_xmlns@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_nsuri_xmlns: *mut nsIAtom; - #[link_name = "?nsuri_xml@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?nsuri_xml@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_nsuri_xml: *mut nsIAtom; - #[link_name = "?nsuri_xhtml@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?nsuri_xhtml@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_nsuri_xhtml: *mut nsIAtom; - #[link_name = "?nsuri_xlink@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?nsuri_xlink@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_nsuri_xlink: *mut nsIAtom; - #[link_name = "?nsuri_xslt@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?nsuri_xslt@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_nsuri_xslt: *mut nsIAtom; - #[link_name = "?nsuri_xbl@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?nsuri_xbl@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_nsuri_xbl: *mut nsIAtom; - #[link_name = "?nsuri_mathml@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?nsuri_mathml@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_nsuri_mathml: *mut nsIAtom; - #[link_name = "?nsuri_rdf@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?nsuri_rdf@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_nsuri_rdf: *mut nsIAtom; - #[link_name = "?nsuri_xul@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?nsuri_xul@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_nsuri_xul: *mut nsIAtom; - #[link_name = "?nsuri_svg@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?nsuri_svg@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_nsuri_svg: *mut nsIAtom; - #[link_name = "?onsourceopen@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onsourceopen@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onsourceopen: *mut nsIAtom; - #[link_name = "?onsourceended@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onsourceended@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onsourceended: *mut nsIAtom; - #[link_name = "?onsourceclosed@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onsourceclosed@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onsourceclosed: *mut nsIAtom; - #[link_name = "?onupdatestart@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onupdatestart@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onupdatestart: *mut nsIAtom; - #[link_name = "?onupdate@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onupdate@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onupdate: *mut nsIAtom; - #[link_name = "?onupdateend@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onupdateend@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onupdateend: *mut nsIAtom; - #[link_name = "?onaddsourcebuffer@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onaddsourcebuffer@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onaddsourcebuffer: *mut nsIAtom; - #[link_name = "?onremovesourcebuffer@nsGkAtoms@@2PAVnsIAtom@@A"] + #[link_name = "\x01?onremovesourcebuffer@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_onremovesourcebuffer: *mut nsIAtom; - #[link_name = "?after@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] + #[link_name = "\x01?after@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] pub static nsCSSPseudoElements_after: *mut nsICSSPseudoElement; - #[link_name = "?before@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] + #[link_name = "\x01?before@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] pub static nsCSSPseudoElements_before: *mut nsICSSPseudoElement; - #[link_name = "?backdrop@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] + #[link_name = "\x01?backdrop@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] pub static nsCSSPseudoElements_backdrop: *mut nsICSSPseudoElement; - #[link_name = "?firstLetter@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] + #[link_name = "\x01?firstLetter@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] pub static nsCSSPseudoElements_firstLetter: *mut nsICSSPseudoElement; - #[link_name = "?firstLine@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] + #[link_name = "\x01?firstLine@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] pub static nsCSSPseudoElements_firstLine: *mut nsICSSPseudoElement; - #[link_name = "?mozSelection@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] + #[link_name = "\x01?mozSelection@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] pub static nsCSSPseudoElements_mozSelection: *mut nsICSSPseudoElement; - #[link_name = "?mozFocusInner@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] + #[link_name = "\x01?mozFocusInner@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] pub static nsCSSPseudoElements_mozFocusInner: *mut nsICSSPseudoElement; - #[link_name = "?mozFocusOuter@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] + #[link_name = "\x01?mozFocusOuter@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] pub static nsCSSPseudoElements_mozFocusOuter: *mut nsICSSPseudoElement; - #[link_name = "?mozListBullet@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] + #[link_name = "\x01?mozListBullet@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] pub static nsCSSPseudoElements_mozListBullet: *mut nsICSSPseudoElement; - #[link_name = "?mozListNumber@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] + #[link_name = "\x01?mozListNumber@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] pub static nsCSSPseudoElements_mozListNumber: *mut nsICSSPseudoElement; - #[link_name = "?mozMathAnonymous@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] + #[link_name = "\x01?mozMathAnonymous@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] pub static nsCSSPseudoElements_mozMathAnonymous: *mut nsICSSPseudoElement; - #[link_name = "?mozNumberWrapper@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] + #[link_name = "\x01?mozNumberWrapper@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] pub static nsCSSPseudoElements_mozNumberWrapper: *mut nsICSSPseudoElement; - #[link_name = "?mozNumberText@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] + #[link_name = "\x01?mozNumberText@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] pub static nsCSSPseudoElements_mozNumberText: *mut nsICSSPseudoElement; - #[link_name = "?mozNumberSpinBox@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] + #[link_name = "\x01?mozNumberSpinBox@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] pub static nsCSSPseudoElements_mozNumberSpinBox: *mut nsICSSPseudoElement; - #[link_name = "?mozNumberSpinUp@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] + #[link_name = "\x01?mozNumberSpinUp@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] pub static nsCSSPseudoElements_mozNumberSpinUp: *mut nsICSSPseudoElement; - #[link_name = "?mozNumberSpinDown@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] + #[link_name = "\x01?mozNumberSpinDown@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] pub static nsCSSPseudoElements_mozNumberSpinDown: *mut nsICSSPseudoElement; - #[link_name = "?mozProgressBar@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] + #[link_name = "\x01?mozProgressBar@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] pub static nsCSSPseudoElements_mozProgressBar: *mut nsICSSPseudoElement; - #[link_name = "?mozRangeTrack@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] + #[link_name = "\x01?mozRangeTrack@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] pub static nsCSSPseudoElements_mozRangeTrack: *mut nsICSSPseudoElement; - #[link_name = "?mozRangeProgress@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] + #[link_name = "\x01?mozRangeProgress@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] pub static nsCSSPseudoElements_mozRangeProgress: *mut nsICSSPseudoElement; - #[link_name = "?mozRangeThumb@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] + #[link_name = "\x01?mozRangeThumb@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] pub static nsCSSPseudoElements_mozRangeThumb: *mut nsICSSPseudoElement; - #[link_name = "?mozMeterBar@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] + #[link_name = "\x01?mozMeterBar@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] pub static nsCSSPseudoElements_mozMeterBar: *mut nsICSSPseudoElement; - #[link_name = "?mozPlaceholder@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] + #[link_name = "\x01?mozPlaceholder@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] pub static nsCSSPseudoElements_mozPlaceholder: *mut nsICSSPseudoElement; - #[link_name = "?mozColorSwatch@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] + #[link_name = "\x01?mozColorSwatch@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] pub static nsCSSPseudoElements_mozColorSwatch: *mut nsICSSPseudoElement; - #[link_name = "?mozText@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?mozText@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_mozText: *mut nsICSSAnonBoxPseudo; - #[link_name = "?mozOtherNonElement@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?mozOtherNonElement@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_mozOtherNonElement: *mut nsICSSAnonBoxPseudo; - #[link_name = "?mozAnonymousBlock@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?mozAnonymousBlock@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_mozAnonymousBlock: *mut nsICSSAnonBoxPseudo; - #[link_name = "?mozAnonymousPositionedBlock@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?mozAnonymousPositionedBlock@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_mozAnonymousPositionedBlock: *mut nsICSSAnonBoxPseudo; - #[link_name = "?mozMathMLAnonymousBlock@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?mozMathMLAnonymousBlock@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_mozMathMLAnonymousBlock: *mut nsICSSAnonBoxPseudo; - #[link_name = "?mozXULAnonymousBlock@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?mozXULAnonymousBlock@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_mozXULAnonymousBlock: *mut nsICSSAnonBoxPseudo; - #[link_name = "?horizontalFramesetBorder@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?horizontalFramesetBorder@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_horizontalFramesetBorder: *mut nsICSSAnonBoxPseudo; - #[link_name = "?verticalFramesetBorder@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?verticalFramesetBorder@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_verticalFramesetBorder: *mut nsICSSAnonBoxPseudo; - #[link_name = "?mozLineFrame@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?mozLineFrame@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_mozLineFrame: *mut nsICSSAnonBoxPseudo; - #[link_name = "?buttonContent@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?buttonContent@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_buttonContent: *mut nsICSSAnonBoxPseudo; - #[link_name = "?mozButtonLabel@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?mozButtonLabel@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_mozButtonLabel: *mut nsICSSAnonBoxPseudo; - #[link_name = "?cellContent@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?cellContent@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_cellContent: *mut nsICSSAnonBoxPseudo; - #[link_name = "?dropDownList@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?dropDownList@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_dropDownList: *mut nsICSSAnonBoxPseudo; - #[link_name = "?fieldsetContent@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?fieldsetContent@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_fieldsetContent: *mut nsICSSAnonBoxPseudo; - #[link_name = "?framesetBlank@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?framesetBlank@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_framesetBlank: *mut nsICSSAnonBoxPseudo; - #[link_name = "?mozDisplayComboboxControlFrame@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?mozDisplayComboboxControlFrame@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_mozDisplayComboboxControlFrame: *mut nsICSSAnonBoxPseudo; - #[link_name = "?htmlCanvasContent@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?htmlCanvasContent@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_htmlCanvasContent: *mut nsICSSAnonBoxPseudo; - #[link_name = "?inlineTable@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?inlineTable@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_inlineTable: *mut nsICSSAnonBoxPseudo; - #[link_name = "?table@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?table@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_table: *mut nsICSSAnonBoxPseudo; - #[link_name = "?tableCell@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?tableCell@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_tableCell: *mut nsICSSAnonBoxPseudo; - #[link_name = "?tableColGroup@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?tableColGroup@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_tableColGroup: *mut nsICSSAnonBoxPseudo; - #[link_name = "?tableCol@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?tableCol@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_tableCol: *mut nsICSSAnonBoxPseudo; - #[link_name = "?tableWrapper@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?tableWrapper@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_tableWrapper: *mut nsICSSAnonBoxPseudo; - #[link_name = "?tableRowGroup@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?tableRowGroup@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_tableRowGroup: *mut nsICSSAnonBoxPseudo; - #[link_name = "?tableRow@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?tableRow@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_tableRow: *mut nsICSSAnonBoxPseudo; - #[link_name = "?canvas@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?canvas@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_canvas: *mut nsICSSAnonBoxPseudo; - #[link_name = "?pageBreak@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?pageBreak@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_pageBreak: *mut nsICSSAnonBoxPseudo; - #[link_name = "?page@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?page@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_page: *mut nsICSSAnonBoxPseudo; - #[link_name = "?pageContent@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?pageContent@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_pageContent: *mut nsICSSAnonBoxPseudo; - #[link_name = "?pageSequence@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?pageSequence@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_pageSequence: *mut nsICSSAnonBoxPseudo; - #[link_name = "?scrolledContent@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?scrolledContent@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_scrolledContent: *mut nsICSSAnonBoxPseudo; - #[link_name = "?scrolledCanvas@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?scrolledCanvas@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_scrolledCanvas: *mut nsICSSAnonBoxPseudo; - #[link_name = "?scrolledPageSequence@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?scrolledPageSequence@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_scrolledPageSequence: *mut nsICSSAnonBoxPseudo; - #[link_name = "?columnContent@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?columnContent@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_columnContent: *mut nsICSSAnonBoxPseudo; - #[link_name = "?viewport@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?viewport@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_viewport: *mut nsICSSAnonBoxPseudo; - #[link_name = "?viewportScroll@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?viewportScroll@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_viewportScroll: *mut nsICSSAnonBoxPseudo; - #[link_name = "?anonymousFlexItem@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?anonymousFlexItem@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_anonymousFlexItem: *mut nsICSSAnonBoxPseudo; - #[link_name = "?anonymousGridItem@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?anonymousGridItem@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_anonymousGridItem: *mut nsICSSAnonBoxPseudo; - #[link_name = "?ruby@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?ruby@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_ruby: *mut nsICSSAnonBoxPseudo; - #[link_name = "?rubyBase@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?rubyBase@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_rubyBase: *mut nsICSSAnonBoxPseudo; - #[link_name = "?rubyBaseContainer@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?rubyBaseContainer@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_rubyBaseContainer: *mut nsICSSAnonBoxPseudo; - #[link_name = "?rubyText@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?rubyText@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_rubyText: *mut nsICSSAnonBoxPseudo; - #[link_name = "?rubyTextContainer@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?rubyTextContainer@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_rubyTextContainer: *mut nsICSSAnonBoxPseudo; - #[link_name = "?moztreecolumn@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?moztreecolumn@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_moztreecolumn: *mut nsICSSAnonBoxPseudo; - #[link_name = "?moztreerow@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?moztreerow@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_moztreerow: *mut nsICSSAnonBoxPseudo; - #[link_name = "?moztreeseparator@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?moztreeseparator@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_moztreeseparator: *mut nsICSSAnonBoxPseudo; - #[link_name = "?moztreecell@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?moztreecell@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_moztreecell: *mut nsICSSAnonBoxPseudo; - #[link_name = "?moztreeindentation@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?moztreeindentation@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_moztreeindentation: *mut nsICSSAnonBoxPseudo; - #[link_name = "?moztreeline@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?moztreeline@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_moztreeline: *mut nsICSSAnonBoxPseudo; - #[link_name = "?moztreetwisty@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?moztreetwisty@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_moztreetwisty: *mut nsICSSAnonBoxPseudo; - #[link_name = "?moztreeimage@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?moztreeimage@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_moztreeimage: *mut nsICSSAnonBoxPseudo; - #[link_name = "?moztreecelltext@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?moztreecelltext@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_moztreecelltext: *mut nsICSSAnonBoxPseudo; - #[link_name = "?moztreecheckbox@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?moztreecheckbox@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_moztreecheckbox: *mut nsICSSAnonBoxPseudo; - #[link_name = "?moztreeprogressmeter@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?moztreeprogressmeter@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_moztreeprogressmeter: *mut nsICSSAnonBoxPseudo; - #[link_name = "?moztreedropfeedback@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?moztreedropfeedback@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_moztreedropfeedback: *mut nsICSSAnonBoxPseudo; - #[link_name = "?mozSVGMarkerAnonChild@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?mozSVGMarkerAnonChild@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_mozSVGMarkerAnonChild: *mut nsICSSAnonBoxPseudo; - #[link_name = "?mozSVGOuterSVGAnonChild@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?mozSVGOuterSVGAnonChild@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_mozSVGOuterSVGAnonChild: *mut nsICSSAnonBoxPseudo; - #[link_name = "?mozSVGForeignContent@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?mozSVGForeignContent@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_mozSVGForeignContent: *mut nsICSSAnonBoxPseudo; - #[link_name = "?mozSVGText@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] + #[link_name = "\x01?mozSVGText@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_mozSVGText: *mut nsICSSAnonBoxPseudo; } } diff --git a/ports/geckolib/wrapper.rs b/ports/geckolib/wrapper.rs index c168b1dcaaa..712febe446d 100644 --- a/ports/geckolib/wrapper.rs +++ b/ports/geckolib/wrapper.rs @@ -35,7 +35,6 @@ use snapshot::GeckoElementSnapshot; use snapshot_helpers; use std::fmt; use std::marker::PhantomData; -use std::mem::transmute; use std::ops::BitOr; use std::ptr; use std::sync::Arc; @@ -414,6 +413,8 @@ impl<'ld> TDocument for GeckoDocument<'ld> { let elements = unsafe { self.document.drain_modified_elements() }; elements.into_iter().map(|(el, snapshot)| (ServoLayoutElement::from_layout_js(el), snapshot)).collect()*/ } + fn will_paint(&self) { unimplemented!() } + fn needs_paint_from_layout(&self) { unimplemented!() } } #[derive(Clone, Copy)] @@ -460,8 +461,6 @@ lazy_static! { }; } -static NO_STYLE_ATTRIBUTE: Option<PropertyDeclarationBlock> = None; - impl<'le> TElement for GeckoElement<'le> { type ConcreteNode = GeckoNode<'le>; type ConcreteDocument = GeckoDocument<'le>; @@ -470,14 +469,16 @@ impl<'le> TElement for GeckoElement<'le> { unsafe { GeckoNode::from_raw(self.element as *mut RawGeckoNode) } } - fn style_attribute(&self) -> &Option<PropertyDeclarationBlock> { + fn style_attribute(&self) -> Option<&Arc<PropertyDeclarationBlock>> { let declarations = unsafe { Gecko_GetServoDeclarationBlock(self.element) }; if declarations.is_null() { - &NO_STYLE_ATTRIBUTE + None } else { - GeckoDeclarationBlock::with(declarations, |declarations| { - unsafe { transmute(&declarations.declarations) } - }) + let opt_ptr = GeckoDeclarationBlock::with(declarations, |declarations| { + // Use a raw pointer to extend the lifetime + declarations.declarations.as_ref().map(|r| r as *const Arc<_>) + }); + opt_ptr.map(|ptr| unsafe { &*ptr }) } } diff --git a/python/mach_bootstrap.py b/python/mach_bootstrap.py index d63f66492d5..b5b94a72660 100644 --- a/python/mach_bootstrap.py +++ b/python/mach_bootstrap.py @@ -6,9 +6,9 @@ from __future__ import print_function, unicode_literals import os import platform -import subprocess import sys from distutils.spawn import find_executable +from subprocess import PIPE, Popen SEARCH_PATHS = [ os.path.join("python", "tidy"), @@ -26,7 +26,6 @@ MACH_MODULES = [ os.path.join('python', 'servo', 'devenv_commands.py'), ] - CATEGORIES = { 'bootstrap': { 'short': 'Bootstrap Commands', @@ -76,55 +75,53 @@ CATEGORIES = { } } +# Possible names of executables +PYTHON_NAMES = ["python-2.7", "python2.7", "python2", "python"] +VIRTUALENV_NAMES = ["virtualenv-2.7", "virtualenv2.7", "virtualenv2", "virtualenv"] +PIP_NAMES = ["pip-2.7", "pip2.7", "pip2", "pip"] + -def _get_exec(*names): +def _get_exec_path(names, is_valid_path=lambda _path: True): for name in names: path = find_executable(name) - if path is not None: + if path and is_valid_path(path): return path return None def _get_virtualenv_script_dir(): # Virtualenv calls its scripts folder "bin" on linux/OSX/MSYS64 but "Scripts" on Windows - if os.name == "nt" and os.path.sep != "/": + if os.name == "nt" and os.sep != "/": return "Scripts" return "bin" -# Possible names of executables, sorted from most to least specific -PYTHON_NAMES = ["python-2.7", "python2.7", "python2", "python"] -VIRTUALENV_NAMES = ["virtualenv-2.7", "virtualenv2.7", "virtualenv2", "virtualenv"] -PIP_NAMES = ["pip-2.7", "pip2.7", "pip2", "pip"] - - def _activate_virtualenv(topdir): virtualenv_path = os.path.join(topdir, "python", "_virtualenv") - python = _get_exec(*PYTHON_NAMES) - if python is None: - sys.exit("Python is not installed. Please install it prior to running mach.") + check_exec_path = lambda path: path.startswith(virtualenv_path) + python = _get_exec_path(PYTHON_NAMES) # If there was no python, mach wouldn't have run at all! + if not python: + sys.exit('Failed to find python executable for starting virtualenv.') script_dir = _get_virtualenv_script_dir() activate_path = os.path.join(virtualenv_path, script_dir, "activate_this.py") if not (os.path.exists(virtualenv_path) and os.path.exists(activate_path)): - virtualenv = _get_exec(*VIRTUALENV_NAMES) - if virtualenv is None: + virtualenv = _get_exec_path(VIRTUALENV_NAMES) + if not virtualenv: sys.exit("Python virtualenv is not installed. Please install it prior to running mach.") - process = subprocess.Popen( - [virtualenv, "-p", python, virtualenv_path], - stdout=subprocess.PIPE, - stderr=subprocess.PIPE) + process = Popen([virtualenv, "-p", python, virtualenv_path], stdout=PIPE, stderr=PIPE) process.wait() if process.returncode: - sys.exit("Python virtualenv failed to execute properly: {}" - .format(process.communicate()[1])) + out, err = process.communicate() + print('Python virtualenv failed to execute properly:') + sys.exit('Output: %s\nError: %s' % (out, err)) execfile(activate_path, dict(__file__=activate_path)) - python = find_executable("python") - if python is None or not python.startswith(virtualenv_path): - sys.exit("Python virtualenv failed to activate.") + python = _get_exec_path(PYTHON_NAMES, is_valid_path=check_exec_path) + if not python: + sys.exit("Python executable in virtualenv failed to activate.") # TODO: Right now, we iteratively install all the requirements by invoking # `pip install` each time. If it were the case that there were conflicting @@ -138,28 +135,28 @@ def _activate_virtualenv(topdir): os.path.join("tests", "wpt", "harness", "requirements_firefox.txt"), os.path.join("tests", "wpt", "harness", "requirements_servo.txt"), ] + for req_rel_path in requirements_paths: req_path = os.path.join(topdir, req_rel_path) marker_file = req_rel_path.replace(os.path.sep, '-') marker_path = os.path.join(virtualenv_path, marker_file) + try: if os.path.getmtime(req_path) + 10 < os.path.getmtime(marker_path): continue except OSError: pass - pip = _get_exec(*PIP_NAMES) - if pip is None: - sys.exit("Python pip is not installed. Please install it prior to running mach.") + pip = _get_exec_path(PIP_NAMES, is_valid_path=check_exec_path) + if not pip: + sys.exit("Python pip is either not installed or not found in virtualenv.") - process = subprocess.Popen( - [pip, "install", "-q", "-r", req_path], - stdout=subprocess.PIPE, - stderr=subprocess.PIPE) + process = Popen([pip, "install", "-q", "-r", req_path], stdout=PIPE, stderr=PIPE) process.wait() if process.returncode: - sys.exit("Pip failed to execute properly: {}" - .format(process.communicate()[1])) + out, err = process.communicate() + print('Pip failed to execute properly:') + sys.exit('Output: %s\nError: %s' % (out, err)) open(marker_path, 'w').close() @@ -199,8 +196,7 @@ def bootstrap(topdir): sys.exit(1) # Ensure we are running Python 2.7+. We put this check here so we generate a - # user-friendly error message rather than a cryptic stack trace on module - # import. + # user-friendly error message rather than a cryptic stack trace on module import. if not (3, 0) > sys.version_info >= (2, 7): print('Python 2.7 or above (but not Python 3) is required to run mach.') print('You are running Python', platform.python_version()) @@ -221,8 +217,7 @@ def bootstrap(topdir): mach.populate_context_handler = populate_context for category, meta in CATEGORIES.items(): - mach.define_category(category, meta['short'], meta['long'], - meta['priority']) + mach.define_category(category, meta['short'], meta['long'], meta['priority']) for path in MACH_MODULES: mach.load_commands_from_file(os.path.join(topdir, path)) diff --git a/python/tidy/servo_tidy/tidy.py b/python/tidy/servo_tidy/tidy.py index de3f83b84bd..340a3cd1a83 100644 --- a/python/tidy/servo_tidy/tidy.py +++ b/python/tidy/servo_tidy/tidy.py @@ -739,6 +739,9 @@ def collect_errors_for_files(files_to_check, checking_functions, line_checking_f continue with open(filename, "r") as f: contents = f.read() + if not contents.strip(): + yield filename, 0, "file is empty" + continue for check in checking_functions: for error in check(filename, contents): # the result will be: `(filename, line, message)` diff --git a/python/tidy/servo_tidy_tests/empty_file.rs b/python/tidy/servo_tidy_tests/empty_file.rs new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/python/tidy/servo_tidy_tests/empty_file.rs diff --git a/python/tidy/servo_tidy_tests/test_tidy.py b/python/tidy/servo_tidy_tests/test_tidy.py index 746783d1759..c35e4b533d1 100644 --- a/python/tidy/servo_tidy_tests/test_tidy.py +++ b/python/tidy/servo_tidy_tests/test_tidy.py @@ -39,6 +39,11 @@ class CheckTidiness(unittest.TestCase): self.assertEqual('no newline at EOF', errors.next()[2]) self.assertNoMoreErrors(errors) + def test_empty_file(self): + errors = tidy.collect_errors_for_files(iterFile('empty_file.rs'), [], [tidy.check_by_line], print_text=False) + self.assertEqual('file is empty', errors.next()[2]) + self.assertNoMoreErrors(errors) + def test_long_line(self): errors = tidy.collect_errors_for_files(iterFile('long_line.rs'), [], [tidy.check_by_line], print_text=False) self.assertEqual('Line is longer than 120 characters', errors.next()[2]) diff --git a/python/tidy/setup.py b/python/tidy/setup.py index 80d2140f3ec..0f7e125f085 100644 --- a/python/tidy/setup.py +++ b/python/tidy/setup.py @@ -11,7 +11,7 @@ import os from setuptools import setup, find_packages -VERSION = '0.1.0' +VERSION = '0.2.0' install_requires = [ "flake8==2.4.1", diff --git a/resources/shaders/prim_shared.glsl b/resources/shaders/prim_shared.glsl index 9c083cd337d..21d6c41e382 100644 --- a/resources/shaders/prim_shared.glsl +++ b/resources/shaders/prim_shared.glsl @@ -3,15 +3,17 @@ * 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/. */ -#define PST_INVALID uint(0) -#define PST_TOP_LEFT uint(1) -#define PST_TOP_RIGHT uint(2) -#define PST_BOTTOM_LEFT uint(3) -#define PST_BOTTOM_RIGHT uint(4) -#define PST_TOP uint(5) -#define PST_LEFT uint(6) -#define PST_BOTTOM uint(7) -#define PST_RIGHT uint(8) +#define PST_TOP_LEFT uint(0) +#define PST_TOP_RIGHT uint(1) +#define PST_BOTTOM_LEFT uint(2) +#define PST_BOTTOM_RIGHT uint(3) +#define PST_TOP uint(4) +#define PST_LEFT uint(5) +#define PST_BOTTOM uint(6) +#define PST_RIGHT uint(7) + +#define UV_NORMALIZED uint(0) +#define UV_PIXEL uint(1) // Border styles as defined in webrender_traits/types.rs #define BORDER_STYLE_NONE uint(0) @@ -25,6 +27,8 @@ #define BORDER_STYLE_INSET uint(8) #define BORDER_STYLE_OUTSET uint(9) +#define MAX_STOPS_PER_ANGLE_GRADIENT 8 + #ifdef WR_VERTEX_SHADER struct Layer { mat4 transform; @@ -33,30 +37,89 @@ struct Layer { vec4 screen_vertices[4]; }; +layout(std140) uniform Data { + vec4 data[WR_MAX_UBO_VECTORS]; +}; + +layout(std140) uniform Tiles { + vec4 tiles[WR_MAX_UBO_VECTORS]; +}; + layout(std140) uniform Layers { - Layer layers[WR_MAX_PRIM_LAYERS]; + vec4 layers[WR_MAX_UBO_VECTORS]; }; +Layer fetch_layer(int index) { + Layer layer; + + int offset = index * 13; + + layer.transform[0] = layers[offset + 0]; + layer.transform[1] = layers[offset + 1]; + layer.transform[2] = layers[offset + 2]; + layer.transform[3] = layers[offset + 3]; + + layer.inv_transform[0] = layers[offset + 4]; + layer.inv_transform[1] = layers[offset + 5]; + layer.inv_transform[2] = layers[offset + 6]; + layer.inv_transform[3] = layers[offset + 7]; + + layer.local_clip_rect = layers[offset + 8]; + + layer.screen_vertices[0] = layers[offset + 9]; + layer.screen_vertices[1] = layers[offset + 10]; + layer.screen_vertices[2] = layers[offset + 11]; + layer.screen_vertices[3] = layers[offset + 12]; + + return layer; +} + struct Tile { - uvec4 actual_rect; - uvec4 target_rect; + vec4 actual_rect; + vec4 target_rect; }; -layout(std140) uniform Tiles { - Tile tiles[WR_MAX_PRIM_TILES]; -}; +Tile fetch_tile(int index) { + Tile tile; + + int offset = index * 2; + + tile.actual_rect = tiles[offset + 0]; + tile.target_rect = tiles[offset + 1]; + + return tile; +} struct PrimitiveInfo { - uvec4 layer_tile_part; + vec4 layer_tile; vec4 local_clip_rect; vec4 local_rect; }; +PrimitiveInfo unpack_prim_info(int offset) { + PrimitiveInfo info; + + info.layer_tile = data[offset + 0]; + info.local_clip_rect = data[offset + 1]; + info.local_rect = data[offset + 2]; + + return info; +} + struct ClipCorner { vec4 rect; vec4 outer_inner_radius; }; +ClipCorner unpack_clip_corner(int offset) { + ClipCorner corner; + + corner.rect = data[offset + 0]; + corner.outer_inner_radius = data[offset + 1]; + + return corner; +} + struct Clip { vec4 rect; ClipCorner top_left; @@ -65,6 +128,18 @@ struct Clip { ClipCorner bottom_right; }; +Clip unpack_clip(int offset) { + Clip clip; + + clip.rect = data[offset + 0]; + clip.top_left = unpack_clip_corner(offset + 1); + clip.top_right = unpack_clip_corner(offset + 3); + clip.bottom_left = unpack_clip_corner(offset + 5); + clip.bottom_right = unpack_clip_corner(offset + 7); + + return clip; +} + bool ray_plane(vec3 normal, vec3 point, vec3 ray_origin, vec3 ray_dir, out float t) { float denom = dot(normal, ray_dir); @@ -89,8 +164,7 @@ vec4 untransform(vec2 ref, vec3 n, vec3 a, mat4 inv_transform) { return r; } -vec3 get_layer_pos(vec2 pos, uint layer_index) { - Layer layer = layers[layer_index]; +vec3 get_layer_pos(vec2 pos, Layer layer) { vec3 a = layer.screen_vertices[0].xyz / layer.screen_vertices[0].w; vec3 b = layer.screen_vertices[3].xyz / layer.screen_vertices[3].w; vec3 c = layer.screen_vertices[2].xyz / layer.screen_vertices[2].w; @@ -111,8 +185,8 @@ struct VertexInfo { }; VertexInfo write_vertex(PrimitiveInfo info) { - Layer layer = layers[info.layer_tile_part.x]; - Tile tile = tiles[info.layer_tile_part.y]; + Layer layer = fetch_layer(int(info.layer_tile.x)); + Tile tile = fetch_tile(int(info.layer_tile.y)); vec2 p0 = floor(0.5 + info.local_rect.xy * uDevicePixelRatio) / uDevicePixelRatio; vec2 p1 = floor(0.5 + (info.local_rect.xy + info.local_rect.zw) * uDevicePixelRatio) / uDevicePixelRatio; @@ -153,8 +227,8 @@ struct TransformVertexInfo { }; TransformVertexInfo write_transform_vertex(PrimitiveInfo info) { - Layer layer = layers[info.layer_tile_part.x]; - Tile tile = tiles[info.layer_tile_part.y]; + Layer layer = fetch_layer(int(info.layer_tile.x)); + Tile tile = fetch_tile(int(info.layer_tile.y)); vec2 lp0 = info.local_rect.xy; vec2 lp1 = info.local_rect.xy + info.local_rect.zw; @@ -198,7 +272,7 @@ TransformVertexInfo write_transform_vertex(PrimitiveInfo info) { max_pos_clamped, aPosition.xy); - vec3 layer_pos = get_layer_pos(clamped_pos / uDevicePixelRatio, info.layer_tile_part.x); + vec3 layer_pos = get_layer_pos(clamped_pos / uDevicePixelRatio, layer); vec2 final_pos = clamped_pos + vec2(tile.target_rect.xy) - vec2(tile.actual_rect.xy); @@ -206,6 +280,257 @@ TransformVertexInfo write_transform_vertex(PrimitiveInfo info) { return TransformVertexInfo(layer_pos, clipped_local_rect); } + +struct Rectangle { + PrimitiveInfo info; + vec4 color; +}; + +Rectangle fetch_rectangle(int index) { + Rectangle rect; + + int offset = index * 4; + + rect.info = unpack_prim_info(offset); + rect.color = data[offset + 3]; + + return rect; +} + +struct RectangleClip { + PrimitiveInfo info; + vec4 color; + Clip clip; +}; + +RectangleClip fetch_rectangle_clip(int index) { + RectangleClip rect; + + int offset = index * 13; + + rect.info = unpack_prim_info(offset); + rect.color = data[offset + 3]; + rect.clip = unpack_clip(offset + 4); + + return rect; +} + +struct Glyph { + PrimitiveInfo info; + vec4 color; + vec4 uv_rect; +}; + +Glyph fetch_glyph(int index) { + Glyph glyph; + + int offset = index * 5; + + glyph.info = unpack_prim_info(offset); + glyph.color = data[offset + 3]; + glyph.uv_rect = data[offset + 4]; + + return glyph; +} + +struct TextRunGlyph { + vec4 local_rect; + vec4 uv_rect; +}; + +struct TextRun { + PrimitiveInfo info; + vec4 color; + TextRunGlyph glyphs[WR_GLYPHS_PER_TEXT_RUN]; +}; + +PrimitiveInfo fetch_text_run_glyph(int index, out vec4 color, out vec4 uv_rect) { + int offset = 20 * (index / WR_GLYPHS_PER_TEXT_RUN); + int glyph_index = index % WR_GLYPHS_PER_TEXT_RUN; + int glyph_offset = offset + 4 + 2 * glyph_index; + + PrimitiveInfo info; + info.layer_tile = data[offset + 0]; + info.local_clip_rect = data[offset + 1]; + info.local_rect = data[glyph_offset + 0]; + + color = data[offset + 3]; + uv_rect = data[glyph_offset + 1]; + + return info; +} + +struct Image { + PrimitiveInfo info; + vec4 st_rect; // Location of the image texture in the texture atlas. + vec4 stretch_size_uvkind; // Size of the actual image. +}; + +Image fetch_image(int index) { + Image image; + + int offset = index * 5; + + image.info = unpack_prim_info(offset); + image.st_rect = data[offset + 3]; + image.stretch_size_uvkind = data[offset + 4]; + + return image; +} + +struct ImageClip { + PrimitiveInfo info; + vec4 st_rect; // Location of the image texture in the texture atlas. + vec4 stretch_size_uvkind; // Size of the actual image. + Clip clip; +}; + +ImageClip fetch_image_clip(int index) { + ImageClip image; + + int offset = index * 14; + + image.info = unpack_prim_info(offset); + image.st_rect = data[offset + 3]; + image.stretch_size_uvkind = data[offset + 4]; + image.clip = unpack_clip(offset + 5); + + return image; +} + +struct Border { + PrimitiveInfo info; + vec4 verticalColor; + vec4 horizontalColor; + vec4 radii; + vec4 border_style_trbl; + vec4 part; +}; + +Border fetch_border(int index) { + Border border; + + int offset = index * 8; + + border.info = unpack_prim_info(offset); + border.verticalColor = data[offset + 3]; + border.horizontalColor = data[offset + 4]; + border.radii = data[offset + 5]; + border.border_style_trbl = data[offset + 6]; + border.part = data[offset + 7]; + + return border; +} + +struct BoxShadow { + PrimitiveInfo info; + vec4 color; + vec4 border_radii_blur_radius_inverted; + vec4 bs_rect; + vec4 src_rect; +}; + +BoxShadow fetch_boxshadow(int index) { + BoxShadow bs; + + int offset = index * 7; + + bs.info = unpack_prim_info(offset); + bs.color = data[offset + 3]; + bs.border_radii_blur_radius_inverted = data[offset + 4]; + bs.bs_rect = data[offset + 5]; + bs.src_rect = data[offset + 6]; + + return bs; +} + +struct AlignedGradient { + PrimitiveInfo info; + vec4 color0; + vec4 color1; + vec4 dir; + Clip clip; +}; + +AlignedGradient fetch_aligned_gradient(int index) { + AlignedGradient gradient; + + int offset = index * 15; + + gradient.info = unpack_prim_info(offset); + gradient.color0 = data[offset + 3]; + gradient.color1 = data[offset + 4]; + gradient.dir = data[offset + 5]; + gradient.clip = unpack_clip(offset + 6); + + return gradient; +} + +struct AngleGradient { + PrimitiveInfo info; + vec4 start_end_point; + vec4 stop_count; + vec4 colors[MAX_STOPS_PER_ANGLE_GRADIENT]; + vec4 offsets[MAX_STOPS_PER_ANGLE_GRADIENT/4]; +}; + +AngleGradient fetch_angle_gradient(int index) { + AngleGradient gradient; + + int offset = index * 15; + + gradient.info = unpack_prim_info(offset); + gradient.start_end_point = data[offset + 3]; + gradient.stop_count = data[offset + 4]; + + for (int i=0 ; i < MAX_STOPS_PER_ANGLE_GRADIENT ; ++i) { + gradient.colors[i] = data[offset + 5 + i]; + } + + for (int i=0 ; i < MAX_STOPS_PER_ANGLE_GRADIENT/4 ; ++i) { + gradient.offsets[i] = data[offset + 5 + MAX_STOPS_PER_ANGLE_GRADIENT + i]; + } + + return gradient; +} + +struct Blend { + vec4 target_rect; + vec4 src_rect; + vec4 opacity; +}; + +Blend fetch_blend(int index) { + Blend blend; + + int offset = index * 3; + + blend.target_rect = data[offset + 0]; + blend.src_rect = data[offset + 1]; + blend.opacity = data[offset + 2]; + + return blend; +} + +struct Composite { + vec4 src0; + vec4 src1; + vec4 target_rect; + vec4 info_amount; +}; + +Composite fetch_composite(int index) { + Composite composite; + + int offset = index * 4; + + composite.src0 = data[offset + 0]; + composite.src1 = data[offset + 1]; + composite.target_rect = data[offset + 2]; + composite.info_amount = data[offset + 3]; + + return composite; +} #endif #ifdef WR_FRAGMENT_SHADER diff --git a/resources/shaders/ps_angle_gradient.glsl b/resources/shaders/ps_angle_gradient.glsl index fae2211af50..0ef30941186 100644 --- a/resources/shaders/ps_angle_gradient.glsl +++ b/resources/shaders/ps_angle_gradient.glsl @@ -2,8 +2,6 @@ * 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/. */ -#define MAX_STOPS_PER_ANGLE_GRADIENT 8 - flat varying int vStopCount; flat varying float vAngle; flat varying vec2 vStartPoint; diff --git a/resources/shaders/ps_angle_gradient.vs.glsl b/resources/shaders/ps_angle_gradient.vs.glsl index 3b1601f2f54..716997d95ee 100644 --- a/resources/shaders/ps_angle_gradient.vs.glsl +++ b/resources/shaders/ps_angle_gradient.vs.glsl @@ -3,20 +3,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/. */ -struct AngleGradient { - PrimitiveInfo info; - vec4 start_end_point; - uvec4 stop_count; - vec4 colors[MAX_STOPS_PER_ANGLE_GRADIENT]; - vec4 offsets[MAX_STOPS_PER_ANGLE_GRADIENT/4]; -}; - -layout(std140) uniform Items { - AngleGradient gradients[WR_MAX_PRIM_ITEMS]; -}; - void main(void) { - AngleGradient gradient = gradients[gl_InstanceID]; + AngleGradient gradient = fetch_angle_gradient(gl_InstanceID); VertexInfo vi = write_vertex(gradient.info); vStopCount = int(gradient.stop_count.x); diff --git a/resources/shaders/ps_blend.vs.glsl b/resources/shaders/ps_blend.vs.glsl index eb61903b5cc..851c9b8962b 100644 --- a/resources/shaders/ps_blend.vs.glsl +++ b/resources/shaders/ps_blend.vs.glsl @@ -3,18 +3,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/. */ -struct Blend { - uvec4 target_rect; - uvec4 src_rect; - vec4 opacity; -}; - -layout(std140) uniform Items { - Blend blends[WR_MAX_PRIM_ITEMS]; -}; - void main(void) { - Blend blend = blends[gl_InstanceID]; + Blend blend = fetch_blend(gl_InstanceID); vec2 local_pos = mix(vec2(blend.target_rect.xy), vec2(blend.target_rect.xy + blend.target_rect.zw), diff --git a/resources/shaders/ps_border.fs.glsl b/resources/shaders/ps_border.fs.glsl index ef5b7ac16b2..17f19b58159 100644 --- a/resources/shaders/ps_border.fs.glsl +++ b/resources/shaders/ps_border.fs.glsl @@ -19,6 +19,39 @@ vec4 get_fragment_color(float distanceFromMixLine, float pixelsPerFragment) { return mix(vHorizontalColor, vVerticalColor, colorMix); } +float alpha_for_solid_border(float distance_from_ref, + float inner_radius, + float outer_radius, + float pixels_per_fragment) { + // We want to start anti-aliasing one pixel in from the border. + float nudge = 1 * pixels_per_fragment; + inner_radius += nudge; + outer_radius -= nudge; + + if ((distance_from_ref < outer_radius && distance_from_ref > inner_radius)) { + return 1.0; + } + + float distance_from_border = max(distance_from_ref - outer_radius, + inner_radius - distance_from_ref); + + // Move the distance back into pixels. + distance_from_border /= pixels_per_fragment; + + // Apply a more gradual fade out to transparent. + distance_from_border -= 0.5; + + return smoothstep(1.0, 0, distance_from_border); +} + +float alpha_for_solid_border_corner(vec2 local_pos, + float inner_radius, + float outer_radius, + float pixels_per_fragment) { + float distance_from_ref = distance(vRefPoint, local_pos); + return alpha_for_solid_border(distance_from_ref, inner_radius, outer_radius, pixels_per_fragment); +} + #ifdef WR_FEATURE_TRANSFORM #else @@ -29,15 +62,6 @@ vec4 drawCircle(vec2 aPixel, vec2 aDesiredPos, float aRadius, vec3 aColor) { return vec4(aColor, pixelInCircle); } -// Draw a rectangle at aRect fill it with aColor. Only works on non-rotated -// rects. -vec4 drawRect(vec2 aPixel, vec4 aRect, vec3 aColor) { - // GLSL origin is bottom left, positive Y is up - bool inRect = (aRect.x <= aPixel.x) && (aPixel.x <= aRect.x + aRect.z) && - (aPixel.y >= aRect.y) && (aPixel.y <= aRect.y + aRect.w); - return vec4(aColor, float(inRect)); -} - vec4 draw_dotted_edge() { // Everything here should be in device pixels. // We want the dot to be roughly the size of the whole border spacing @@ -76,97 +100,6 @@ vec4 draw_dotted_edge() { return mix(white, circleColor, circleColor.a); } -vec4 draw_double_edge(float pos, float len) { - // Devided border to 3 parts, draw color on first and third part, - // leave second part blank. - float one_third_len = len / 3.0; - - float in_first_part = step(pos, one_third_len); - float in_third_part = step(len - one_third_len, pos); - - // The result of this should be 1.0 if we're in the 1st or 3rd part. - // And 0.0 for the blank part. - float should_fill = in_first_part + in_third_part; - - // This is the conversion factor for transformations and device pixel scaling. - float pixels_per_fragment = length(fwidth(vLocalPos.xy)); - vec4 white = vec4(1.0, 1.0, 1.0, 1.0); - return mix(white, get_fragment_color(vDistanceFromMixLine, pixels_per_fragment), should_fill); -} - -vec4 draw_double_edge_vertical() { - // Get our position within this specific segment - float position = vLocalPos.x - vLocalRect.x; - return draw_double_edge(position, vLocalRect.z); -} - -vec4 draw_double_edge_horizontal() { - // Get our position within this specific segment - float position = vLocalPos.y - vLocalRect.y; - return draw_double_edge(position, vLocalRect.w); -} - -vec4 draw_double_edge_with_radius() { - // Get our position within this specific segment - float position = distance(vRefPoint, vLocalPos) - vRadii.z; - float len = vRadii.x - vRadii.z; - return draw_double_edge(position, len); -} - -vec4 draw_double_edge_corner() { - if (vRadii.x > 0) { - return draw_double_edge_with_radius(); - } - - bool is_vertical = (vBorderPart == PST_TOP_LEFT) ? vDistanceFromMixLine < 0 : - vDistanceFromMixLine >= 0; - if (is_vertical) { - return draw_double_edge_vertical(); - } else { - return draw_double_edge_horizontal(); - } -} - -// Our current edge calculation is based only on -// the size of the border-size, but we need to draw -// the dashes in the center of the segment we're drawing. -// This calculates how much to nudge and which axis to nudge on. -vec2 get_dashed_nudge_factor(vec2 dash_size, bool is_corner) { - if (is_corner) { - return vec2(0.0, 0.0); - } - - bool xAxisFudge = vBorders.z > vBorders.w; - if (xAxisFudge) { - return vec2(dash_size.x / 2.0, 0); - } - - return vec2(0.0, dash_size.y / 2.0); -} - -vec4 draw_dashed_edge(bool is_corner) { - // Everything here should be in device pixels. - // We want the dot to be roughly the size of the whole border spacing - // 5.5 here isn't a magic number, it's just what mostly looks like FF/Chrome - // TODO: Investigate exactly what FF does. - float dash_interval = min(vBorders.w, vBorders.z) * 5.5; - vec2 edge_size = vec2(vBorders.z, vBorders.w); - vec2 dash_size = vec2(dash_interval / 2.0, dash_interval / 2.0); - vec2 position = vDevicePos - vBorders.xy; - - vec2 dash_count = floor(edge_size/ dash_interval); - vec2 dist_between_dashes = edge_size / dash_count; - - vec2 target_rect_index = floor(position / dist_between_dashes); - vec2 target_rect_loc = target_rect_index * dist_between_dashes; - target_rect_loc += get_dashed_nudge_factor(dash_size, is_corner); - vec4 target_rect = vec4(target_rect_loc, dash_size); - - vec4 white = vec4(1.0, 1.0, 1.0, 1.0); - vec4 target_colored_rect = drawRect(position, target_rect, vVerticalColor.xyz); - return mix(white, target_colored_rect, target_colored_rect.a); -} - void draw_dotted_border(void) { switch (vBorderPart) { // These are the layer tile part PrimitivePart as uploaded by the tiling.rs @@ -190,7 +123,29 @@ void draw_dotted_border(void) { } } -void draw_dashed_border(void) { +#endif + +vec4 draw_dashed_edge(float position, float border_width, float pixels_per_fragment) { + // TODO: Investigate exactly what FF does. + float size = border_width * 3; + float segment = floor(position / size); + + float alpha = alpha_for_solid_border(position, + segment * size, + (segment + 1) * size, + pixels_per_fragment); + + if (mod(segment + 2, 2) == 0) { + return vHorizontalColor * vec4(1, 1, 1, 1 - alpha); + } else { + return vHorizontalColor * vec4(1, 1, 1, alpha); + } +} + +void draw_dashed_border(vec2 local_pos, float distance_from_mix_line) { + // This is the conversion factor for transformations and device pixel scaling. + float pixels_per_fragment = length(fwidth(local_pos.xy)); + switch (vBorderPart) { // These are the layer tile part PrimitivePart as uploaded by the tiling.rs case PST_TOP_LEFT: @@ -198,24 +153,106 @@ void draw_dashed_border(void) { case PST_BOTTOM_LEFT: case PST_BOTTOM_RIGHT: { - // TODO: Fix for corners with a border-radius - bool is_corner = true; - oFragColor = draw_dashed_edge(is_corner); + oFragColor = get_fragment_color(distance_from_mix_line, pixels_per_fragment); + if (vRadii.x > 0.0) { + oFragColor *= vec4(1, 1, 1, alpha_for_solid_border_corner(local_pos, + vRadii.z, + vRadii.x, + pixels_per_fragment)); + } + break; } case PST_BOTTOM: case PST_TOP: + { + oFragColor = draw_dashed_edge(vLocalPos.x - vPieceRect.x, vPieceRect.w, pixels_per_fragment); + break; + } case PST_LEFT: case PST_RIGHT: { - bool is_corner = false; - oFragColor = draw_dashed_edge(is_corner); + oFragColor = draw_dashed_edge(vLocalPos.y - vPieceRect.y, vPieceRect.z, pixels_per_fragment); break; } } } -void draw_double_border(void) { + +vec4 draw_double_edge(float pos, + float len, + float distance_from_mix_line, + float pixels_per_fragment) { + float total_border_width = len; + float one_third_width = total_border_width / 3.0; + + // Contribution of the outer border segment. + float alpha = alpha_for_solid_border(pos, + total_border_width - one_third_width, + total_border_width, + pixels_per_fragment); + + // Contribution of the inner border segment. + alpha += alpha_for_solid_border(pos, 0, one_third_width, pixels_per_fragment); + return get_fragment_color(distance_from_mix_line, pixels_per_fragment) * vec4(1, 1, 1, alpha); +} + +vec4 draw_double_edge_vertical(vec2 local_pos, + float distance_from_mix_line, + float pixels_per_fragment) { + // Get our position within this specific segment + float position = local_pos.x - vLocalRect.x; + return draw_double_edge(position, vLocalRect.z, distance_from_mix_line, pixels_per_fragment); +} + +vec4 draw_double_edge_horizontal(vec2 local_pos, + float distance_from_mix_line, + float pixels_per_fragment) { + // Get our position within this specific segment + float position = local_pos.y - vLocalRect.y; + return draw_double_edge(position, vLocalRect.w, distance_from_mix_line, pixels_per_fragment); +} + +vec4 draw_double_edge_corner_with_radius(vec2 local_pos, + float distance_from_mix_line, + float pixels_per_fragment) { + float total_border_width = vRadii.x - vRadii.z; + float one_third_width = total_border_width / 3.0; + + // Contribution of the outer border segment. + float alpha = alpha_for_solid_border_corner(local_pos, + vRadii.x - one_third_width, + vRadii.x, + pixels_per_fragment); + + // Contribution of the inner border segment. + alpha += alpha_for_solid_border_corner(local_pos, + vRadii.z, + vRadii.z + one_third_width, + pixels_per_fragment); + return get_fragment_color(distance_from_mix_line, pixels_per_fragment) * vec4(1, 1, 1, alpha); +} + +vec4 draw_double_edge_corner(vec2 local_pos, + float distance_from_mix_line, + float pixels_per_fragment) { + if (vRadii.x > 0) { + return draw_double_edge_corner_with_radius(local_pos, + distance_from_mix_line, + pixels_per_fragment); + } + + bool is_vertical = (vBorderPart == PST_TOP_LEFT) ? distance_from_mix_line < 0 : + distance_from_mix_line >= 0; + if (is_vertical) { + return draw_double_edge_vertical(local_pos, distance_from_mix_line, pixels_per_fragment); + } else { + return draw_double_edge_horizontal(local_pos, distance_from_mix_line, pixels_per_fragment); + } +} + +void draw_double_border(float distance_from_mix_line, vec2 local_pos) { + float pixels_per_fragment = length(fwidth(local_pos.xy)); switch (vBorderPart) { // These are the layer tile part PrimitivePart as uploaded by the tiling.rs case PST_TOP_LEFT: @@ -223,51 +260,28 @@ void draw_double_border(void) { case PST_BOTTOM_LEFT: case PST_BOTTOM_RIGHT: { - oFragColor = draw_double_edge_corner(); + oFragColor = draw_double_edge_corner(local_pos, distance_from_mix_line, pixels_per_fragment); break; } case PST_BOTTOM: case PST_TOP: { - oFragColor = draw_double_edge_horizontal(); + oFragColor = draw_double_edge_horizontal(local_pos, + distance_from_mix_line, + pixels_per_fragment); break; } case PST_LEFT: case PST_RIGHT: { - oFragColor = draw_double_edge_vertical(); + oFragColor = draw_double_edge_vertical(local_pos, + distance_from_mix_line, + pixels_per_fragment); break; } } } -#endif - -void draw_antialiased_solid_border_corner(vec2 local_pos, float pixelsPerFragment) { - if (vRadii.x <= 0.0) { - return; - } - - float distanceFromRef = distance(vRefPoint, local_pos); - - // We want to start anti-aliasing one pixel in from the border. - float nudge = 1 * pixelsPerFragment; - float innerRadius = vRadii.z + nudge; - float outerRadius = vRadii.x - nudge; - - if (vRadii.x > 0.0 && (distanceFromRef > outerRadius || distanceFromRef < innerRadius)) { - float distanceFromBorder = max(distanceFromRef - outerRadius, - innerRadius - distanceFromRef); - // Move the distance back into pixels. - distanceFromBorder /= pixelsPerFragment; - - // Apply a more gradual fade out to transparent. - distanceFromBorder -= 0.5; - - oFragColor = oFragColor * vec4(1, 1, 1, smoothstep(1.0, 0, distanceFromBorder)); - } -} - void draw_solid_border(float distanceFromMixLine, vec2 localPos) { switch (vBorderPart) { case PST_TOP_LEFT: @@ -277,7 +291,12 @@ void draw_solid_border(float distanceFromMixLine, vec2 localPos) { // This is the conversion factor for transformations and device pixel scaling. float pixelsPerFragment = length(fwidth(localPos.xy)); oFragColor = get_fragment_color(distanceFromMixLine, pixelsPerFragment); - draw_antialiased_solid_border_corner(localPos, pixelsPerFragment); + + if (vRadii.x > 0.0) { + float alpha = alpha_for_solid_border_corner(localPos, vRadii.z, vRadii.x, pixelsPerFragment); + oFragColor *= vec4(1, 1, 1, alpha); + } + break; } default: @@ -286,7 +305,6 @@ void draw_solid_border(float distanceFromMixLine, vec2 localPos) { } } - // TODO: Investigate performance of this shader and see // if it's worthwhile splitting it / removing branches etc. void main(void) { @@ -302,14 +320,31 @@ void main(void) { float distance_from_mix_line = (local_pos.x - vPieceRect.x) * vPieceRect.w - (local_pos.y - vPieceRect.y) * vPieceRect.z; distance_from_mix_line /= vPieceRectHypotenuseLength; - draw_solid_border(distance_from_mix_line, local_pos); - oFragColor *= vec4(1, 1, 1, alpha); + switch (vBorderStyle) { + case BORDER_STYLE_DASHED: + draw_dashed_border(local_pos, distance_from_mix_line); + break; + case BORDER_STYLE_DOTTED: + case BORDER_STYLE_OUTSET: + case BORDER_STYLE_INSET: + case BORDER_STYLE_SOLID: + case BORDER_STYLE_NONE: + draw_solid_border(distance_from_mix_line, local_pos); + break; + case BORDER_STYLE_DOUBLE: + draw_double_border(distance_from_mix_line, local_pos); + break; + default: + discard; + + } + + oFragColor *= vec4(1, 1, 1, alpha); #else switch (vBorderStyle) { case BORDER_STYLE_DASHED: - discard_pixels_in_rounded_borders(local_pos); - draw_dashed_border(); + draw_dashed_border(local_pos, vDistanceFromMixLine); break; case BORDER_STYLE_DOTTED: discard_pixels_in_rounded_borders(local_pos); @@ -322,8 +357,7 @@ void main(void) { draw_solid_border(vDistanceFromMixLine, local_pos); break; case BORDER_STYLE_DOUBLE: - discard_pixels_in_rounded_borders(local_pos); - draw_double_border(); + draw_double_border(vDistanceFromMixLine, local_pos); break; default: discard; diff --git a/resources/shaders/ps_border.glsl b/resources/shaders/ps_border.glsl index badbcdc342e..d46b72eed49 100644 --- a/resources/shaders/ps_border.glsl +++ b/resources/shaders/ps_border.glsl @@ -16,10 +16,11 @@ flat varying vec2 vRefPoint; flat varying uint vBorderStyle; flat varying uint vBorderPart; // Which part of the border we're drawing. +flat varying vec4 vPieceRect; + // These are in device space #ifdef WR_FEATURE_TRANSFORM varying vec3 vLocalPos; // The clamped position in local space. -flat varying vec4 vPieceRect; flat varying float vPieceRectHypotenuseLength; #else varying vec2 vLocalPos; // The clamped position in local space. diff --git a/resources/shaders/ps_border.vs.glsl b/resources/shaders/ps_border.vs.glsl index d78efc99145..168f65bc967 100644 --- a/resources/shaders/ps_border.vs.glsl +++ b/resources/shaders/ps_border.vs.glsl @@ -3,19 +3,7 @@ * 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/. */ -struct Border { - PrimitiveInfo info; - vec4 verticalColor; - vec4 horizontalColor; - vec4 radii; - uvec4 border_style_trbl; -}; - -layout(std140) uniform Items { - Border borders[WR_MAX_PRIM_ITEMS]; -}; - -uint get_border_style(Border a_border, uint a_edge) { +float get_border_style(Border a_border, uint a_edge) { switch (a_edge) { case PST_TOP: case PST_TOP_LEFT: @@ -33,7 +21,7 @@ uint get_border_style(Border a_border, uint a_edge) { } void main(void) { - Border border = borders[gl_InstanceID]; + Border border = fetch_border(gl_InstanceID); #ifdef WR_FEATURE_TRANSFORM TransformVertexInfo vi = write_transform_vertex(border.info); vLocalPos = vi.local_pos; @@ -56,7 +44,7 @@ void main(void) { vRadii = border.radii; float x0, y0, x1, y1; - vBorderPart = border.info.layer_tile_part.z; + vBorderPart = uint(border.part.x); switch (vBorderPart) { // These are the layer tile part PrimitivePart as uploaded by the tiling.rs case PST_TOP_LEFT: @@ -103,19 +91,20 @@ void main(void) { break; } - vBorderStyle = get_border_style(border, vBorderPart); + vBorderStyle = uint(get_border_style(border, vBorderPart)); // y1 - y0 is the height of the corner / line // x1 - x0 is the width of the corner / line. float width = x1 - x0; float height = y1 - y0; + vPieceRect = vec4(x0, y0, width, height); + // The fragment shader needs to calculate the distance from the bisecting line // to properly mix border colors. For transformed borders, we calculate this distance // in the fragment shader itself. For non-transformed borders, we can use the // interpolator. #ifdef WR_FEATURE_TRANSFORM - vPieceRect = vec4(x0, y0, width, height); vPieceRectHypotenuseLength = sqrt(pow(width, 2) + pow(height, 2)); #else vDistanceFromMixLine = (vi.local_clamped_pos.x - x0) * height - diff --git a/resources/shaders/ps_box_shadow.vs.glsl b/resources/shaders/ps_box_shadow.vs.glsl index 9662502e14d..e501548f87a 100644 --- a/resources/shaders/ps_box_shadow.vs.glsl +++ b/resources/shaders/ps_box_shadow.vs.glsl @@ -3,20 +3,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/. */ -struct BoxShadow { - PrimitiveInfo info; - vec4 color; - vec4 border_radii_blur_radius_inverted; - vec4 bs_rect; - vec4 src_rect; -}; - -layout(std140) uniform Items { - BoxShadow boxshadows[WR_MAX_PRIM_ITEMS]; -}; - void main(void) { - BoxShadow bs = boxshadows[gl_InstanceID]; + BoxShadow bs = fetch_boxshadow(gl_InstanceID); VertexInfo vi = write_vertex(bs.info); vPos = vi.local_clamped_pos; diff --git a/resources/shaders/ps_clear.vs.glsl b/resources/shaders/ps_clear.vs.glsl index 5d3012fe46c..37c941b092b 100644 --- a/resources/shaders/ps_clear.vs.glsl +++ b/resources/shaders/ps_clear.vs.glsl @@ -4,19 +4,12 @@ * 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/. */ -struct ClearTile { - uvec4 rect; +layout(std140) uniform Data { + uvec4 data[WR_MAX_UBO_VECTORS]; }; -layout(std140) uniform Tiles { - ClearTile tiles[WR_MAX_CLEAR_TILES]; -}; - - void main() { - ClearTile tile = tiles[gl_InstanceID]; - - vec4 rect = vec4(tile.rect); + vec4 rect = vec4(data[gl_InstanceID]); vec4 pos = vec4(mix(rect.xy, rect.xy + rect.zw, aPosition.xy), 0, 1); gl_Position = uTransform * pos; diff --git a/resources/shaders/ps_composite.vs.glsl b/resources/shaders/ps_composite.vs.glsl index c7f9cd05538..125bd37186b 100644 --- a/resources/shaders/ps_composite.vs.glsl +++ b/resources/shaders/ps_composite.vs.glsl @@ -3,20 +3,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/. */ -struct Composite { - uvec4 src0; - uvec4 src1; - uvec4 target_rect; - ivec4 info; - vec4 amount; -}; - -layout(std140) uniform Items { - Composite composites[WR_MAX_PRIM_ITEMS]; -}; - void main(void) { - Composite composite = composites[gl_InstanceID]; + Composite composite = fetch_composite(gl_InstanceID); vec2 local_pos = mix(vec2(composite.target_rect.xy), vec2(composite.target_rect.xy + composite.target_rect.zw), @@ -30,8 +18,8 @@ void main(void) { st1 = vec2(composite.src1.xy + composite.src1.zw) / 2048.0; vUv1 = mix(st0, st1, aPosition.xy); - vInfo = composite.info.xy; - vAmount = composite.amount.x; + vInfo = ivec2(composite.info_amount.xy); + vAmount = composite.info_amount.z; gl_Position = uTransform * vec4(local_pos, 0, 1); } diff --git a/resources/shaders/ps_gradient.vs.glsl b/resources/shaders/ps_gradient.vs.glsl index 82dfea691f2..6697e3a08c1 100644 --- a/resources/shaders/ps_gradient.vs.glsl +++ b/resources/shaders/ps_gradient.vs.glsl @@ -6,20 +6,8 @@ #define DIR_HORIZONTAL uint(0) #define DIR_VERTICAL uint(1) -struct Gradient { - PrimitiveInfo info; - vec4 color0; - vec4 color1; - uvec4 dir; - Clip clip; -}; - -layout(std140) uniform Items { - Gradient gradients[WR_MAX_PRIM_ITEMS]; -}; - void main(void) { - Gradient gradient = gradients[gl_InstanceID]; + AlignedGradient gradient = fetch_aligned_gradient(gl_InstanceID); #ifdef WR_FEATURE_TRANSFORM TransformVertexInfo vi = write_transform_vertex(gradient.info); @@ -32,7 +20,7 @@ void main(void) { vPos = vi.local_clamped_pos; #endif - switch (gradient.dir.x) { + switch (uint(gradient.dir.x)) { case DIR_HORIZONTAL: vF = f.x; break; diff --git a/resources/shaders/ps_image.vs.glsl b/resources/shaders/ps_image.vs.glsl index a3ce386092e..d4a9ed243ca 100644 --- a/resources/shaders/ps_image.vs.glsl +++ b/resources/shaders/ps_image.vs.glsl @@ -3,30 +3,34 @@ * 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/. */ -struct Image { - PrimitiveInfo info; - vec4 st_rect; // Location of the image texture in the texture atlas. - vec4 stretch_size; // Size of the actual image. -}; - -layout(std140) uniform Items { - Image images[WR_MAX_PRIM_ITEMS]; -}; - void main(void) { - Image image = images[gl_InstanceID]; + Image image = fetch_image(gl_InstanceID); #ifdef WR_FEATURE_TRANSFORM TransformVertexInfo vi = write_transform_vertex(image.info); vLocalRect = vi.clipped_local_rect; vLocalPos = vi.local_pos; - vStretchSize = image.stretch_size.xy; + vStretchSize = image.stretch_size_uvkind.xy; #else VertexInfo vi = write_vertex(image.info); - vUv = (vi.local_clamped_pos - vi.local_rect.p0) / image.stretch_size.xy; + vUv = (vi.local_clamped_pos - vi.local_rect.p0) / image.stretch_size_uvkind.xy; #endif // vUv will contain how many times this image has wrapped around the image size. - vTextureSize = image.st_rect.zw - image.st_rect.xy; - vTextureOffset = image.st_rect.xy; + vec2 st0 = image.st_rect.xy; + vec2 st1 = image.st_rect.zw; + + switch (uint(image.stretch_size_uvkind.z)) { + case UV_NORMALIZED: + break; + case UV_PIXEL: { + vec2 texture_size = textureSize(sDiffuse, 0); + st0 /= texture_size; + st1 /= texture_size; + } + break; + } + + vTextureSize = st1 - st0; + vTextureOffset = st0; } diff --git a/resources/shaders/ps_image_clip.vs.glsl b/resources/shaders/ps_image_clip.vs.glsl index 89c6198f990..ec093e4e64f 100644 --- a/resources/shaders/ps_image_clip.vs.glsl +++ b/resources/shaders/ps_image_clip.vs.glsl @@ -3,19 +3,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/. */ -struct Image { - PrimitiveInfo info; - vec4 st_rect; // Location of the image texture in the texture atlas. - vec4 stretch_size; // Size of the actual image. - Clip clip; -}; - -layout(std140) uniform Items { - Image images[WR_MAX_PRIM_ITEMS]; -}; - void main(void) { - Image image = images[gl_InstanceID]; + ImageClip image = fetch_image_clip(gl_InstanceID); VertexInfo vi = write_vertex(image.info); vClipRect = vec4(image.clip.rect.xy, image.clip.rect.xy + image.clip.rect.zw); @@ -26,7 +15,22 @@ void main(void) { vPos = vi.local_clamped_pos; // vUv will contain how many times this image has wrapped around the image size. - vUv = (vi.local_clamped_pos - image.info.local_rect.xy) / image.stretch_size.xy; - vTextureSize = image.st_rect.zw - image.st_rect.xy; - vTextureOffset = image.st_rect.xy; + vUv = (vi.local_clamped_pos - image.info.local_rect.xy) / image.stretch_size_uvkind.xy; + + vec2 st0 = image.st_rect.xy; + vec2 st1 = image.st_rect.zw; + + switch (uint(image.stretch_size_uvkind.z)) { + case UV_NORMALIZED: + break; + case UV_PIXEL: { + vec2 texture_size = textureSize(sDiffuse, 0); + st0 /= texture_size; + st1 /= texture_size; + } + break; + } + + vTextureSize = st1 - st0; + vTextureOffset = st0; } diff --git a/resources/shaders/ps_rectangle.vs.glsl b/resources/shaders/ps_rectangle.vs.glsl index 046923875b4..ba5ccbb69d5 100644 --- a/resources/shaders/ps_rectangle.vs.glsl +++ b/resources/shaders/ps_rectangle.vs.glsl @@ -3,17 +3,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/. */ -struct Rectangle { - PrimitiveInfo info; - vec4 color; -}; - -layout(std140) uniform Items { - Rectangle rects[WR_MAX_PRIM_ITEMS]; -}; - void main(void) { - Rectangle rect = rects[gl_InstanceID]; + Rectangle rect = fetch_rectangle(gl_InstanceID); vColor = rect.color; #ifdef WR_FEATURE_TRANSFORM TransformVertexInfo vi = write_transform_vertex(rect.info); diff --git a/resources/shaders/ps_rectangle_clip.vs.glsl b/resources/shaders/ps_rectangle_clip.vs.glsl index da39ff9fd6f..e804c0cad4e 100644 --- a/resources/shaders/ps_rectangle_clip.vs.glsl +++ b/resources/shaders/ps_rectangle_clip.vs.glsl @@ -3,18 +3,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/. */ -struct Rectangle { - PrimitiveInfo info; - vec4 color; - Clip clip; -}; - -layout(std140) uniform Items { - Rectangle rects[WR_MAX_PRIM_ITEMS]; -}; - void main(void) { - Rectangle rect = rects[gl_InstanceID]; + RectangleClip rect = fetch_rectangle_clip(gl_InstanceID); VertexInfo vi = write_vertex(rect.info); vClipRect = vec4(rect.clip.rect.xy, rect.clip.rect.xy + rect.clip.rect.zw); diff --git a/resources/shaders/ps_text.vs.glsl b/resources/shaders/ps_text.vs.glsl index c98569b83c2..a8d97ced9ef 100644 --- a/resources/shaders/ps_text.vs.glsl +++ b/resources/shaders/ps_text.vs.glsl @@ -3,18 +3,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/. */ -struct Glyph { - PrimitiveInfo info; - vec4 color; - ivec4 uv_rect; -}; - -layout(std140) uniform Items { - Glyph glyphs[WR_MAX_PRIM_ITEMS]; -}; - void main(void) { - Glyph glyph = glyphs[gl_InstanceID]; + Glyph glyph = fetch_glyph(gl_InstanceID); #ifdef WR_FEATURE_TRANSFORM TransformVertexInfo vi = write_transform_vertex(glyph.info); diff --git a/resources/shaders/ps_text_run.vs.glsl b/resources/shaders/ps_text_run.vs.glsl index 894a2bb9cc6..0310b3972b0 100644 --- a/resources/shaders/ps_text_run.vs.glsl +++ b/resources/shaders/ps_text_run.vs.glsl @@ -3,34 +3,17 @@ * 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/. */ -struct TextRunGlyph { - vec4 local_rect; - ivec4 uv_rect; -}; - -struct TextRun { - PrimitiveInfo info; - TextRunGlyph glyphs[WR_GLYPHS_PER_TEXT_RUN]; - vec4 color; -}; - -layout(std140) uniform Items { - TextRun text_runs[WR_MAX_PRIM_ITEMS]; -}; - void main(void) { - TextRun text_run = text_runs[gl_InstanceID / WR_GLYPHS_PER_TEXT_RUN]; - TextRunGlyph glyph = text_run.glyphs[gl_InstanceID % WR_GLYPHS_PER_TEXT_RUN]; - text_run.info.local_rect = glyph.local_rect; - ivec4 uv_rect = glyph.uv_rect; + vec4 color, uv_rect; + PrimitiveInfo info = fetch_text_run_glyph(gl_InstanceID, color, uv_rect); #ifdef WR_FEATURE_TRANSFORM - TransformVertexInfo vi = write_transform_vertex(text_run.info); + TransformVertexInfo vi = write_transform_vertex(info); vLocalRect = vi.clipped_local_rect; vLocalPos = vi.local_pos; - vec2 f = (vi.local_pos.xy - text_run.info.local_rect.xy) / text_run.info.local_rect.zw; + vec2 f = (vi.local_pos.xy - info.local_rect.xy) / info.local_rect.zw; #else - VertexInfo vi = write_vertex(text_run.info); + VertexInfo vi = write_vertex(info); vec2 f = (vi.local_clamped_pos - vi.local_rect.p0) / (vi.local_rect.p1 - vi.local_rect.p0); #endif @@ -38,6 +21,6 @@ void main(void) { vec2 st0 = uv_rect.xy / texture_size; vec2 st1 = uv_rect.zw / texture_size; - vColor = text_run.color; + vColor = color; vUv = mix(st0, st1, f); } diff --git a/tests/html/tiny_test.html b/tests/html/tiny_test.html deleted file mode 100644 index 8b137891791..00000000000 --- a/tests/html/tiny_test.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/tests/unit/script/size_of.rs b/tests/unit/script/size_of.rs index 96981ca001f..3930180a9cf 100644 --- a/tests/unit/script/size_of.rs +++ b/tests/unit/script/size_of.rs @@ -40,10 +40,10 @@ macro_rules! sizeof_checker ( // Update the sizes here sizeof_checker!(size_event_target, EventTarget, 40); sizeof_checker!(size_node, Node, 152); -sizeof_checker!(size_element, Element, 328); -sizeof_checker!(size_htmlelement, HTMLElement, 344); -sizeof_checker!(size_div, HTMLDivElement, 344); -sizeof_checker!(size_span, HTMLSpanElement, 344); +sizeof_checker!(size_element, Element, 320); +sizeof_checker!(size_htmlelement, HTMLElement, 336); +sizeof_checker!(size_div, HTMLDivElement, 336); +sizeof_checker!(size_span, HTMLSpanElement, 336); sizeof_checker!(size_text, Text, 184); sizeof_checker!(size_characterdata, CharacterData, 184); sizeof_checker!(size_servothreadsafelayoutnode, ServoThreadSafeLayoutNode, 16); diff --git a/tests/unit/style/Cargo.toml b/tests/unit/style/Cargo.toml index 05b96695ccc..41a70dd9964 100644 --- a/tests/unit/style/Cargo.toml +++ b/tests/unit/style/Cargo.toml @@ -14,7 +14,7 @@ app_units = "0.3" cssparser = {version = "0.6", features = ["heap_size"]} euclid = "0.10.1" rustc-serialize = "0.3" -selectors = {version = "0.12", features = ["heap_size"]} +selectors = {version = "0.13", features = ["heap_size"]} string_cache = {version = "0.2.26", features = ["heap_size"]} style = {path = "../../../components/style"} style_traits = {path = "../../../components/style_traits"} diff --git a/tests/unit/style/properties/serialization.rs b/tests/unit/style/properties/serialization.rs index b802c5c4fbf..c43fc5e93c1 100644 --- a/tests/unit/style/properties/serialization.rs +++ b/tests/unit/style/properties/serialization.rs @@ -45,8 +45,7 @@ fn property_declaration_block_should_serialize_correctly() { ]; let block = PropertyDeclarationBlock { - declarations: Arc::new(declarations), - + declarations: declarations, important_count: 0, }; @@ -63,8 +62,7 @@ mod shorthand_serialization { pub fn shorthand_properties_to_string(properties: Vec<PropertyDeclaration>) -> String { let block = PropertyDeclarationBlock { - declarations: Arc::new(properties.into_iter().map(|d| (d, Importance::Normal)).collect()), - + declarations: properties.into_iter().map(|d| (d, Importance::Normal)).collect(), important_count: 0, }; diff --git a/tests/unit/style/selector_matching.rs b/tests/unit/style/selector_matching.rs index 22e11288c48..63a219ecd5e 100644 --- a/tests/unit/style/selector_matching.rs +++ b/tests/unit/style/selector_matching.rs @@ -6,7 +6,7 @@ use cssparser::Parser; use selectors::parser::{LocalName, ParserContext, parse_selector_list}; use std::sync::Arc; use string_cache::Atom; -use style::properties::Importance; +use style::properties::{Importance, PropertyDeclarationBlock}; use style::selector_matching::{DeclarationBlock, Rule, SelectorMap}; /// Helper method to get some Rules from selector strings. @@ -19,7 +19,10 @@ fn get_mock_rules(css_selectors: &[&str]) -> Vec<Vec<Rule>> { Rule { selector: s.complex_selector.clone(), declarations: DeclarationBlock { - mixed_declarations: Arc::new(Vec::new()), + mixed_declarations: Arc::new(PropertyDeclarationBlock { + declarations: Vec::new(), + important_count: 0, + }), importance: Importance::Normal, specificity: s.specificity, source_order: i, diff --git a/tests/unit/style/stylesheets.rs b/tests/unit/style/stylesheets.rs index 528dcd67084..802ffb52f84 100644 --- a/tests/unit/style/stylesheets.rs +++ b/tests/unit/style/stylesheets.rs @@ -15,7 +15,7 @@ use style::parser::ParserContextExtraData; use style::properties::{PropertyDeclaration, PropertyDeclarationBlock, DeclaredValue, longhands}; use style::properties::Importance; use style::properties::longhands::animation_play_state; -use style::stylesheets::{Stylesheet, CSSRule, StyleRule, KeyframesRule, Origin}; +use style::stylesheets::{Stylesheet, NamespaceRule, CSSRule, StyleRule, KeyframesRule, Origin}; use style::values::specified::{LengthOrPercentageOrAuto, Percentage}; use url::Url; @@ -65,11 +65,11 @@ fn test_parse_stylesheet() { media: None, dirty_on_viewport_size_change: false, rules: vec![ - CSSRule::Namespace { + CSSRule::Namespace(Arc::new(NamespaceRule { prefix: None, url: NsAtom(Atom::from("http://www.w3.org/1999/xhtml")) - }, - CSSRule::Style(StyleRule { + })), + CSSRule::Style(Arc::new(StyleRule { selectors: vec![ Selector { complex_selector: Arc::new(ComplexSelector { @@ -97,18 +97,18 @@ fn test_parse_stylesheet() { specificity: (0 << 20) + (1 << 10) + (1 << 0), }, ], - declarations: PropertyDeclarationBlock { - declarations: Arc::new(vec![ + declarations: Arc::new(PropertyDeclarationBlock { + declarations: vec![ (PropertyDeclaration::Display(DeclaredValue::Value( longhands::display::SpecifiedValue::none)), Importance::Important), (PropertyDeclaration::Custom(Atom::from("a"), DeclaredValue::Inherit), Importance::Important), - ]), + ], important_count: 2, - }, - }), - CSSRule::Style(StyleRule { + }), + })), + CSSRule::Style(Arc::new(StyleRule { selectors: vec![ Selector { complex_selector: Arc::new(ComplexSelector { @@ -145,16 +145,16 @@ fn test_parse_stylesheet() { specificity: (0 << 20) + (0 << 10) + (1 << 0), }, ], - declarations: PropertyDeclarationBlock { - declarations: Arc::new(vec![ + declarations: Arc::new(PropertyDeclarationBlock { + declarations: vec![ (PropertyDeclaration::Display(DeclaredValue::Value( longhands::display::SpecifiedValue::block)), Importance::Normal), - ]), + ], important_count: 0, - }, - }), - CSSRule::Style(StyleRule { + }), + })), + CSSRule::Style(Arc::new(StyleRule { selectors: vec![ Selector { complex_selector: Arc::new(ComplexSelector { @@ -180,8 +180,8 @@ fn test_parse_stylesheet() { specificity: (1 << 20) + (1 << 10) + (0 << 0), }, ], - declarations: PropertyDeclarationBlock { - declarations: Arc::new(vec![ + declarations: Arc::new(PropertyDeclarationBlock { + declarations: vec![ (PropertyDeclaration::BackgroundColor(DeclaredValue::Value( longhands::background_color::SpecifiedValue { authored: Some("blue".to_owned()), @@ -226,37 +226,43 @@ fn test_parse_stylesheet() { vec![longhands::background_clip::single_value ::get_initial_specified_value()]))), Importance::Normal), - ]), + ], important_count: 0, - }, - }), - CSSRule::Keyframes(KeyframesRule { + }), + })), + CSSRule::Keyframes(Arc::new(KeyframesRule { name: "foo".into(), keyframes: vec![ - Keyframe { + Arc::new(Keyframe { selector: KeyframeSelector::new_for_unit_testing( vec![KeyframePercentage::new(0.)]), - declarations: Arc::new(vec![ - (PropertyDeclaration::Width(DeclaredValue::Value( - LengthOrPercentageOrAuto::Percentage(Percentage(0.)))), - Importance::Normal), - ]), - }, - Keyframe { + block: Arc::new(PropertyDeclarationBlock { + declarations: vec![ + (PropertyDeclaration::Width(DeclaredValue::Value( + LengthOrPercentageOrAuto::Percentage(Percentage(0.)))), + Importance::Normal), + ], + important_count: 0, + }) + }), + Arc::new(Keyframe { selector: KeyframeSelector::new_for_unit_testing( vec![KeyframePercentage::new(1.)]), - declarations: Arc::new(vec![ - (PropertyDeclaration::Width(DeclaredValue::Value( - LengthOrPercentageOrAuto::Percentage(Percentage(1.)))), - Importance::Normal), - (PropertyDeclaration::AnimationPlayState(DeclaredValue::Value( - animation_play_state::SpecifiedValue( - vec![animation_play_state::SingleSpecifiedValue::running]))), - Importance::Normal), - ]), - }, + block: Arc::new(PropertyDeclarationBlock { + declarations: vec![ + (PropertyDeclaration::Width(DeclaredValue::Value( + LengthOrPercentageOrAuto::Percentage(Percentage(1.)))), + Importance::Normal), + (PropertyDeclaration::AnimationPlayState(DeclaredValue::Value( + animation_play_state::SpecifiedValue( + vec![animation_play_state::SingleSpecifiedValue::running]))), + Importance::Normal), + ], + important_count: 0, + }), + }), ] - }) + })) ], }); diff --git a/tests/wpt/metadata-css/css21_dev/html4/border-bottom-applies-to-004.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/border-bottom-applies-to-004.htm.ini deleted file mode 100644 index cb7bc34f4aa..00000000000 --- a/tests/wpt/metadata-css/css21_dev/html4/border-bottom-applies-to-004.htm.ini +++ /dev/null @@ -1,3 +0,0 @@ -[border-bottom-applies-to-004.htm] - type: reftest - expected: FAIL diff --git a/tests/wpt/metadata-css/css21_dev/html4/border-bottom-color-applies-to-004.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/border-bottom-color-applies-to-004.htm.ini deleted file mode 100644 index 58052df51f7..00000000000 --- a/tests/wpt/metadata-css/css21_dev/html4/border-bottom-color-applies-to-004.htm.ini +++ /dev/null @@ -1,3 +0,0 @@ -[border-bottom-color-applies-to-004.htm] - type: reftest - expected: FAIL diff --git a/tests/wpt/metadata-css/css21_dev/html4/border-bottom-width-applies-to-004.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/border-bottom-width-applies-to-004.htm.ini deleted file mode 100644 index 085387ca440..00000000000 --- a/tests/wpt/metadata-css/css21_dev/html4/border-bottom-width-applies-to-004.htm.ini +++ /dev/null @@ -1,3 +0,0 @@ -[border-bottom-width-applies-to-004.htm] - type: reftest - expected: FAIL diff --git a/tests/wpt/metadata-css/css21_dev/html4/border-conflict-style-101.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/border-conflict-style-101.htm.ini deleted file mode 100644 index 4267eba2649..00000000000 --- a/tests/wpt/metadata-css/css21_dev/html4/border-conflict-style-101.htm.ini +++ /dev/null @@ -1,3 +0,0 @@ -[border-conflict-style-101.htm] - type: reftest - expected: FAIL diff --git a/tests/wpt/metadata-css/css21_dev/html4/border-left-applies-to-004.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/border-left-applies-to-004.htm.ini deleted file mode 100644 index 33c1edd3ed2..00000000000 --- a/tests/wpt/metadata-css/css21_dev/html4/border-left-applies-to-004.htm.ini +++ /dev/null @@ -1,3 +0,0 @@ -[border-left-applies-to-004.htm] - type: reftest - expected: FAIL diff --git a/tests/wpt/metadata-css/css21_dev/html4/border-left-color-applies-to-004.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/border-left-color-applies-to-004.htm.ini deleted file mode 100644 index 366584c2505..00000000000 --- a/tests/wpt/metadata-css/css21_dev/html4/border-left-color-applies-to-004.htm.ini +++ /dev/null @@ -1,3 +0,0 @@ -[border-left-color-applies-to-004.htm] - type: reftest - expected: FAIL diff --git a/tests/wpt/metadata-css/css21_dev/html4/border-left-width-applies-to-004.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/border-left-width-applies-to-004.htm.ini deleted file mode 100644 index 1738c9b0873..00000000000 --- a/tests/wpt/metadata-css/css21_dev/html4/border-left-width-applies-to-004.htm.ini +++ /dev/null @@ -1,3 +0,0 @@ -[border-left-width-applies-to-004.htm] - type: reftest - expected: FAIL diff --git a/tests/wpt/metadata-css/css21_dev/html4/border-right-applies-to-004.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/border-right-applies-to-004.htm.ini deleted file mode 100644 index 13778865155..00000000000 --- a/tests/wpt/metadata-css/css21_dev/html4/border-right-applies-to-004.htm.ini +++ /dev/null @@ -1,3 +0,0 @@ -[border-right-applies-to-004.htm] - type: reftest - expected: FAIL diff --git a/tests/wpt/metadata-css/css21_dev/html4/border-right-color-applies-to-004.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/border-right-color-applies-to-004.htm.ini deleted file mode 100644 index 74d5389878e..00000000000 --- a/tests/wpt/metadata-css/css21_dev/html4/border-right-color-applies-to-004.htm.ini +++ /dev/null @@ -1,3 +0,0 @@ -[border-right-color-applies-to-004.htm] - type: reftest - expected: FAIL diff --git a/tests/wpt/metadata-css/css21_dev/html4/border-right-width-applies-to-004.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/border-right-width-applies-to-004.htm.ini deleted file mode 100644 index 6d43191e6da..00000000000 --- a/tests/wpt/metadata-css/css21_dev/html4/border-right-width-applies-to-004.htm.ini +++ /dev/null @@ -1,3 +0,0 @@ -[border-right-width-applies-to-004.htm] - type: reftest - expected: FAIL diff --git a/tests/wpt/metadata-css/css21_dev/html4/vertical-align-121.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/vertical-align-121.htm.ini deleted file mode 100644 index e6e98afb794..00000000000 --- a/tests/wpt/metadata-css/css21_dev/html4/vertical-align-121.htm.ini +++ /dev/null @@ -1,3 +0,0 @@ -[vertical-align-121.htm] - type: reftest - expected: FAIL diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 6c9c977a95b..214162045a5 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -37215,6 +37215,12 @@ "deleted_reftests": {}, "items": { "testharness": { + "html/semantics/forms/the-option-element/option-form.html": [ + { + "path": "html/semantics/forms/the-option-element/option-form.html", + "url": "/html/semantics/forms/the-option-element/option-form.html" + } + ], "html/semantics/interactive-elements/the-dialog-element/dialog-open.html": [ { "path": "html/semantics/interactive-elements/the-dialog-element/dialog-open.html", @@ -37238,6 +37244,12 @@ "path": "html/semantics/text-level-semantics/the-data-element/data.value-001.html", "url": "/html/semantics/text-level-semantics/the-data-element/data.value-001.html" } + ], + "html/webappapis/scripting/events/invalid-uncompiled-raw-handler-compiled-late.html": [ + { + "path": "html/webappapis/scripting/events/invalid-uncompiled-raw-handler-compiled-late.html", + "url": "/html/webappapis/scripting/events/invalid-uncompiled-raw-handler-compiled-late.html" + } ] } }, diff --git a/tests/wpt/metadata/html/dom/interfaces.html.ini b/tests/wpt/metadata/html/dom/interfaces.html.ini index f4b4a274fd0..dd76d5dcadb 100644 --- a/tests/wpt/metadata/html/dom/interfaces.html.ini +++ b/tests/wpt/metadata/html/dom/interfaces.html.ini @@ -3855,15 +3855,9 @@ [HTMLOptGroupElement interface: document.createElement("optgroup") must inherit property "label" with the proper type (1)] expected: FAIL - [HTMLOptionElement interface: attribute form] - expected: FAIL - [HTMLOptionElement interface: attribute index] expected: FAIL - [HTMLOptionElement interface: document.createElement("option") must inherit property "form" with the proper type (1)] - expected: FAIL - [HTMLOptionElement interface: document.createElement("option") must inherit property "index" with the proper type (7)] expected: FAIL @@ -5310,9 +5304,6 @@ [Navigator interface: operation unregisterContentHandler(DOMString,DOMString)] expected: FAIL - [Navigator interface: attribute cookieEnabled] - expected: FAIL - [Navigator interface: operation yieldForStorageUpdates()] expected: FAIL @@ -5361,9 +5352,6 @@ [Navigator interface: calling unregisterContentHandler(DOMString,DOMString) on window.navigator with too few arguments must throw TypeError] expected: FAIL - [Navigator interface: window.navigator must inherit property "cookieEnabled" with the proper type (16)] - expected: FAIL - [Navigator interface: window.navigator must inherit property "yieldForStorageUpdates" with the proper type (17)] expected: FAIL @@ -9014,4 +9002,3 @@ [Event interface: calling initEvent(DOMString,boolean,boolean) on new TrackEvent("addtrack", {track:document.createElement("track").track}) with too few arguments must throw TypeError] expected: FAIL - diff --git a/tests/wpt/metadata/html/webappapis/scripting/events/invalid-uncompiled-raw-handler-compiled-late.html.ini b/tests/wpt/metadata/html/webappapis/scripting/events/invalid-uncompiled-raw-handler-compiled-late.html.ini new file mode 100644 index 00000000000..dbe221f031e --- /dev/null +++ b/tests/wpt/metadata/html/webappapis/scripting/events/invalid-uncompiled-raw-handler-compiled-late.html.ini @@ -0,0 +1,5 @@ +[invalid-uncompiled-raw-handler-compiled-late.html] + type: testharness + [Invalid uncompiled raw handlers should only be compiled when about to call them.] + expected: FAIL + diff --git a/tests/wpt/mozilla/meta/MANIFEST.json b/tests/wpt/mozilla/meta/MANIFEST.json index 6c127d66063..3297053b159 100644 --- a/tests/wpt/mozilla/meta/MANIFEST.json +++ b/tests/wpt/mozilla/meta/MANIFEST.json @@ -804,6 +804,18 @@ "url": "/_mozilla/css/border_collapse_missing_cell_a.html" } ], + "css/border_collapse_row_a.html": [ + { + "path": "css/border_collapse_row_a.html", + "references": [ + [ + "/_mozilla/css/border_collapse_row_ref.html", + "==" + ] + ], + "url": "/_mozilla/css/border_collapse_row_a.html" + } + ], "css/border_collapse_rowgroup_a.html": [ { "path": "css/border_collapse_rowgroup_a.html", @@ -1356,6 +1368,18 @@ "url": "/_mozilla/css/data_img_a.html" } ], + "css/deferred-paint.html": [ + { + "path": "css/deferred-paint.html", + "references": [ + [ + "/_mozilla/css/deferred-paint-ref.html", + "==" + ] + ], + "url": "/_mozilla/css/deferred-paint.html" + } + ], "css/direction_style_caching.html": [ { "path": "css/direction_style_caching.html", @@ -4612,6 +4636,18 @@ "url": "/_mozilla/css/removeproperty.html" } ], + "css/restyle-nth-child.html": [ + { + "path": "css/restyle-nth-child.html", + "references": [ + [ + "/_mozilla/css/restyle-nth-child-ref.html", + "==" + ] + ], + "url": "/_mozilla/css/restyle-nth-child.html" + } + ], "css/restyle_hints_attr.html": [ { "path": "css/restyle_hints_attr.html", @@ -6354,6 +6390,12 @@ "url": "/_mozilla/css/float_relative_to_position.html" } ], + "css/media_calc_crash.html": [ + { + "path": "css/media_calc_crash.html", + "url": "/_mozilla/css/media_calc_crash.html" + } + ], "css/meta_viewport_resize.html": [ { "path": "css/meta_viewport_resize.html", @@ -10132,6 +10174,18 @@ "url": "/_mozilla/css/border_collapse_missing_cell_a.html" } ], + "css/border_collapse_row_a.html": [ + { + "path": "css/border_collapse_row_a.html", + "references": [ + [ + "/_mozilla/css/border_collapse_row_ref.html", + "==" + ] + ], + "url": "/_mozilla/css/border_collapse_row_a.html" + } + ], "css/border_collapse_rowgroup_a.html": [ { "path": "css/border_collapse_rowgroup_a.html", @@ -10684,6 +10738,30 @@ "url": "/_mozilla/css/data_img_a.html" } ], + "css/deferred-paint-ref.html": [ + { + "path": "css/deferred-paint-ref.html", + "references": [ + [ + "/_mozilla/css/deferred-paint-ref.html", + "==" + ] + ], + "url": "/_mozilla/css/deferred-paint-ref.html" + } + ], + "css/deferred-paint.html": [ + { + "path": "css/deferred-paint.html", + "references": [ + [ + "/_mozilla/css/deferred-paint-ref.html", + "==" + ] + ], + "url": "/_mozilla/css/deferred-paint.html" + } + ], "css/direction_style_caching.html": [ { "path": "css/direction_style_caching.html", @@ -13940,6 +14018,18 @@ "url": "/_mozilla/css/removeproperty.html" } ], + "css/restyle-nth-child.html": [ + { + "path": "css/restyle-nth-child.html", + "references": [ + [ + "/_mozilla/css/restyle-nth-child-ref.html", + "==" + ] + ], + "url": "/_mozilla/css/restyle-nth-child.html" + } + ], "css/restyle_hints_attr.html": [ { "path": "css/restyle_hints_attr.html", diff --git a/tests/wpt/mozilla/tests/css/border_collapse_row_a.html b/tests/wpt/mozilla/tests/css/border_collapse_row_a.html new file mode 100644 index 00000000000..25848243af1 --- /dev/null +++ b/tests/wpt/mozilla/tests/css/border_collapse_row_a.html @@ -0,0 +1,31 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"> + <title>row border collapse test</title> + <link rel="match" href="border_collapse_row_ref.html"> + <style> + table { + border-collapse: collapse; + } + td { + width: 64px; + height: 32px; + } + .tr_with_border { + border-top: 2px solid black; + border-right: 2px solid black; + border-bottom: 2px solid black; + } + </style> + </head> + <body> + <table> + <tr><td></td><td></td></tr> + <tr class="tr_with_border"><td></td><td></td></tr> + <tr class="tr_with_border"><td></td><td></td></tr> + <tr class="tr_with_border"><td></td><td></td></tr> + <tr class="tr_with_border"><td></td><td></td></tr> + </table> + </body> +</html> diff --git a/tests/wpt/mozilla/tests/css/border_collapse_row_ref.html b/tests/wpt/mozilla/tests/css/border_collapse_row_ref.html new file mode 100644 index 00000000000..969b493d880 --- /dev/null +++ b/tests/wpt/mozilla/tests/css/border_collapse_row_ref.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"> + <title>row border collapse test - reference</title> + <style> + table { + border-collapse: collapse; + } + td { + width: 64px; + height: 32px; + } + .td_left { + border-top: 2px solid black; + border-bottom: 2px solid black; + } + .td_right { + border-top: 2px solid black; + border-right: 2px solid black; + border-bottom: 2px solid black; + } + </style> + </head> + <body> + <table> + <tr><td></td><td></td></tr> + <tr><td class="td_left"></td><td class="td_right"</td></tr> + <tr><td class="td_left"></td><td class="td_right"</td></tr> + <tr><td class="td_left"></td><td class="td_right"</td></tr> + <tr><td class="td_left"></td><td class="td_right"</td></tr> + </table> + </body> +</html> diff --git a/tests/wpt/mozilla/tests/css/border_collapse_simple_a.html b/tests/wpt/mozilla/tests/css/border_collapse_simple_a.html index afed02bcb60..2a2676b9987 100644 --- a/tests/wpt/mozilla/tests/css/border_collapse_simple_a.html +++ b/tests/wpt/mozilla/tests/css/border_collapse_simple_a.html @@ -8,6 +8,9 @@ FIXME(pcwalton): This is currently offset by -2px in block and inline directions because we don't correctly handle collapsed borders when calculating `table_border_padding` in `table_wrapper.rs`. + + FIXME(gpoesia): This test does not behave exactly like Gecko yet, because cell5's + height is currently 2px smaller in Servo. --> <link rel=match href=border_collapse_simple_ref.html> <style> @@ -19,7 +22,7 @@ html { } body { /* See `FIXME` above. */ - padding: 2px; + padding-top: 2px; } table { border-collapse: collapse; @@ -28,14 +31,20 @@ table { td { border: 2px solid black; padding: 16px; - width: 32px; + width: 30px; height: 32px; } td.cell5 { border: 30px solid black; + width: 32px; } td.cell6 { border: 4px solid black; + width: 32px; +} + +#row1 td { + height: 32px; } </style> </head> diff --git a/tests/wpt/mozilla/tests/css/deferred-paint-ref.html b/tests/wpt/mozilla/tests/css/deferred-paint-ref.html new file mode 100644 index 00000000000..41bb364d0e6 --- /dev/null +++ b/tests/wpt/mozilla/tests/css/deferred-paint-ref.html @@ -0,0 +1,15 @@ +<!doctype html> +<meta charset="utf-8"> +<title>CSS test reference</title> +<link rel="match" href="deferred-paint-ref.html"> +<style> + .container div { + width: 50px; + height: 50px; + background: blue; + } +</style> +<div class="container"> + <div></div> + <div></div> +</div> diff --git a/tests/wpt/mozilla/tests/css/deferred-paint.html b/tests/wpt/mozilla/tests/css/deferred-paint.html new file mode 100644 index 00000000000..552a9456b02 --- /dev/null +++ b/tests/wpt/mozilla/tests/css/deferred-paint.html @@ -0,0 +1,21 @@ +<!doctype html> +<meta charset="utf-8"> +<title>A deferred paint gets properly re-scheduled</title> +<link rel="match" href="deferred-paint-ref.html"> +<style> + .container div { + width: 50px; + height: 50px; + background: blue; + } +</style> +<div class="container"> + <div></div> +</div> +<script> + let container = document.querySelector('.container'); + window.onload = function() { + container.insertBefore(document.createElement('div'), container.firstChild); + container.firstChild.offsetTop; + } +</script> diff --git a/tests/wpt/mozilla/tests/css/media_calc_crash.html b/tests/wpt/mozilla/tests/css/media_calc_crash.html new file mode 100644 index 00000000000..136a86cd4c2 --- /dev/null +++ b/tests/wpt/mozilla/tests/css/media_calc_crash.html @@ -0,0 +1,17 @@ +<!doctype html> +<meta charset="utf-8"> +<title>Don't crash when a media query with calc() is found.</title> +<style> + @media (min-width: calc(60px)) { + pease-do { + not: crash; + } + } +</style> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> +test(function() { + assert_true(true, "Reached here without crashing"); +}) +</script> diff --git a/tests/wpt/mozilla/tests/css/restyle-nth-child-ref.html b/tests/wpt/mozilla/tests/css/restyle-nth-child-ref.html new file mode 100644 index 00000000000..c59c9fde35c --- /dev/null +++ b/tests/wpt/mozilla/tests/css/restyle-nth-child-ref.html @@ -0,0 +1,17 @@ +<!doctype html> +<meta charset="utf-8"> +<title>CSS test reference.</title> +<style> + .container div { + width: 50px; + height: 50px; + background: blue; + } + .container div:nth-child(2) { + background: green; + } +</style> +<div class="container"> + <div></div> + <div></div> +</div> diff --git a/tests/wpt/mozilla/tests/css/restyle-nth-child.html b/tests/wpt/mozilla/tests/css/restyle-nth-child.html new file mode 100644 index 00000000000..b7e1fb4b461 --- /dev/null +++ b/tests/wpt/mozilla/tests/css/restyle-nth-child.html @@ -0,0 +1,24 @@ +<!doctype html> +<meta charset="utf-8"> +<title>Restyling of a child of a parent that didn't match nth-child but now + does should be correct.</title> +<link rel="match" href="restyle-nth-child-ref.html"> +<style> + .container div { + width: 50px; + height: 50px; + background: blue; + } + .container div:nth-child(2) { + background: green; + } +</style> +<div class="container"> + <div></div> +</div> +<script> + let container = document.querySelector('.container'); + window.onload = function() { + container.insertBefore(document.createElement('div'), container.firstChild); + } +</script> diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-option-element/option-form.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-option-element/option-form.html new file mode 100644 index 00000000000..1a68b5c1ca8 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-option-element/option-form.html @@ -0,0 +1,32 @@ +<!doctype html> +<meta charset=utf-8> +<title>HTMLOptionElement.form</title> +<link rel=author title="Sergey Alexandrov" href="mailto:splavgm@gmail.com"> +<link rel=help href="https://html.spec.whatwg.org/multipage/#dom-option-form"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<form id="form"> + <select id="select"> + <optgroup id="optgroup"></optgroup> + </select> +</form> +<div id=log></div> + +<script> +test(function () { + var form = document.getElementById("form"); + var select = document.getElementById("select"); + var optgroup = document.getElementById("optgroup"); + + var o1 = document.createElement("option"); + assert_equals(o1.form, null); + + select.appendChild(o1); + assert_equals(o1.form, select.form); + + var o2 = document.createElement("option"); + select.appendChild(o2); + assert_equals(o2.form, select.form); + +}, "form"); +</script> diff --git a/tests/wpt/web-platform-tests/html/webappapis/scripting/events/invalid-uncompiled-raw-handler-compiled-late.html b/tests/wpt/web-platform-tests/html/webappapis/scripting/events/invalid-uncompiled-raw-handler-compiled-late.html new file mode 100644 index 00000000000..a0e7bbcdd31 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/webappapis/scripting/events/invalid-uncompiled-raw-handler-compiled-late.html @@ -0,0 +1,25 @@ +<!doctype html> +<meta charset="utf-8"> +<title>Invalid uncompiled raw handlers should only be compiled when about to call them.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<body> +<script> +setup({ allow_uncaught_exception: true }); + +test(function() { + var events = []; + window.onerror = function() { + events.push("Error"); + }; + + var div = document.createElement("div"); + div.addEventListener("click", function (e) { events.push("click 1") }); + div.setAttribute("onclick", "}"); + div.addEventListener("click", function (e) { events.push("click 2") }); + div.dispatchEvent(new Event("click")); + assert_equals(div.onclick, null); + assert_array_equals(events, ["click 1", "error", "click 2"]); +}); +</script> +</body> |