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/. */
7 * style sheet and style rule processor representing style attributes
10 #ifndef nsHTMLCSSStyleSheet_h_
11 #define nsHTMLCSSStyleSheet_h_
13 #include "mozilla/Attributes.h"
16 #include "nsDataHashtable.h"
17 #include "nsIStyleSheet.h"
18 #include "nsIStyleRuleProcessor.h"
22 class nsHTMLCSSStyleSheet MOZ_FINAL
: public nsIStyleSheet
,
23 public nsIStyleRuleProcessor
{
25 nsHTMLCSSStyleSheet();
26 ~nsHTMLCSSStyleSheet();
30 nsresult
Init(nsIURI
* aURL
, nsIDocument
* aDocument
);
31 void Reset(nsIURI
* aURL
);
34 virtual nsIURI
* GetSheetURI() const;
35 virtual nsIURI
* GetBaseURI() const MOZ_OVERRIDE
;
36 virtual void GetTitle(nsString
& aTitle
) const MOZ_OVERRIDE
;
37 virtual void GetType(nsString
& aType
) const MOZ_OVERRIDE
;
38 virtual bool HasRules() const MOZ_OVERRIDE
;
39 virtual bool IsApplicable() const MOZ_OVERRIDE
;
40 virtual void SetEnabled(bool aEnabled
) MOZ_OVERRIDE
;
41 virtual bool IsComplete() const MOZ_OVERRIDE
;
42 virtual void SetComplete() MOZ_OVERRIDE
;
43 virtual nsIStyleSheet
* GetParentSheet() const MOZ_OVERRIDE
; // will be null
44 virtual nsIDocument
* GetOwningDocument() const MOZ_OVERRIDE
;
45 virtual void SetOwningDocument(nsIDocument
* aDocument
) MOZ_OVERRIDE
;
47 virtual void List(FILE* out
= stdout
, int32_t aIndent
= 0) const MOZ_OVERRIDE
;
50 // nsIStyleRuleProcessor
51 virtual void RulesMatching(ElementRuleProcessorData
* aData
) MOZ_OVERRIDE
;
52 virtual void RulesMatching(PseudoElementRuleProcessorData
* aData
) MOZ_OVERRIDE
;
53 virtual void RulesMatching(AnonBoxRuleProcessorData
* aData
) MOZ_OVERRIDE
;
55 virtual void RulesMatching(XULTreeRuleProcessorData
* aData
) MOZ_OVERRIDE
;
57 virtual nsRestyleHint
HasStateDependentStyle(StateRuleProcessorData
* aData
) MOZ_OVERRIDE
;
58 virtual bool HasDocumentStateDependentStyle(StateRuleProcessorData
* aData
) MOZ_OVERRIDE
;
60 HasAttributeDependentStyle(AttributeRuleProcessorData
* aData
) MOZ_OVERRIDE
;
61 virtual bool MediumFeaturesChanged(nsPresContext
* aPresContext
) MOZ_OVERRIDE
;
62 virtual size_t SizeOfExcludingThis(nsMallocSizeOfFun aMallocSizeOf
)
63 const MOZ_MUST_OVERRIDE MOZ_OVERRIDE
;
64 virtual size_t SizeOfIncludingThis(nsMallocSizeOfFun aMallocSizeOf
)
65 const MOZ_MUST_OVERRIDE MOZ_OVERRIDE
;
67 void CacheStyleAttr(const nsAString
& aSerialized
, MiscContainer
* aValue
);
68 void EvictStyleAttr(const nsAString
& aSerialized
, MiscContainer
* aValue
);
69 MiscContainer
* LookupStyleAttr(const nsAString
& aSerialized
);
72 nsHTMLCSSStyleSheet(const nsHTMLCSSStyleSheet
& aCopy
) MOZ_DELETE
;
73 nsHTMLCSSStyleSheet
& operator=(const nsHTMLCSSStyleSheet
& aCopy
) MOZ_DELETE
;
76 nsCOMPtr
<nsIURI
> mURL
;
77 nsIDocument
* mDocument
;
78 nsDataHashtable
<nsStringHashKey
, MiscContainer
*> mCachedStyleAttrs
;
82 ToSupports(nsHTMLCSSStyleSheet
* aPointer
)
84 return static_cast<nsIStyleSheet
*>(aPointer
);
87 #endif /* !defined(nsHTMLCSSStyleSheet_h_) */