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));
        }
Example #2
0
        internal GeckoElement(nsIDOMHTMLElement element) : base(element)
        {
            this.DomElement   = element;
            this.DomNSElement = (nsIDOMNSHTMLElement)element;

            // since a reference is stored in the base class, we only need a weak reference here
            Marshal.ChangeWrapperHandleStrength(DomNSElement, true);
        }
Example #3
0
 internal GeckoElement(nsIDOMHTMLElement element)
     : base(element)
 {
     this.DomElement       = element;
     this.DomNSElement     = (nsIDOMNSElement)element;
     this.DomNSHTMLElement = (nsIDOMNSHTMLElement)element;
     Marshal.ChangeWrapperHandleStrength(DomNSElement, true);
     Marshal.ChangeWrapperHandleStrength(DomNSHTMLElement, true);
 }
Example #4
0
		protected override  void Dispose (bool disposing)
		{
			if (!disposed) {
				if (disposing) {
					this.node = null;
				}
			}
			base.Dispose(disposing);
		}		
Example #5
0
        internal static GeckoHtmlElement GetClassFor(nsIDOMHTMLElement element)
        {
            GeckoHtmlElement ret = GetClassFor <GeckoHtmlElement>(element);

            if (ret == null)
            {
                ret = new GeckoHtmlElement(element);
            }
            return(ret);
        }
Example #6
0
        internal GeckoElement(nsIDOMHTMLElement element) : base(element)
        {
            DomElement   = element;
            DomNSElement = multiversion <nsIDOMNSElement> .Cast(element);

            DomNSHTMLElement = multiversion <nsIDOMNSHTMLElement> .Cast(element);

            // since a reference is stored in the base class, we only need weak references here
            Marshal.ChangeWrapperHandleStrength(DomNSElement, true);
            Marshal.ChangeWrapperHandleStrength(DomNSHTMLElement, true);
        }
Example #7
0
 protected override void Dispose(bool disposing)
 {
     if (!disposed)
     {
         if (disposing)
         {
             this.node = null;
         }
     }
     base.Dispose(disposing);
 }
Example #8
0
 internal GeckoHtmlElement(object element)
     : base(element)
 {
     if (element is nsIDOMHTMLElement)
     {
         _domHtmlElement = (nsIDOMHTMLElement)element;
     }
     else
     {
         throw new ArgumentException("element is not a nsIDOMHTMLElement");
     }
 }
Example #9
0
        /// <summary>
        /// Creates wrapper for nsIDOMNode object
        /// </summary>
        /// <param name="domObject"></param>
        /// <returns></returns>
        internal static GeckoNode CreateDomNodeWrapper(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 htmlElement = Xpcom.QueryInterface <nsIDOMHTMLElement>(domObject);
                if (htmlElement != null)
                {
                    return(GeckoHtmlElement.Create(htmlElement));
                }
                nsIDOMElement element = Xpcom.QueryInterface <nsIDOMElement>(domObject);
                if (element != null)
                {
                    return(GeckoElement.CreateDomElementWrapper(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 we don't handle this type - just create GeckoNode
            return(new GeckoNode(domObject));
        }
Example #10
0
        internal GeckoElement(nsIDOMHTMLElement element) : base(element)
        {
            this.DomElement       = element;
            this.DomNSElement     = (nsIDOMNSElement)element;
            this.DomNSHTMLElement = (nsIDOMNSHTMLElement)element;

            if (Xpcom.IsDotNet)             // TODO FIXME: ChangeWrapperHandleStrength not implemented in mono
            {
                // since a reference is stored in the base class, we only need weak references here
                Marshal.ChangeWrapperHandleStrength(DomNSElement, true);
                Marshal.ChangeWrapperHandleStrength(DomNSHTMLElement, true);
            }
        }
 internal static GeckoElement GetClassFor(nsIDOMHTMLElement element)
 {
     foreach (GeckoClassDesc GeckoClass in Classes)
     {
         if (nsString.Get(element.GetTagNameAttribute).ToLower() == GeckoClass.TagName)
         {
             object HTMLElement = Xpcom.QueryInterface(element,GeckoClass.InterfaceType.GUID);
             if(HTMLElement != null)
                 return Activator.CreateInstance(GeckoClass.GeckoElement, new object[] {HTMLElement}) as GeckoElement;
         }
     }
     return null;
 }
Example #12
0
 internal static GeckoElement GetClassFor(nsIDOMHTMLElement element)
 {
     foreach (GeckoClassDesc GeckoClass in Classes)
     {
         if (nsString.Get(element.GetTagName).ToLower() == GeckoClass.TagName)
         {
             object HTMLElement = Xpcom.QueryInterface(element, GeckoClass.InterfaceType.GUID);
             if (HTMLElement != null)
             {
                 return(Activator.CreateInstance(GeckoClass.GeckoElement, new object[] { HTMLElement }) as GeckoElement);
             }
         }
     }
     return(null);
 }
Example #13
0
        internal static GeckoHtmlElement CreateDomHtmlElementWrapper(nsIDOMHTMLElement instance)
        {
            var            lowerTagName = nsString.Get(instance.GetTagNameAttribute).ToLowerInvariant();
            GeckoClassDesc desc;

            if (_dictionary.TryGetValue(lowerTagName, out desc))
            {
                object HTMLElement = Xpcom.QueryInterface(instance, desc.InterfaceType.GUID);
                if (HTMLElement != null)
                {
                    GeckoHtmlElement e = desc.CreationMethod(HTMLElement);
                    return(e);
                }
            }
            return(null);
        }
        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));
        }
        internal static GeckoNode Create(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.Create(attr));
            }

            return(new GeckoNode(domObject));
        }
