CSSComputedStyleDeclaration.h [plain text]
#ifndef CSSComputedStyleDeclaration_h
#define CSSComputedStyleDeclaration_h
#include "CSSStyleDeclaration.h"
#include "RenderStyleConstants.h"
#include <wtf/RefPtr.h>
#include <wtf/text/WTFString.h>
namespace WebCore {
class CSSPrimitiveValue;
class CSSValueList;
class Color;
class FilterOperations;
class MutableStyleProperties;
class Node;
class RenderObject;
class RenderStyle;
class SVGPaint;
class ShadowData;
class StyleProperties;
class StylePropertyShorthand;
enum EUpdateLayout { DoNotUpdateLayout = false, UpdateLayout = true };
enum AdjustPixelValuesForComputedStyle { AdjustPixelValues, DoNotAdjustPixelValues };
class ComputedStyleExtractor {
public:
ComputedStyleExtractor(PassRefPtr<Node>, bool allowVisitedStyle = false, PseudoId = NOPSEUDO);
PassRefPtr<CSSValue> propertyValue(CSSPropertyID, EUpdateLayout = UpdateLayout) const;
Ref<MutableStyleProperties> copyPropertiesInSet(const CSSPropertyID* set, unsigned length) const;
Ref<MutableStyleProperties> copyProperties() const;
PassRefPtr<CSSPrimitiveValue> getFontSizeCSSValuePreferringKeyword() const;
bool useFixedFontDefaultSize() const;
bool propertyMatches(CSSPropertyID, const CSSValue*) const;
static Ref<CSSValue> valueForFilter(const RenderStyle&, const FilterOperations&, AdjustPixelValuesForComputedStyle = AdjustPixelValues);
private:
Node* styledNode() const;
PassRefPtr<CSSValue> svgPropertyValue(CSSPropertyID, EUpdateLayout) const;
PassRefPtr<SVGPaint> adjustSVGPaintForCurrentColor(PassRefPtr<SVGPaint>, RenderStyle*) const;
static Ref<CSSValue> valueForShadow(const ShadowData*, CSSPropertyID, const RenderStyle&, AdjustPixelValuesForComputedStyle = AdjustPixelValues);
PassRefPtr<CSSPrimitiveValue> currentColorOrValidColor(RenderStyle*, const Color&) const;
PassRefPtr<CSSValueList> getCSSPropertyValuesForShorthandProperties(const StylePropertyShorthand&) const;
PassRefPtr<CSSValueList> getCSSPropertyValuesForSidesShorthand(const StylePropertyShorthand&) const;
PassRefPtr<CSSValueList> getBackgroundShorthandValue() const;
PassRefPtr<CSSValueList> getCSSPropertyValuesForGridShorthand(const StylePropertyShorthand&) const;
RefPtr<Node> m_node;
PseudoId m_pseudoElementSpecifier;
bool m_allowVisitedStyle;
};
class CSSComputedStyleDeclaration final : public CSSStyleDeclaration {
public:
static Ref<CSSComputedStyleDeclaration> create(PassRefPtr<Node> node, bool allowVisitedStyle = false, const String& pseudoElementName = String())
{
return adoptRef(*new CSSComputedStyleDeclaration(node, allowVisitedStyle, pseudoElementName));
}
virtual ~CSSComputedStyleDeclaration();
WEBCORE_EXPORT virtual void ref() override;
WEBCORE_EXPORT virtual void deref() override;
String getPropertyValue(CSSPropertyID) const;
private:
WEBCORE_EXPORT CSSComputedStyleDeclaration(PassRefPtr<Node>, bool allowVisitedStyle, const String&);
virtual CSSRule* parentRule() const override;
virtual unsigned length() const override;
virtual String item(unsigned index) const override;
virtual PassRefPtr<CSSValue> getPropertyCSSValue(const String& propertyName) override;
virtual String getPropertyValue(const String& propertyName) override;
virtual String getPropertyPriority(const String& propertyName) override;
virtual String getPropertyShorthand(const String& propertyName) override;
virtual bool isPropertyImplicit(const String& propertyName) override;
virtual void setProperty(const String& propertyName, const String& value, const String& priority, ExceptionCode&) override;
virtual String removeProperty(const String& propertyName, ExceptionCode&) override;
virtual String cssText() const override;
virtual void setCssText(const String&, ExceptionCode&) override;
virtual PassRefPtr<CSSValue> getPropertyCSSValueInternal(CSSPropertyID) override;
virtual String getPropertyValueInternal(CSSPropertyID) override;
virtual bool setPropertyInternal(CSSPropertyID, const String& value, bool important, ExceptionCode&) override;
virtual Ref<MutableStyleProperties> copyProperties() const override;
PassRefPtr<CSSValue> getPropertyCSSValue(CSSPropertyID, EUpdateLayout = UpdateLayout) const;
RefPtr<Node> m_node;
PseudoId m_pseudoElementSpecifier;
bool m_allowVisitedStyle;
unsigned m_refCount;
};
}
#endif // CSSComputedStyleDeclaration_h