DOMSVGAnimatedString.h (1964B)
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 DOM_SVG_DOMSVGANIMATEDSTRING_H_ 8 #define DOM_SVG_DOMSVGANIMATEDSTRING_H_ 9 10 #include "mozilla/SVGAnimatedClassOrString.h" 11 #include "mozilla/dom/SVGElement.h" 12 13 class nsIPrincipal; 14 15 namespace mozilla::dom { 16 17 class OwningTrustedScriptURLOrString; 18 class TrustedScriptURLOrString; 19 20 class DOMSVGAnimatedString final : public nsWrapperCache { 21 public: 22 NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_NATIVE_CLASS(DOMSVGAnimatedString) 23 NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(DOMSVGAnimatedString) 24 25 DOMSVGAnimatedString(SVGAnimatedClassOrString* aVal, SVGElement* aSVGElement) 26 : mVal(aVal), mSVGElement(aSVGElement) {} 27 28 JSObject* WrapObject(JSContext* aCx, 29 JS::Handle<JSObject*> aGivenProto) override; 30 31 // WebIDL 32 SVGElement* GetParentObject() const { return mSVGElement; } 33 34 void GetBaseVal(OwningTrustedScriptURLOrString& aResult) { 35 mVal->GetBaseValue(aResult, mSVGElement); 36 } 37 MOZ_CAN_RUN_SCRIPT void SetBaseVal(const TrustedScriptURLOrString& aValue, 38 nsIPrincipal* aSubjectPrincipal, 39 ErrorResult& aRv) { 40 RefPtr<SVGElement> svgElement = mSVGElement; 41 mVal->SetBaseValue(aValue, svgElement, true, aSubjectPrincipal, aRv); 42 } 43 void GetAnimVal(nsAString& aResult) { 44 mSVGElement->FlushAnimations(); 45 mVal->GetAnimValue(aResult, mSVGElement); 46 } 47 48 private: 49 ~DOMSVGAnimatedString() { mVal->RemoveTearoff(); } 50 51 SVGAnimatedClassOrString* mVal; // kept alive because it belongs to content 52 RefPtr<SVGElement> mSVGElement; 53 }; 54 55 } // namespace mozilla::dom 56 57 #endif // DOM_SVG_DOMSVGANIMATEDSTRING_H_