1 // Permission is hereby granted, free of charge, to any person obtaining
2 // a copy of this software and associated documentation files (the
3 // "Software"), to deal in the Software without restriction, including
4 // without limitation the rights to use, copy, modify, merge, publish,
5 // distribute, sublicense, and/or sell copies of the Software, and to
6 // permit persons to whom the Software is furnished to do so, subject to
7 // the following conditions:
9 // The above copyright notice and this permission notice shall be
10 // included in all copies or substantial portions of the Software.
12 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
13 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
14 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
15 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
16 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
17 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
18 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 // Copyright (c) 2008 Novell, Inc.
23 // Andreia Gaita (avidigal@novell.com)
27 using Mono.WebBrowser.DOM;
29 namespace Mono.Mozilla.DOM
31 internal class DOMImplementation : DOMObject, IDOMImplementation
33 private nsIDOMDOMImplementation unmanagedDomImpl;
34 protected int hashcode;
36 public DOMImplementation(WebBrowser control, nsIDOMDOMImplementation domImpl) : base (control)
38 if (control.platform != control.enginePlatform)
39 unmanagedDomImpl = nsDOMDOMImplementation.GetProxy (control, domImpl);
41 unmanagedDomImpl = domImpl;
42 hashcode = unmanagedDomImpl.GetHashCode ();
45 #region IDisposable Members
46 protected override void Dispose (bool disposing)
50 this.unmanagedDomImpl = null;
53 base.Dispose(disposing);
58 #region IDOMImplementation Members
60 public bool HasFeature (string feature, string version)
62 Base.StringSet (storage, feature);
63 UniString ver = new UniString (version);
65 unmanagedDomImpl.hasFeature (storage, ver.Handle, out ret);
69 public IDocumentType CreateDocumentType (string qualifiedName,
73 nsIDOMDocumentType doctype;
74 Base.StringSet (storage, qualifiedName);
75 UniString pubId = new UniString (publicId);
76 UniString sysId = new UniString (systemId);
77 unmanagedDomImpl.createDocumentType (storage, pubId.Handle, sysId.Handle, out doctype);
78 return new DocumentType (this.control, doctype);
81 public IDocument CreateDocument(string namespaceURI,
83 IDocumentType doctype)
86 Base.StringSet (storage, namespaceURI);
87 UniString qual = new UniString (qualifiedName);
88 unmanagedDomImpl.createDocument (storage, qual.Handle, ((DocumentType)doctype).ComObject, out doc);
89 control.documents.Add (doc.GetHashCode (), new Document (this.control, doc));
90 return control.documents[doc.GetHashCode ()] as IDocument;