diff -r 000000000000 -r 6474c204b198 content/base/src/nsMappedAttributeElement.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/content/base/src/nsMappedAttributeElement.h Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,48 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim:set tw=80 expandtab softtabstop=2 ts=2 sw=2: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +/** + * nsMappedAttributeElement is the base for elements supporting style mapped + * attributes via nsMappedAttributes (HTML and MathML). + */ + +#ifndef NS_MAPPEDATTRIBUTEELEMENT_H_ +#define NS_MAPPEDATTRIBUTEELEMENT_H_ + +#include "mozilla/Attributes.h" +#include "nsStyledElement.h" + +class nsMappedAttributes; +struct nsRuleData; + +typedef void (*nsMapRuleToAttributesFunc)(const nsMappedAttributes* aAttributes, + nsRuleData* aData); + +typedef nsStyledElement nsMappedAttributeElementBase; + +class nsMappedAttributeElement : public nsMappedAttributeElementBase +{ + +protected: + + nsMappedAttributeElement(already_AddRefed& aNodeInfo) + : nsMappedAttributeElementBase(aNodeInfo) + {} + +public: + virtual nsMapRuleToAttributesFunc GetAttributeMappingFunction() const; + + static void MapNoAttributesInto(const nsMappedAttributes* aAttributes, + nsRuleData* aRuleData); + + NS_IMETHOD WalkContentStyleRules(nsRuleWalker* aRuleWalker) MOZ_OVERRIDE; + virtual bool SetMappedAttribute(nsIDocument* aDocument, + nsIAtom* aName, + nsAttrValue& aValue, + nsresult* aRetval) MOZ_OVERRIDE; +}; + +#endif // NS_MAPPEDATTRIBUTEELEMENT_H_