Bumping manifests a=b2g-bump
[gecko.git] / dom / base / DOMImplementation.h
blob1dd114cbb42ac54d42e01e8e03559459f312d049
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 #ifndef mozilla_dom_DOMImplementation_h
6 #define mozilla_dom_DOMImplementation_h
8 #include "nsIDOMDOMImplementation.h"
9 #include "nsWrapperCache.h"
11 #include "mozilla/Attributes.h"
12 #include "mozilla/ErrorResult.h"
13 #include "nsCOMPtr.h"
14 #include "nsCycleCollectionParticipant.h"
15 #include "nsIDocument.h"
16 #include "nsIScriptGlobalObject.h"
17 #include "nsIURI.h"
18 #include "nsIWeakReferenceUtils.h"
19 #include "nsString.h"
21 class nsIDOMDocument;
23 namespace mozilla {
24 namespace dom {
25 class DocumentType;
27 class DOMImplementation MOZ_FINAL : public nsIDOMDOMImplementation
28 , public nsWrapperCache
30 ~DOMImplementation()
34 public:
35 DOMImplementation(nsIDocument* aOwner,
36 nsIGlobalObject* aScriptObject,
37 nsIURI* aDocumentURI,
38 nsIURI* aBaseURI)
39 : mOwner(aOwner)
40 , mScriptObject(do_GetWeakReference(aScriptObject))
41 , mDocumentURI(aDocumentURI)
42 , mBaseURI(aBaseURI)
44 MOZ_ASSERT(aOwner);
47 NS_DECL_CYCLE_COLLECTING_ISUPPORTS
48 NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(DOMImplementation)
50 nsIDocument* GetParentObject() const
52 return mOwner;
55 virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
57 // nsIDOMDOMImplementation
58 NS_DECL_NSIDOMDOMIMPLEMENTATION
60 bool HasFeature(const nsAString& aFeature, const nsAString& aVersion);
62 already_AddRefed<DocumentType>
63 CreateDocumentType(const nsAString& aQualifiedName,
64 const nsAString& aPublicId,
65 const nsAString& aSystemId,
66 ErrorResult& aRv);
68 already_AddRefed<nsIDocument>
69 CreateDocument(const nsAString& aNamespaceURI,
70 const nsAString& aQualifiedName,
71 nsIDOMDocumentType* aDoctype,
72 ErrorResult& aRv);
74 already_AddRefed<nsIDocument>
75 CreateHTMLDocument(const Optional<nsAString>& aTitle, ErrorResult& aRv);
77 private:
78 nsresult CreateDocument(const nsAString& aNamespaceURI,
79 const nsAString& aQualifiedName,
80 nsIDOMDocumentType* aDoctype,
81 nsIDocument** aDocument,
82 nsIDOMDocument** aDOMDocument);
83 nsresult CreateHTMLDocument(const nsAString& aTitle,
84 nsIDocument** aDocument,
85 nsIDOMDocument** aDOMDocument);
87 nsCOMPtr<nsIDocument> mOwner;
88 nsWeakPtr mScriptObject;
89 nsCOMPtr<nsIURI> mDocumentURI;
90 nsCOMPtr<nsIURI> mBaseURI;
93 } // namespace dom
94 } // namespace mozilla
96 #endif // mozilla_dom_DOMImplementation_h