Bug 1335863 - Inline Gecko_IsHTMLElementInHTMLDocument. r=emilio

This commit is contained in:
Bobby Holley 2017-02-01 12:05:42 -08:00
parent ae88d22399
commit e78f2404e1
2 changed files with 12 additions and 4 deletions

View file

@ -235,6 +235,7 @@ mod bindings {
.include(add_include("mozilla/Keyframe.h")) .include(add_include("mozilla/Keyframe.h"))
.include(add_include("mozilla/ServoElementSnapshot.h")) .include(add_include("mozilla/ServoElementSnapshot.h"))
.include(add_include("mozilla/dom/Element.h")) .include(add_include("mozilla/dom/Element.h"))
.include(add_include("mozilla/dom/NameSpaceConstants.h"))
.include(add_include("mozilla/ServoBindings.h")) .include(add_include("mozilla/ServoBindings.h"))
.include(add_include("nsMediaFeatures.h")) .include(add_include("nsMediaFeatures.h"))
.include(add_include("nsMediaList.h")) .include(add_include("nsMediaList.h"))
@ -258,6 +259,7 @@ mod bindings {
"BORDER_COLOR_.*", "BORDER_COLOR_.*",
"BORDER_STYLE_.*", "BORDER_STYLE_.*",
"mozilla::SERVO_PREF_.*", "mozilla::SERVO_PREF_.*",
"kNameSpaceID_.*",
]; ];
let whitelist = [ let whitelist = [
"RawGecko.*", "RawGecko.*",

View file

@ -25,12 +25,12 @@ use gecko::snapshot_helpers;
use gecko_bindings::bindings; use gecko_bindings::bindings;
use gecko_bindings::bindings::{Gecko_DropStyleChildrenIterator, Gecko_MaybeCreateStyleChildrenIterator}; use gecko_bindings::bindings::{Gecko_DropStyleChildrenIterator, Gecko_MaybeCreateStyleChildrenIterator};
use gecko_bindings::bindings::{Gecko_ElementState, Gecko_GetLastChild, Gecko_GetNextStyleChild}; 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_IsLink, Gecko_IsRootElement, Gecko_MatchesElement};
use gecko_bindings::bindings::{Gecko_IsUnvisitedLink, Gecko_IsVisitedLink, Gecko_Namespace}; use gecko_bindings::bindings::{Gecko_IsUnvisitedLink, Gecko_IsVisitedLink, Gecko_Namespace};
use gecko_bindings::bindings::{Gecko_SetNodeFlags, Gecko_UnsetNodeFlags}; use gecko_bindings::bindings::{Gecko_SetNodeFlags, Gecko_UnsetNodeFlags};
use gecko_bindings::bindings::Gecko_ClassOrClassList; use gecko_bindings::bindings::Gecko_ClassOrClassList;
use gecko_bindings::bindings::Gecko_GetAnimationRule; use gecko_bindings::bindings::Gecko_GetAnimationRule;
use gecko_bindings::bindings::Gecko_GetServoDeclarationBlock;
use gecko_bindings::bindings::Gecko_GetStyleContext; use gecko_bindings::bindings::Gecko_GetStyleContext;
use gecko_bindings::structs; use gecko_bindings::structs;
use gecko_bindings::structs::{RawGeckoElement, RawGeckoNode}; use gecko_bindings::structs::{RawGeckoElement, RawGeckoNode};
@ -88,6 +88,11 @@ impl<'ln> GeckoNode<'ln> {
unsafe { &*self.0.mNodeInfo.mRawPtr } 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<GeckoNode<'ln>> { fn first_child(&self) -> Option<GeckoNode<'ln>> {
unsafe { self.0.mFirstChild.as_ref().map(GeckoNode::from_content) } 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 { fn is_html_element_in_html_document(&self) -> bool {
unsafe { let node = self.as_node();
Gecko_IsHTMLElementInHTMLDocument(self.0) 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
} }
} }