From e78f2404e1d31353e58c0764a9e3d3c7abc163c5 Mon Sep 17 00:00:00 2001 From: Bobby Holley Date: Wed, 1 Feb 2017 12:05:42 -0800 Subject: [PATCH] Bug 1335863 - Inline Gecko_IsHTMLElementInHTMLDocument. r=emilio --- components/style/build_gecko.rs | 2 ++ components/style/gecko/wrapper.rs | 14 ++++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/components/style/build_gecko.rs b/components/style/build_gecko.rs index 9c13780b8da..fb464c1f7b2 100644 --- a/components/style/build_gecko.rs +++ b/components/style/build_gecko.rs @@ -235,6 +235,7 @@ mod bindings { .include(add_include("mozilla/Keyframe.h")) .include(add_include("mozilla/ServoElementSnapshot.h")) .include(add_include("mozilla/dom/Element.h")) + .include(add_include("mozilla/dom/NameSpaceConstants.h")) .include(add_include("mozilla/ServoBindings.h")) .include(add_include("nsMediaFeatures.h")) .include(add_include("nsMediaList.h")) @@ -258,6 +259,7 @@ mod bindings { "BORDER_COLOR_.*", "BORDER_STYLE_.*", "mozilla::SERVO_PREF_.*", + "kNameSpaceID_.*", ]; let whitelist = [ "RawGecko.*", diff --git a/components/style/gecko/wrapper.rs b/components/style/gecko/wrapper.rs index 6456bfea90c..684e557dd26 100644 --- a/components/style/gecko/wrapper.rs +++ b/components/style/gecko/wrapper.rs @@ -25,12 +25,12 @@ use gecko::snapshot_helpers; use gecko_bindings::bindings; use gecko_bindings::bindings::{Gecko_DropStyleChildrenIterator, Gecko_MaybeCreateStyleChildrenIterator}; use gecko_bindings::bindings::{Gecko_ElementState, Gecko_GetLastChild, Gecko_GetNextStyleChild}; -use gecko_bindings::bindings::{Gecko_GetServoDeclarationBlock, Gecko_IsHTMLElementInHTMLDocument}; use gecko_bindings::bindings::{Gecko_IsLink, Gecko_IsRootElement, Gecko_MatchesElement}; use gecko_bindings::bindings::{Gecko_IsUnvisitedLink, Gecko_IsVisitedLink, Gecko_Namespace}; use gecko_bindings::bindings::{Gecko_SetNodeFlags, Gecko_UnsetNodeFlags}; use gecko_bindings::bindings::Gecko_ClassOrClassList; use gecko_bindings::bindings::Gecko_GetAnimationRule; +use gecko_bindings::bindings::Gecko_GetServoDeclarationBlock; use gecko_bindings::bindings::Gecko_GetStyleContext; use gecko_bindings::structs; use gecko_bindings::structs::{RawGeckoElement, RawGeckoNode}; @@ -88,6 +88,11 @@ impl<'ln> GeckoNode<'ln> { unsafe { &*self.0.mNodeInfo.mRawPtr } } + fn owner_doc(&self) -> &structs::nsIDocument { + debug_assert!(!self.node_info().mDocument.is_null()); + unsafe { &*self.node_info().mDocument } + } + fn first_child(&self) -> Option> { unsafe { self.0.mFirstChild.as_ref().map(GeckoNode::from_content) } } @@ -565,9 +570,10 @@ impl<'le> ::selectors::Element for GeckoElement<'le> { } fn is_html_element_in_html_document(&self) -> bool { - unsafe { - Gecko_IsHTMLElementInHTMLDocument(self.0) - } + let node = self.as_node(); + let node_info = node.node_info(); + node_info.mInner.mNamespaceID == (structs::root::kNameSpaceID_XHTML as i32) && + node.owner_doc().mType == structs::root::nsIDocument_Type::eHTML } }