1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
3 /* This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6
7 #ifndef mozilla_StyleSheetInlines_h
8 #define mozilla_StyleSheetInlines_h
9
10 #include "mozilla/StyleSheetInfo.h"
11 #include "mozilla/ServoStyleSheet.h"
12 #include "mozilla/CSSStyleSheet.h"
13
14 namespace mozilla {
15
MOZ_DEFINE_STYLO_METHODS(StyleSheet,CSSStyleSheet,ServoStyleSheet)16 MOZ_DEFINE_STYLO_METHODS(StyleSheet, CSSStyleSheet, ServoStyleSheet)
17
18 StyleSheetInfo&
19 StyleSheet::SheetInfo()
20 {
21 if (IsServo()) {
22 return AsServo()->mSheetInfo;
23 }
24 return *AsGecko()->mInner;
25 }
26
27 const StyleSheetInfo&
SheetInfo()28 StyleSheet::SheetInfo() const
29 {
30 if (IsServo()) {
31 return AsServo()->mSheetInfo;
32 }
33 return *AsGecko()->mInner;
34 }
35
36 bool
IsInline()37 StyleSheet::IsInline() const
38 {
39 return !SheetInfo().mOriginalSheetURI;
40 }
41
42 nsIURI*
GetSheetURI()43 StyleSheet::GetSheetURI() const
44 {
45 return SheetInfo().mSheetURI;
46 }
47
48 nsIURI*
GetOriginalURI()49 StyleSheet::GetOriginalURI() const
50 {
51 return SheetInfo().mOriginalSheetURI;
52 }
53
54 nsIURI*
GetBaseURI()55 StyleSheet::GetBaseURI() const
56 {
57 return SheetInfo().mBaseURI;
58 }
59
60 void
SetURIs(nsIURI * aSheetURI,nsIURI * aOriginalSheetURI,nsIURI * aBaseURI)61 StyleSheet::SetURIs(nsIURI* aSheetURI, nsIURI* aOriginalSheetURI,
62 nsIURI* aBaseURI)
63 {
64 NS_PRECONDITION(aSheetURI && aBaseURI, "null ptr");
65 StyleSheetInfo& info = SheetInfo();
66 MOZ_ASSERT(!HasRules() && !info.mComplete,
67 "Can't call SetURIs on sheets that are complete or have rules");
68 info.mSheetURI = aSheetURI;
69 info.mOriginalSheetURI = aOriginalSheetURI;
70 info.mBaseURI = aBaseURI;
71 }
72
73 bool
IsApplicable()74 StyleSheet::IsApplicable() const
75 {
76 return !mDisabled && SheetInfo().mComplete;
77 }
78
79 bool
HasRules()80 StyleSheet::HasRules() const
81 {
82 MOZ_STYLO_FORWARD(HasRules, ())
83 }
84
85 void
SetOwningDocument(nsIDocument * aDocument)86 StyleSheet::SetOwningDocument(nsIDocument* aDocument)
87 {
88 MOZ_STYLO_FORWARD(SetOwningDocument, (aDocument))
89 }
90
91 StyleSheet*
GetParentSheet()92 StyleSheet::GetParentSheet() const
93 {
94 MOZ_STYLO_FORWARD(GetParentSheet, ())
95 }
96
97 StyleSheet*
GetParentStyleSheet()98 StyleSheet::GetParentStyleSheet() const
99 {
100 return GetParentSheet();
101 }
102
103 dom::ParentObject
GetParentObject()104 StyleSheet::GetParentObject() const
105 {
106 if (mOwningNode) {
107 return dom::ParentObject(mOwningNode);
108 }
109 return dom::ParentObject(GetParentSheet());
110 }
111
112 void
AppendStyleSheet(StyleSheet * aSheet)113 StyleSheet::AppendStyleSheet(StyleSheet* aSheet)
114 {
115 MOZ_STYLO_FORWARD_CONCRETE(AppendStyleSheet,
116 (aSheet->AsGecko()), (aSheet->AsServo()))
117 }
118
119 nsIPrincipal*
Principal()120 StyleSheet::Principal() const
121 {
122 return SheetInfo().mPrincipal;
123 }
124
125 void
SetPrincipal(nsIPrincipal * aPrincipal)126 StyleSheet::SetPrincipal(nsIPrincipal* aPrincipal)
127 {
128 StyleSheetInfo& info = SheetInfo();
129 NS_PRECONDITION(!info.mPrincipalSet, "Should only set principal once");
130 if (aPrincipal) {
131 info.mPrincipal = aPrincipal;
132 #ifdef DEBUG
133 info.mPrincipalSet = true;
134 #endif
135 }
136 }
137
138 CORSMode
GetCORSMode()139 StyleSheet::GetCORSMode() const
140 {
141 return SheetInfo().mCORSMode;
142 }
143
144 net::ReferrerPolicy
GetReferrerPolicy()145 StyleSheet::GetReferrerPolicy() const
146 {
147 return SheetInfo().mReferrerPolicy;
148 }
149
150 void
GetIntegrity(dom::SRIMetadata & aResult)151 StyleSheet::GetIntegrity(dom::SRIMetadata& aResult) const
152 {
153 aResult = SheetInfo().mIntegrity;
154 }
155
156 size_t
SizeOfIncludingThis(MallocSizeOf aMallocSizeOf)157 StyleSheet::SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const
158 {
159 MOZ_STYLO_FORWARD(SizeOfIncludingThis, (aMallocSizeOf))
160 }
161
162 #ifdef DEBUG
163 void
List(FILE * aOut,int32_t aIndex)164 StyleSheet::List(FILE* aOut, int32_t aIndex) const
165 {
166 MOZ_STYLO_FORWARD(List, (aOut, aIndex))
167 }
168 #endif
169
WillDirty()170 void StyleSheet::WillDirty() { MOZ_STYLO_FORWARD(WillDirty, ()) }
DidDirty()171 void StyleSheet::DidDirty() { MOZ_STYLO_FORWARD(DidDirty, ()) }
172
173
174 }
175
176 #endif // mozilla_StyleSheetInlines_h
177