dom/smil/nsSMILCSSValueType.h

Tue, 06 Jan 2015 21:39:09 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Tue, 06 Jan 2015 21:39:09 +0100
branch
TOR_BUG_9701
changeset 8
97036ab72558
permissions
-rw-r--r--

Conditionally force memory storage according to privacy.thirdparty.isolate;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.

     1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
     2 /* This Source Code Form is subject to the terms of the Mozilla Public
     3  * License, v. 2.0. If a copy of the MPL was not distributed with this
     4  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     6 /* representation of a value for a SMIL-animated CSS property */
     8 #ifndef NS_SMILCSSVALUETYPE_H_
     9 #define NS_SMILCSSVALUETYPE_H_
    11 #include "nsISMILType.h"
    12 #include "nsCSSProperty.h"
    13 #include "mozilla/Attributes.h"
    15 class nsAString;
    17 namespace mozilla {
    18 namespace dom {
    19 class Element;
    20 } // namespace dom
    21 } // namespace mozilla
    23 /*
    24  * nsSMILCSSValueType: Represents a SMIL-animated CSS value.
    25  */
    26 class nsSMILCSSValueType : public nsISMILType
    27 {
    28 public:
    29   typedef mozilla::dom::Element Element;
    31   // Singleton for nsSMILValue objects to hold onto.
    32   static nsSMILCSSValueType sSingleton;
    34 protected:
    35   // nsISMILType Methods
    36   // -------------------
    37   virtual void     Init(nsSMILValue& aValue) const MOZ_OVERRIDE;
    38   virtual void     Destroy(nsSMILValue&) const MOZ_OVERRIDE;
    39   virtual nsresult Assign(nsSMILValue& aDest,
    40                           const nsSMILValue& aSrc) const MOZ_OVERRIDE;
    41   virtual bool     IsEqual(const nsSMILValue& aLeft,
    42                            const nsSMILValue& aRight) const MOZ_OVERRIDE;
    43   virtual nsresult Add(nsSMILValue& aDest,
    44                        const nsSMILValue& aValueToAdd,
    45                        uint32_t aCount) const MOZ_OVERRIDE;
    46   virtual nsresult ComputeDistance(const nsSMILValue& aFrom,
    47                                    const nsSMILValue& aTo,
    48                                    double& aDistance) const MOZ_OVERRIDE;
    49   virtual nsresult Interpolate(const nsSMILValue& aStartVal,
    50                                const nsSMILValue& aEndVal,
    51                                double aUnitDistance,
    52                                nsSMILValue& aResult) const MOZ_OVERRIDE;
    54 public:
    55   // Helper Methods
    56   // --------------
    57   /**
    58    * Sets up the given nsSMILValue to represent the given string value.  The
    59    * string is interpreted as a value for the given property on the given
    60    * element.
    61    *
    62    * On failure, this method leaves aValue.mType == nsSMILNullType::sSingleton.
    63    * Otherwise, this method leaves aValue.mType == this class's singleton.
    64    *
    65    * @param       aPropID         The property for which we're parsing a value.
    66    * @param       aTargetElement  The target element to whom the property/value
    67    *                              setting applies.
    68    * @param       aString         The string to be parsed as a CSS value.
    69    * @param [out] aValue          The nsSMILValue to be populated. Should
    70    *                              initially be null-typed.
    71    * @param [out] aIsContextSensitive Set to true if |aString| may produce
    72    *                                  a different |aValue| depending on other
    73    *                                  CSS properties on |aTargetElement|
    74    *                                  or its ancestors (e.g. 'inherit).
    75    *                                  false otherwise. May be nullptr.
    76    *                                  Not set if the method fails.
    77    * @pre  aValue.IsNull()
    78    * @post aValue.IsNull() || aValue.mType == nsSMILCSSValueType::sSingleton
    79    */
    80   static void ValueFromString(nsCSSProperty aPropID,
    81                               Element* aTargetElement,
    82                               const nsAString& aString,
    83                               nsSMILValue& aValue,
    84                               bool* aIsContextSensitive);
    86   /**
    87    * Creates a string representation of the given nsSMILValue.
    88    *
    89    * Note: aValue is expected to be of this type (that is, it's expected to
    90    * have been initialized by nsSMILCSSValueType::sSingleton).  If aValue is a
    91    * freshly-initialized value, this method will succeed, though the resulting
    92    * string will be empty.
    93    *
    94    * @param       aValue   The nsSMILValue to be converted into a string.
    95    * @param [out] aString  The string to be populated with the given value.
    96    * @return               true on success, false on failure.
    97    */
    98   static bool ValueToString(const nsSMILValue& aValue, nsAString& aString);
   100 private:
   101   // Private constructor: prevent instances beyond my singleton.
   102   MOZ_CONSTEXPR nsSMILCSSValueType() {}
   103 };
   105 #endif // NS_SMILCSSVALUETYPE_H_

mercurial