Example #16
0
		private DomHtmlElement(nsIDOMHTMLElement domHtmlElement)
			: base (domHtmlElement)
		{
			Debug.Assert(domHtmlElement != null);
			m_DomHtmlElement = domHtmlElement;
		}
Example #17
0
 internal static T GetClassFor <T>(nsIDOMHTMLElement element)  where T : GeckoHtmlElement
 {
     return((T)m_cache.Get(element));
 }
Example #18
0
 public HTMLElement(WebBrowser control, nsIDOMHTMLElement domHtmlElement) : base(control, domHtmlElement as nsIDOMElement)
 {
     this.node = domHtmlElement;
 }
Example #19
0
 internal static T Create <T>(nsIDOMHTMLElement element) where T : GeckoHtmlElement
 {
     return((element == null) ? null : DOM.DOMSelector.GetClassFor <T>(element));
 }
Example #20
0
 internal static GeckoHtmlElement Create(nsIDOMHTMLElement element)
 {
     return((element == null) ? null : DOM.DOMSelector.GetClassFor(element));
 }
        public static nsIDOMHTMLElement GetProxy(Mono.WebBrowser.IWebBrowser control, nsIDOMHTMLElement obj)
        {
            object o = Base.GetProxyForObject(control, typeof(nsIDOMHTMLElement).GUID, obj);

            return(o as nsIDOMHTMLElement);
        }
Example #22
0
        //nsIDOMElement DomNSElement;

        #region ctor

        internal GeckoHtmlElement(nsIDOMHTMLElement element)
            : base(element)
        {
            _domHtmlElement = element;
            //this.DomNSElement = (nsIDOMElement)element;
        }
 internal static GeckoElement Create(nsIDOMHTMLElement element)
 {
     return((element == null) ? null : new GeckoElement(element));
 }
Example #24
0
		internal static DomHtmlElement Create(nsIDOMHTMLElement domHtmlElement)
		{
			return domHtmlElement != null ? new DomHtmlElement(domHtmlElement) : null;
		}
Example #25
0
		public HTMLElement (WebBrowser control, nsIDOMHTMLElement domHtmlElement) : base (control, domHtmlElement as nsIDOMElement)
		{
			this.node = domHtmlElement;
		}
Example #26
0
 internal GeckoHtmlElement(nsIDOMHTMLElement element)
     : base(element)
 {
     this.DomElement   = element;
     this.DomNSElement = (nsIDOMNSElement)element;
 }
Example #27
0
		public static nsIDOMHTMLElement GetProxy (Mono.WebBrowser.IWebBrowser control, nsIDOMHTMLElement obj)
		{
			object o = Base.GetProxyForObject (control, typeof(nsIDOMHTMLElement).GUID, obj);
			return o as nsIDOMHTMLElement;
		}