diff -r 000000000000 -r 6474c204b198 layout/style/nsStyleUtil.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/layout/style/nsStyleUtil.h Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,142 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 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/. */ +#ifndef nsStyleUtil_h___ +#define nsStyleUtil_h___ + +#include "nsCoord.h" +#include "nsCSSProperty.h" +#include "nsString.h" +#include "nsTArrayForwardDeclare.h" + +class nsCSSValue; +class nsStringComparator; +class nsStyleCoord; +class nsIContent; +class nsIPrincipal; +class nsIURI; +struct gfxFontFeature; +struct gfxAlternateValue; +class nsCSSValueList; + +// Style utility functions +class nsStyleUtil { +public: + + static bool DashMatchCompare(const nsAString& aAttributeValue, + const nsAString& aSelectorValue, + const nsStringComparator& aComparator); + + // Append a quoted (with 'quoteChar') and escaped version of aString + // to aResult. 'quoteChar' must be ' or ". + static void AppendEscapedCSSString(const nsAString& aString, + nsAString& aResult, + char16_t quoteChar = '"'); + + // Append the identifier given by |aIdent| to |aResult|, with + // appropriate escaping so that it can be reparsed to the same + // identifier. + // Returns false if |aIdent| contains U+0000 + // Returns true for all other cases + static bool AppendEscapedCSSIdent(const nsAString& aIdent, + nsAString& aResult); + + // Append a bitmask-valued property's value(s) (space-separated) to aResult. + static void AppendBitmaskCSSValue(nsCSSProperty aProperty, + int32_t aMaskedValue, + int32_t aFirstMask, + int32_t aLastMask, + nsAString& aResult); + + static void AppendAngleValue(const nsStyleCoord& aValue, nsAString& aResult); + + static void AppendPaintOrderValue(uint8_t aValue, nsAString& aResult); + + static void AppendFontFeatureSettings(const nsTArray& aFeatures, + nsAString& aResult); + + static void AppendFontFeatureSettings(const nsCSSValue& src, + nsAString& aResult); + + static void AppendCSSNumber(float aNumber, nsAString& aResult) + { + aResult.AppendFloat(aNumber); + } + + // convert bitmask value to keyword name for a functional alternate + static void GetFunctionalAlternatesName(int32_t aFeature, + nsAString& aFeatureName); + + // Append functional font-variant-alternates values to string + static void + SerializeFunctionalAlternates(const nsTArray& aAlternates, + nsAString& aResult); + + // List of functional font-variant-alternates values to feature/value pairs + static void + ComputeFunctionalAlternates(const nsCSSValueList* aList, + nsTArray& aAlternateValues); + + /* + * Convert an author-provided floating point number to an integer (0 + * ... 255) appropriate for use in the alpha component of a color. + */ + static uint8_t FloatToColorComponent(float aAlpha) + { + NS_ASSERTION(0.0 <= aAlpha && aAlpha <= 1.0, "out of range"); + return NSToIntRound(aAlpha * 255); + } + + /* + * Convert the alpha component of an nscolor (0 ... 255) to the + * floating point number with the least accurate *decimal* + * representation that is converted to that color. + * + * Should be used only by serialization code. + */ + static float ColorComponentToFloat(uint8_t aAlpha); + + /* + * Does this child count as significant for selector matching? + */ + static bool IsSignificantChild(nsIContent* aChild, + bool aTextIsSignificant, + bool aWhitespaceIsSignificant); + /* + * Does this principal have a CSP that blocks the application of + * inline styles? Returns false if application of the style should + * be blocked. + * + * @param aContent + * The