1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */ 3 /* This Source Code Form is subject to the terms of the Mozilla Public 4 * License, v. 2.0. If a copy of the MPL was not distributed with this 5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 6 7 #ifndef mozilla_dom_AnonymousContent_h 8 #define mozilla_dom_AnonymousContent_h 9 10 #include "mozilla/dom/Element.h" 11 #include "mozilla/dom/Event.h" 12 #include "nsCycleCollectionParticipant.h" 13 #include "nsICSSDeclaration.h" 14 #include "mozilla/dom/Document.h" 15 16 namespace mozilla { 17 namespace dom { 18 19 class Element; 20 class UnrestrictedDoubleOrAnonymousKeyframeAnimationOptions; 21 22 class AnonymousContent final { 23 public: 24 // Ref counting and cycle collection 25 NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(AnonymousContent) 26 NS_DECL_CYCLE_COLLECTION_NATIVE_CLASS(AnonymousContent) 27 28 explicit AnonymousContent(already_AddRefed<Element> aContentNode); ContentNode()29 Element& ContentNode() { return *mContentNode; } 30 31 Element* GetElementById(const nsAString& aElementId); 32 bool WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto, 33 JS::MutableHandle<JSObject*> aReflector); 34 35 // WebIDL methods 36 void SetTextContentForElement(const nsAString& aElementId, 37 const nsAString& aText, ErrorResult& aRv); 38 39 void GetTextContentForElement(const nsAString& aElementId, DOMString& aText, 40 ErrorResult& aRv); 41 42 void SetAttributeForElement(const nsAString& aElementId, 43 const nsAString& aName, const nsAString& aValue, 44 nsIPrincipal* aSubjectPrincipal, 45 ErrorResult& aRv); 46 47 void GetAttributeForElement(const nsAString& aElementId, 48 const nsAString& aName, DOMString& aValue, 49 ErrorResult& aRv); 50 51 void RemoveAttributeForElement(const nsAString& aElementId, 52 const nsAString& aName, ErrorResult& aRv); 53 54 already_AddRefed<nsISupports> GetCanvasContext(const nsAString& aElementId, 55 const nsAString& aContextId, 56 ErrorResult& aRv); 57 58 already_AddRefed<Animation> SetAnimationForElement( 59 JSContext* aContext, const nsAString& aElementId, 60 JS::Handle<JSObject*> aKeyframes, 61 const UnrestrictedDoubleOrKeyframeAnimationOptions& aOptions, 62 ErrorResult& aError); 63 64 void SetCutoutRectsForElement(const nsAString& aElementId, 65 const Sequence<OwningNonNull<DOMRect>>& aRects, 66 ErrorResult& aError); 67 68 void GetComputedStylePropertyValue(const nsAString& aElementId, 69 const nsACString& aPropertyName, 70 DOMString& aResult, ErrorResult& aRv); 71 72 void GetTargetIdForEvent(Event& aEvent, DOMString& aResult); 73 74 void SetStyle(const nsACString& aProperty, const nsACString& aValue, 75 ErrorResult& aRv); 76 77 private: 78 ~AnonymousContent(); 79 RefPtr<Element> mContentNode; 80 }; 81 82 } // namespace dom 83 } // namespace mozilla 84 85 #endif // mozilla_dom_AnonymousContent_h 86