Bug 867089 - Validate the playbackRate before using it. r=ehsan
[gecko.git] / layout / style / nsHTMLCSSStyleSheet.h
blob2d530a37502976ee37e9376dbaf98feafee344a7
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 /*
7 * style sheet and style rule processor representing style attributes
8 */
10 #ifndef nsHTMLCSSStyleSheet_h_
11 #define nsHTMLCSSStyleSheet_h_
13 #include "mozilla/Attributes.h"
15 #include "nsCOMPtr.h"
16 #include "nsDataHashtable.h"
17 #include "nsIStyleSheet.h"
18 #include "nsIStyleRuleProcessor.h"
20 struct MiscContainer;
22 class nsHTMLCSSStyleSheet MOZ_FINAL : public nsIStyleSheet,
23 public nsIStyleRuleProcessor {
24 public:
25 nsHTMLCSSStyleSheet();
26 ~nsHTMLCSSStyleSheet();
28 NS_DECL_ISUPPORTS
30 nsresult Init(nsIURI* aURL, nsIDocument* aDocument);
31 void Reset(nsIURI* aURL);
33 // nsIStyleSheet
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;
46 #ifdef DEBUG
47 virtual void List(FILE* out = stdout, int32_t aIndent = 0) const MOZ_OVERRIDE;
48 #endif
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;
54 #ifdef MOZ_XUL
55 virtual void RulesMatching(XULTreeRuleProcessorData* aData) MOZ_OVERRIDE;
56 #endif
57 virtual nsRestyleHint HasStateDependentStyle(StateRuleProcessorData* aData) MOZ_OVERRIDE;
58 virtual bool HasDocumentStateDependentStyle(StateRuleProcessorData* aData) MOZ_OVERRIDE;
59 virtual nsRestyleHint
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);
71 private:
72 nsHTMLCSSStyleSheet(const nsHTMLCSSStyleSheet& aCopy) MOZ_DELETE;
73 nsHTMLCSSStyleSheet& operator=(const nsHTMLCSSStyleSheet& aCopy) MOZ_DELETE;
75 protected:
76 nsCOMPtr<nsIURI> mURL;
77 nsIDocument* mDocument;
78 nsDataHashtable<nsStringHashKey, MiscContainer*> mCachedStyleAttrs;
81 inline nsISupports*
82 ToSupports(nsHTMLCSSStyleSheet* aPointer)
84 return static_cast<nsIStyleSheet*>(aPointer);
87 #endif /* !defined(nsHTMLCSSStyleSheet_h_) */