2016-03-02 01:38:13 +03:00
|
|
|
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
|
|
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
|
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
|
|
|
|
#ifndef mozilla_StyleSheetInlines_h
|
|
|
|
#define mozilla_StyleSheetInlines_h
|
|
|
|
|
2016-09-26 15:03:25 +03:00
|
|
|
#include "mozilla/StyleSheetInfo.h"
|
2016-03-02 01:38:13 +03:00
|
|
|
#include "mozilla/ServoStyleSheet.h"
|
|
|
|
#include "mozilla/CSSStyleSheet.h"
|
2017-03-28 12:05:12 +03:00
|
|
|
#include "nsINode.h"
|
2016-03-02 01:38:13 +03:00
|
|
|
|
|
|
|
namespace mozilla {
|
|
|
|
|
2016-10-13 15:45:03 +03:00
|
|
|
MOZ_DEFINE_STYLO_METHODS(StyleSheet, CSSStyleSheet, ServoStyleSheet)
|
2016-09-26 15:03:25 +03:00
|
|
|
|
2016-09-26 15:03:25 +03:00
|
|
|
StyleSheetInfo&
|
|
|
|
StyleSheet::SheetInfo()
|
|
|
|
{
|
2017-02-04 02:57:51 +03:00
|
|
|
return *mInner;
|
2016-09-26 15:03:25 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
const StyleSheetInfo&
|
|
|
|
StyleSheet::SheetInfo() const
|
|
|
|
{
|
2017-02-04 02:57:51 +03:00
|
|
|
return *mInner;
|
2016-09-26 15:03:25 +03:00
|
|
|
}
|
|
|
|
|
2016-09-26 15:03:25 +03:00
|
|
|
bool
|
|
|
|
StyleSheet::IsInline() const
|
|
|
|
{
|
|
|
|
return !SheetInfo().mOriginalSheetURI;
|
|
|
|
}
|
|
|
|
|
|
|
|
nsIURI*
|
|
|
|
StyleSheet::GetSheetURI() const
|
|
|
|
{
|
|
|
|
return SheetInfo().mSheetURI;
|
|
|
|
}
|
|
|
|
|
|
|
|
nsIURI*
|
|
|
|
StyleSheet::GetOriginalURI() const
|
|
|
|
{
|
|
|
|
return SheetInfo().mOriginalSheetURI;
|
|
|
|
}
|
|
|
|
|
|
|
|
nsIURI*
|
|
|
|
StyleSheet::GetBaseURI() const
|
|
|
|
{
|
|
|
|
return SheetInfo().mBaseURI;
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
StyleSheet::SetURIs(nsIURI* aSheetURI, nsIURI* aOriginalSheetURI,
|
|
|
|
nsIURI* aBaseURI)
|
|
|
|
{
|
|
|
|
NS_PRECONDITION(aSheetURI && aBaseURI, "null ptr");
|
|
|
|
StyleSheetInfo& info = SheetInfo();
|
|
|
|
MOZ_ASSERT(!HasRules() && !info.mComplete,
|
|
|
|
"Can't call SetURIs on sheets that are complete or have rules");
|
|
|
|
info.mSheetURI = aSheetURI;
|
|
|
|
info.mOriginalSheetURI = aOriginalSheetURI;
|
|
|
|
info.mBaseURI = aBaseURI;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool
|
|
|
|
StyleSheet::IsApplicable() const
|
|
|
|
{
|
|
|
|
return !mDisabled && SheetInfo().mComplete;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool
|
|
|
|
StyleSheet::HasRules() const
|
|
|
|
{
|
2016-10-13 15:45:03 +03:00
|
|
|
MOZ_STYLO_FORWARD(HasRules, ())
|
2016-09-26 15:03:25 +03:00
|
|
|
}
|
|
|
|
|
2016-10-14 14:25:38 +03:00
|
|
|
StyleSheet*
|
|
|
|
StyleSheet::GetParentStyleSheet() const
|
|
|
|
{
|
|
|
|
return GetParentSheet();
|
|
|
|
}
|
|
|
|
|
|
|
|
dom::ParentObject
|
|
|
|
StyleSheet::GetParentObject() const
|
|
|
|
{
|
|
|
|
if (mOwningNode) {
|
|
|
|
return dom::ParentObject(mOwningNode);
|
|
|
|
}
|
2017-04-03 12:55:06 +03:00
|
|
|
return dom::ParentObject(static_cast<nsIDOMCSSStyleSheet*>(mParent), mParent);
|
2016-10-14 14:25:38 +03:00
|
|
|
}
|
|
|
|
|
2016-09-26 15:03:25 +03:00
|
|
|
nsIPrincipal*
|
|
|
|
StyleSheet::Principal() const
|
|
|
|
{
|
|
|
|
return SheetInfo().mPrincipal;
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
StyleSheet::SetPrincipal(nsIPrincipal* aPrincipal)
|
|
|
|
{
|
|
|
|
StyleSheetInfo& info = SheetInfo();
|
|
|
|
NS_PRECONDITION(!info.mPrincipalSet, "Should only set principal once");
|
|
|
|
if (aPrincipal) {
|
|
|
|
info.mPrincipal = aPrincipal;
|
|
|
|
#ifdef DEBUG
|
|
|
|
info.mPrincipalSet = true;
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
CORSMode
|
|
|
|
StyleSheet::GetCORSMode() const
|
|
|
|
{
|
|
|
|
return SheetInfo().mCORSMode;
|
|
|
|
}
|
|
|
|
|
|
|
|
net::ReferrerPolicy
|
|
|
|
StyleSheet::GetReferrerPolicy() const
|
|
|
|
{
|
|
|
|
return SheetInfo().mReferrerPolicy;
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
StyleSheet::GetIntegrity(dom::SRIMetadata& aResult) const
|
|
|
|
{
|
|
|
|
aResult = SheetInfo().mIntegrity;
|
|
|
|
}
|
|
|
|
|
2016-03-02 01:38:13 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
#endif // mozilla_StyleSheetInlines_h
|