internal static GeckoNode OldCreateWrapper(nsIDOMNode domObject)
        {
            if (domObject == null)
            {
                return(null);
            }
            nsIDOMHTMLElement element = Xpcom.QueryInterface <nsIDOMHTMLElement>(domObject);

            if (element != null)
            {
                return(GeckoElement.Create(element));
            }

            nsIDOMAttr attr = Xpcom.QueryInterface <nsIDOMAttr>(domObject);

            if (attr != null)
            {
                return(GeckoAttribute.CreateAttributeWrapper(attr));
            }

            nsIDOMComment comment = domObject as nsIDOMComment;

            if (comment != null)
            {
                return(GeckoComment.CreateCommentWrapper(comment));
            }

            return(new GeckoNode(domObject));
        }
        internal static GeckoNode CreateNodeWrapper(nsIDOMNode domObject)
        {
            // if null -> return null
            if (domObject == null)
            {
                return(null);
            }
            var nodeType = ( NodeType )domObject.GetNodeTypeAttribute();

            // by nodeType we can find proper wrapper faster, than perform QueryInterface
            switch (nodeType)
            {
            case NodeType.Element:
                nsIDOMHTMLElement element = Xpcom.QueryInterface <nsIDOMHTMLElement>(domObject);
                if (element != null)
                {
                    return(GeckoElement.Create(element));
                }
                break;

            case NodeType.Attribute:
                nsIDOMAttr attr = Xpcom.QueryInterface <nsIDOMAttr>(domObject);
                if (attr != null)
                {
                    return(GeckoAttribute.CreateAttributeWrapper(attr));
                }
                break;

            case NodeType.Comment:
                nsIDOMComment comment = Xpcom.QueryInterface <nsIDOMComment>(domObject);
                if (comment != null)
                {
                    return(GeckoComment.CreateCommentWrapper(comment));
                }
                break;

            case NodeType.DocumentFragment:
                nsIDOMDocumentFragment fragment = Xpcom.QueryInterface <nsIDOMDocumentFragment>(domObject);
                if (fragment != null)
                {
                    return(DOM.DocumentFragment.CreateDocumentFragmentWrapper(fragment));
                }
                break;
            }
            // if fast method is unsuccessful try old method :)
            return(OldCreateWrapper(domObject));
        }
Ejemplo n.º 3
0
        public GeckoComment CreateComment(string data)
        {
            var native = nsString.Pass <nsIDOMComment>(_domDocument.CreateComment, data);

            return(GeckoComment.CreateCommentWrapper(native));
        }