LCOV - code coverage report
Current view: top level - layout/style - nsROCSSPrimitiveValue.h (source / functions) Hit Total Coverage
Test: output.info Lines: 1 12 8.3 %
Date: 2017-07-14 16:53:18 Functions: 5 10 50.0 %
Legend: Lines: hit not hit

          Line data    Source code
       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/. */
       5             : 
       6             : /* DOM object representing values in DOM computed style */
       7             : 
       8             : #ifndef nsROCSSPrimitiveValue_h___
       9             : #define nsROCSSPrimitiveValue_h___
      10             : 
      11             : #include "nsIDOMCSSValue.h"
      12             : #include "nsIDOMCSSPrimitiveValue.h"
      13             : #include "nsCSSKeywords.h"
      14             : #include "CSSValue.h"
      15             : #include "nsCOMPtr.h"
      16             : #include "nsCoord.h"
      17             : 
      18             : class nsIURI;
      19             : class nsDOMCSSRect;
      20             : class nsDOMCSSRGBColor;
      21             : 
      22             : // There is no CSS_TURN constant on the CSSPrimitiveValue interface,
      23             : // since that unit is newer than DOM Level 2 Style, and CSS OM will
      24             : // probably expose CSS values in some other way in the future.  We
      25             : // use this value in mType for "turn"-unit angles, but we define it
      26             : // here to avoid exposing it to content.
      27             : #define CSS_TURN 30U
      28             : // Likewise we have some internal aliases for CSS_NUMBER that we don't
      29             : // want to expose.
      30             : #define CSS_NUMBER_INT32 31U
      31             : #define CSS_NUMBER_UINT32 32U
      32             : 
      33             : /**
      34             :  * Read-only CSS primitive value - a DOM object representing values in DOM
      35             :  * computed style.
      36             :  */
      37             : class nsROCSSPrimitiveValue final : public mozilla::dom::CSSValue,
      38             :                                     public nsIDOMCSSPrimitiveValue
      39             : {
      40             : public:
      41             :   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
      42          80 :   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_AMBIGUOUS(nsROCSSPrimitiveValue, mozilla::dom::CSSValue)
      43             : 
      44             :   // nsIDOMCSSPrimitiveValue
      45             :   NS_DECL_NSIDOMCSSPRIMITIVEVALUE
      46             : 
      47             :   // nsIDOMCSSValue
      48             :   NS_DECL_NSIDOMCSSVALUE
      49             : 
      50             :   // CSSValue
      51             :   virtual void GetCssText(nsString& aText, mozilla::ErrorResult& aRv) override final;
      52             :   virtual void SetCssText(const nsAString& aText, mozilla::ErrorResult& aRv) override final;
      53             :   virtual uint16_t CssValueType() const override final;
      54             : 
      55             :   // CSSPrimitiveValue
      56           0 :   uint16_t PrimitiveType()
      57             :   {
      58             :     // New value types were introduced but not added to CSS OM.
      59             :     // Return CSS_UNKNOWN to avoid exposing CSS_TURN to content.
      60           0 :     if (mType > CSS_RGBCOLOR) {
      61           0 :       if (mType == CSS_NUMBER_INT32 || mType == CSS_NUMBER_UINT32) {
      62           0 :         return CSS_NUMBER;
      63             :       }
      64           0 :       return CSS_UNKNOWN;
      65             :     }
      66           0 :     return mType;
      67             :   }
      68             :   void SetFloatValue(uint16_t aUnitType, float aValue,
      69             :                      mozilla::ErrorResult& aRv);
      70             :   float GetFloatValue(uint16_t aUnitType, mozilla::ErrorResult& aRv);
      71             :   void GetStringValue(nsString& aString, mozilla::ErrorResult& aRv);
      72             :   void SetStringValue(uint16_t aUnitType, const nsAString& aString,
      73             :                       mozilla::ErrorResult& aRv);
      74             :   already_AddRefed<nsIDOMCounter> GetCounterValue(mozilla::ErrorResult& aRv);
      75             :   nsDOMCSSRect* GetRectValue(mozilla::ErrorResult& aRv);
      76             :   nsDOMCSSRGBColor *GetRGBColorValue(mozilla::ErrorResult& aRv);
      77             : 
      78             :   // nsROCSSPrimitiveValue
      79             :   nsROCSSPrimitiveValue();
      80             : 
      81             :   void SetNumber(float aValue);
      82             :   void SetNumber(int32_t aValue);
      83             :   void SetNumber(uint32_t aValue);
      84             :   void SetPercent(float aValue);
      85             :   void SetDegree(float aValue);
      86             :   void SetGrad(float aValue);
      87             :   void SetRadian(float aValue);
      88             :   void SetTurn(float aValue);
      89             :   void SetAppUnits(nscoord aValue);
      90             :   void SetAppUnits(float aValue);
      91             :   void SetIdent(nsCSSKeyword aKeyword);
      92             :   // FIXME: CSS_STRING should imply a string with "" and a need for escaping.
      93             :   void SetString(const nsACString& aString, uint16_t aType = CSS_STRING);
      94             :   // FIXME: CSS_STRING should imply a string with "" and a need for escaping.
      95             :   void SetString(const nsAString& aString, uint16_t aType = CSS_STRING);
      96             :   void SetURI(nsIURI *aURI);
      97             :   void SetColor(nsDOMCSSRGBColor* aColor);
      98             :   void SetRect(nsDOMCSSRect* aRect);
      99             :   void SetTime(float aValue);
     100             :   void Reset();
     101             : 
     102           0 :   nsISupports* GetParentObject() const
     103             :   {
     104           0 :     return nullptr;
     105             :   }
     106             : 
     107             :   virtual JSObject *WrapObject(JSContext *cx, JS::Handle<JSObject*> aGivenProto) override;
     108             : 
     109             : private:
     110             :   ~nsROCSSPrimitiveValue();
     111             : 
     112             :   uint16_t mType;
     113             : 
     114             :   union {
     115             :     nscoord         mAppUnits;
     116             :     float           mFloat;
     117             :     int32_t         mInt32;
     118             :     uint32_t        mUint32;
     119             :     // These can't be nsCOMPtr/nsRefPtr's because they are used inside a union.
     120             :     nsDOMCSSRGBColor* MOZ_OWNING_REF mColor;
     121             :     nsDOMCSSRect* MOZ_OWNING_REF mRect;
     122             :     char16_t*      mString;
     123             :     nsIURI* MOZ_OWNING_REF mURI;
     124             :     nsCSSKeyword    mKeyword;
     125             :   } mValue;
     126             : };
     127             : 
     128           0 : inline nsROCSSPrimitiveValue *mozilla::dom::CSSValue::AsPrimitiveValue()
     129             : {
     130           0 :   return CssValueType() == nsIDOMCSSValue::CSS_PRIMITIVE_VALUE ?
     131           0 :     static_cast<nsROCSSPrimitiveValue*>(this) : nullptr;
     132             : }
     133             : 
     134             : #endif /* nsROCSSPrimitiveValue_h___ */
     135             : 

Generated by: LCOV version 1.13