dom/smil/nsISMILAttr.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 #ifndef NS_ISMILATTR_H_
     7 #define NS_ISMILATTR_H_
     9 #include "nscore.h"
    11 class nsSMILValue;
    12 class nsISMILType;
    13 class nsIContent;
    14 class nsAString;
    16 namespace mozilla {
    17 namespace dom {
    18 class SVGAnimationElement;
    19 }
    20 }
    22 ////////////////////////////////////////////////////////////////////////
    23 // nsISMILAttr: A variable targeted by SMIL for animation and can therefore have
    24 // an underlying (base) value and an animated value For example, an attribute of
    25 // a particular SVG element.
    26 //
    27 // These objects only exist during the compositing phase of SMIL animation
    28 // calculations. They have a single owner who is responsible for deleting the
    29 // object.
    31 class nsISMILAttr
    32 {
    33 public:
    34   /**
    35    * Creates a new nsSMILValue for this attribute from a string. The string is
    36    * parsed in the context of this attribute so that context-dependent values
    37    * such as em-based units can be resolved into a canonical form suitable for
    38    * animation (including interpolation etc.).
    39    *
    40    * @param aStr        A string defining the new value to be created.
    41    * @param aSrcElement The source animation element. This may be needed to
    42    *                    provided additional context data such as for
    43    *                    animateTransform where the 'type' attribute is needed to
    44    *                    parse the value.
    45    * @param[out] aValue Outparam for storing the parsed value.
    46    * @param[out] aPreventCachingOfSandwich
    47    *                    Outparam to indicate whether the attribute contains
    48    *                    dependencies on its context that should prevent the
    49    *                    result of the animation sandwich from being cached and
    50    *                    reused in future samples.
    51    * @return NS_OK on success or an error code if creation failed.
    52    */
    53   virtual nsresult ValueFromString(const nsAString& aStr,
    54                                    const mozilla::dom::SVGAnimationElement* aSrcElement,
    55                                    nsSMILValue& aValue,
    56                                    bool& aPreventCachingOfSandwich) const = 0;
    58   /**
    59    * Gets the underlying value of this attribute.
    60    *
    61    * @return an nsSMILValue object. returned_object.IsNull() will be true if an
    62    * error occurred.
    63    */
    64   virtual nsSMILValue GetBaseValue() const = 0;
    66   /**
    67    * Clears the animated value of this attribute.
    68    *
    69    * NOTE: The animation target is not guaranteed to be in a document when this
    70    * method is called. (See bug 523188)
    71    */
    72   virtual void ClearAnimValue() = 0;
    74   /**
    75    * Sets the presentation value of this attribute.
    76    *
    77    * @param aValue  The value to set.
    78    * @return NS_OK on success or an error code if setting failed.
    79    */
    80   virtual nsresult SetAnimValue(const nsSMILValue& aValue) = 0;
    82   /**
    83    * Returns the targeted content node, for any nsISMILAttr implementations
    84    * that want to expose that to the animation logic.  Otherwise, returns
    85    * null.
    86    *
    87    * @return the targeted content node, if this nsISMILAttr implementation
    88    * wishes to make it avaiable.  Otherwise, nullptr.
    89    */
    90   virtual const nsIContent* GetTargetNode() const { return nullptr; }
    92   /**
    93    * Virtual destructor, to make sure subclasses can clean themselves up.
    94    */
    95   virtual ~nsISMILAttr() {}
    96 };
    98 #endif // NS_ISMILATTR_H_

mercurial