Bug 1457920: Remove ServoStyleSheet usage. r=xidorn
MozReview-Commit-ID: LIBkovuQ6MB
This commit is contained in:
@@ -39,7 +39,6 @@ nsChromeRegistry* nsChromeRegistry::gChromeRegistry;
|
|||||||
|
|
||||||
// DO NOT use namespace mozilla; it'll break due to a naming conflict between
|
// DO NOT use namespace mozilla; it'll break due to a naming conflict between
|
||||||
// mozilla::TextRange and a TextRange in OSX headers.
|
// mozilla::TextRange and a TextRange in OSX headers.
|
||||||
using mozilla::ServoStyleSheet;
|
|
||||||
using mozilla::StyleSheet;
|
using mozilla::StyleSheet;
|
||||||
using mozilla::dom::IsChromeURI;
|
using mozilla::dom::IsChromeURI;
|
||||||
using mozilla::dom::Location;
|
using mozilla::dom::Location;
|
||||||
@@ -404,12 +403,12 @@ nsresult nsChromeRegistry::RefreshWindow(nsPIDOMWindowOuter* aWindow)
|
|||||||
nsCOMPtr<nsIPresShell> shell = document->GetShell();
|
nsCOMPtr<nsIPresShell> shell = document->GetShell();
|
||||||
if (shell) {
|
if (shell) {
|
||||||
// Reload only the chrome URL agent style sheets.
|
// Reload only the chrome URL agent style sheets.
|
||||||
nsTArray<RefPtr<ServoStyleSheet>> agentSheets;
|
nsTArray<RefPtr<StyleSheet>> agentSheets;
|
||||||
rv = shell->GetAgentStyleSheets(agentSheets);
|
rv = shell->GetAgentStyleSheets(agentSheets);
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
nsTArray<RefPtr<ServoStyleSheet>> newAgentSheets;
|
nsTArray<RefPtr<StyleSheet>> newAgentSheets;
|
||||||
for (ServoStyleSheet* sheet : agentSheets) {
|
for (StyleSheet* sheet : agentSheets) {
|
||||||
nsIURI* uri = sheet->GetSheetURI();
|
nsIURI* uri = sheet->GetSheetURI();
|
||||||
|
|
||||||
if (IsChromeURI(uri)) {
|
if (IsChromeURI(uri)) {
|
||||||
|
|||||||
@@ -1091,9 +1091,10 @@ nsTreeSanitizer::SanitizeStyleSheet(const nsAString& aOriginal,
|
|||||||
bool didSanitize = false;
|
bool didSanitize = false;
|
||||||
// Create a sheet to hold the parsed CSS
|
// Create a sheet to hold the parsed CSS
|
||||||
RefPtr<StyleSheet> sheet =
|
RefPtr<StyleSheet> sheet =
|
||||||
new ServoStyleSheet(mozilla::css::eAuthorSheetFeatures,
|
new StyleSheet(mozilla::css::eAuthorSheetFeatures,
|
||||||
CORS_NONE, aDocument->GetReferrerPolicy(),
|
CORS_NONE,
|
||||||
SRIMetadata());
|
aDocument->GetReferrerPolicy(),
|
||||||
|
SRIMetadata());
|
||||||
sheet->SetURIs(aDocument->GetDocumentURI(), nullptr, aBaseURI);
|
sheet->SetURIs(aDocument->GetDocumentURI(), nullptr, aBaseURI);
|
||||||
sheet->SetPrincipal(aDocument->NodePrincipal());
|
sheet->SetPrincipal(aDocument->NodePrincipal());
|
||||||
sheet->ParseSheetSync(
|
sheet->ParseSheetSync(
|
||||||
|
|||||||
@@ -2256,7 +2256,7 @@ nsHTMLDocument::TearingDownEditor()
|
|||||||
if (!presShell)
|
if (!presShell)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
nsTArray<RefPtr<ServoStyleSheet>> agentSheets;
|
nsTArray<RefPtr<StyleSheet>> agentSheets;
|
||||||
presShell->GetAgentStyleSheets(agentSheets);
|
presShell->GetAgentStyleSheets(agentSheets);
|
||||||
|
|
||||||
auto cache = nsLayoutStylesheetCache::Singleton();
|
auto cache = nsLayoutStylesheetCache::Singleton();
|
||||||
@@ -2401,7 +2401,7 @@ nsHTMLDocument::EditingStateChanged()
|
|||||||
// Before making this window editable, we need to modify UA style sheet
|
// Before making this window editable, we need to modify UA style sheet
|
||||||
// because new style may change whether focused element will be focusable
|
// because new style may change whether focused element will be focusable
|
||||||
// or not.
|
// or not.
|
||||||
nsTArray<RefPtr<ServoStyleSheet>> agentSheets;
|
nsTArray<RefPtr<StyleSheet>> agentSheets;
|
||||||
rv = presShell->GetAgentStyleSheets(agentSheets);
|
rv = presShell->GetAgentStyleSheets(agentSheets);
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
|
|||||||
@@ -8576,7 +8576,7 @@ PresShell::IsVisible()
|
|||||||
}
|
}
|
||||||
|
|
||||||
nsresult
|
nsresult
|
||||||
PresShell::GetAgentStyleSheets(nsTArray<RefPtr<ServoStyleSheet>>& aSheets)
|
PresShell::GetAgentStyleSheets(nsTArray<RefPtr<StyleSheet>>& aSheets)
|
||||||
{
|
{
|
||||||
aSheets.Clear();
|
aSheets.Clear();
|
||||||
int32_t sheetCount = mStyleSet->SheetCount(SheetType::Agent);
|
int32_t sheetCount = mStyleSet->SheetCount(SheetType::Agent);
|
||||||
@@ -8586,7 +8586,7 @@ PresShell::GetAgentStyleSheets(nsTArray<RefPtr<ServoStyleSheet>>& aSheets)
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (int32_t i = 0; i < sheetCount; ++i) {
|
for (int32_t i = 0; i < sheetCount; ++i) {
|
||||||
ServoStyleSheet* sheet = mStyleSet->StyleSheetAt(SheetType::Agent, i);
|
StyleSheet* sheet = mStyleSet->StyleSheetAt(SheetType::Agent, i);
|
||||||
aSheets.AppendElement(sheet);
|
aSheets.AppendElement(sheet);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -8594,7 +8594,7 @@ PresShell::GetAgentStyleSheets(nsTArray<RefPtr<ServoStyleSheet>>& aSheets)
|
|||||||
}
|
}
|
||||||
|
|
||||||
nsresult
|
nsresult
|
||||||
PresShell::SetAgentStyleSheets(const nsTArray<RefPtr<ServoStyleSheet>>& aSheets)
|
PresShell::SetAgentStyleSheets(const nsTArray<RefPtr<StyleSheet>>& aSheets)
|
||||||
{
|
{
|
||||||
return mStyleSet->ReplaceSheets(SheetType::Agent, aSheets);
|
return mStyleSet->ReplaceSheets(SheetType::Agent, aSheets);
|
||||||
}
|
}
|
||||||
@@ -9680,7 +9680,7 @@ CopySheetsIntoClone(ServoStyleSet* aSet, ServoStyleSet* aClone)
|
|||||||
{
|
{
|
||||||
int32_t i, n = aSet->SheetCount(SheetType::Override);
|
int32_t i, n = aSet->SheetCount(SheetType::Override);
|
||||||
for (i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
ServoStyleSheet* ss = aSet->StyleSheetAt(SheetType::Override, i);
|
StyleSheet* ss = aSet->StyleSheetAt(SheetType::Override, i);
|
||||||
if (ss)
|
if (ss)
|
||||||
aClone->AppendStyleSheet(SheetType::Override, ss);
|
aClone->AppendStyleSheet(SheetType::Override, ss);
|
||||||
}
|
}
|
||||||
@@ -9697,14 +9697,14 @@ CopySheetsIntoClone(ServoStyleSet* aSet, ServoStyleSet* aClone)
|
|||||||
|
|
||||||
n = aSet->SheetCount(SheetType::User);
|
n = aSet->SheetCount(SheetType::User);
|
||||||
for (i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
ServoStyleSheet* ss = aSet->StyleSheetAt(SheetType::User, i);
|
StyleSheet* ss = aSet->StyleSheetAt(SheetType::User, i);
|
||||||
if (ss)
|
if (ss)
|
||||||
aClone->AppendStyleSheet(SheetType::User, ss);
|
aClone->AppendStyleSheet(SheetType::User, ss);
|
||||||
}
|
}
|
||||||
|
|
||||||
n = aSet->SheetCount(SheetType::Agent);
|
n = aSet->SheetCount(SheetType::Agent);
|
||||||
for (i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
ServoStyleSheet* ss = aSet->StyleSheetAt(SheetType::Agent, i);
|
StyleSheet* ss = aSet->StyleSheetAt(SheetType::Agent, i);
|
||||||
if (ss)
|
if (ss)
|
||||||
aClone->AppendStyleSheet(SheetType::Agent, ss);
|
aClone->AppendStyleSheet(SheetType::Agent, ss);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ ServoStyleRuleMap::EnsureTable(ServoStyleSet& aStyleSet)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
aStyleSet.EnumerateStyleSheetArrays(
|
aStyleSet.EnumerateStyleSheetArrays(
|
||||||
[this](const nsTArray<RefPtr<ServoStyleSheet>>& aArray) {
|
[this](const nsTArray<RefPtr<StyleSheet>>& aArray) {
|
||||||
for (auto& sheet : aArray) {
|
for (auto& sheet : aArray) {
|
||||||
FillTableFromStyleSheet(*sheet);
|
FillTableFromStyleSheet(*sheet);
|
||||||
}
|
}
|
||||||
@@ -55,7 +55,7 @@ ServoStyleRuleMap::EnsureTable(ShadowRoot& aShadowRoot)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ServoStyleRuleMap::SheetAdded(ServoStyleSheet& aStyleSheet)
|
ServoStyleRuleMap::SheetAdded(StyleSheet& aStyleSheet)
|
||||||
{
|
{
|
||||||
if (!IsEmpty()) {
|
if (!IsEmpty()) {
|
||||||
FillTableFromStyleSheet(aStyleSheet);
|
FillTableFromStyleSheet(aStyleSheet);
|
||||||
@@ -63,7 +63,7 @@ ServoStyleRuleMap::SheetAdded(ServoStyleSheet& aStyleSheet)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ServoStyleRuleMap::SheetRemoved(ServoStyleSheet& aStyleSheet)
|
ServoStyleRuleMap::SheetRemoved(StyleSheet& aStyleSheet)
|
||||||
{
|
{
|
||||||
// Invalidate all data inside. This isn't strictly necessary since
|
// Invalidate all data inside. This isn't strictly necessary since
|
||||||
// we should always get update from document before new queries come.
|
// we should always get update from document before new queries come.
|
||||||
@@ -75,7 +75,7 @@ ServoStyleRuleMap::SheetRemoved(ServoStyleSheet& aStyleSheet)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ServoStyleRuleMap::RuleAdded(ServoStyleSheet& aStyleSheet, css::Rule& aStyleRule)
|
ServoStyleRuleMap::RuleAdded(StyleSheet& aStyleSheet, css::Rule& aStyleRule)
|
||||||
{
|
{
|
||||||
if (!IsEmpty()) {
|
if (!IsEmpty()) {
|
||||||
FillTableFromRule(aStyleRule);
|
FillTableFromRule(aStyleRule);
|
||||||
@@ -83,7 +83,7 @@ ServoStyleRuleMap::RuleAdded(ServoStyleSheet& aStyleSheet, css::Rule& aStyleRule
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ServoStyleRuleMap::RuleRemoved(ServoStyleSheet& aStyleSheet,
|
ServoStyleRuleMap::RuleRemoved(StyleSheet& aStyleSheet,
|
||||||
css::Rule& aStyleRule)
|
css::Rule& aStyleRule)
|
||||||
{
|
{
|
||||||
if (IsEmpty()) {
|
if (IsEmpty()) {
|
||||||
@@ -160,7 +160,7 @@ ServoStyleRuleMap::FillTableFromRuleList(ServoCSSRuleList& aRuleList)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ServoStyleRuleMap::FillTableFromStyleSheet(ServoStyleSheet& aSheet)
|
ServoStyleRuleMap::FillTableFromStyleSheet(StyleSheet& aSheet)
|
||||||
{
|
{
|
||||||
if (aSheet.IsComplete()) {
|
if (aSheet.IsComplete()) {
|
||||||
FillTableFromRuleList(*aSheet.GetCssRulesInternal());
|
FillTableFromRuleList(*aSheet.GetCssRulesInternal());
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
#define mozilla_ServoStyleRuleMap_h
|
#define mozilla_ServoStyleRuleMap_h
|
||||||
|
|
||||||
#include "mozilla/ServoStyleRule.h"
|
#include "mozilla/ServoStyleRule.h"
|
||||||
#include "mozilla/ServoStyleSheet.h"
|
#include "mozilla/StyleSheet.h"
|
||||||
|
|
||||||
#include "nsDataHashtable.h"
|
#include "nsDataHashtable.h"
|
||||||
|
|
||||||
@@ -38,11 +38,11 @@ public:
|
|||||||
return mTable.Get(aRawRule);
|
return mTable.Get(aRawRule);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SheetAdded(ServoStyleSheet&);
|
void SheetAdded(StyleSheet&);
|
||||||
void SheetRemoved(ServoStyleSheet&);
|
void SheetRemoved(StyleSheet&);
|
||||||
|
|
||||||
void RuleAdded(ServoStyleSheet& aStyleSheet, css::Rule&);
|
void RuleAdded(StyleSheet& aStyleSheet, css::Rule&);
|
||||||
void RuleRemoved(ServoStyleSheet& aStyleSheet, css::Rule&);
|
void RuleRemoved(StyleSheet& aStyleSheet, css::Rule&);
|
||||||
|
|
||||||
size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const;
|
size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const;
|
||||||
|
|
||||||
@@ -54,9 +54,9 @@ private:
|
|||||||
// all stylesheets to fill the table.
|
// all stylesheets to fill the table.
|
||||||
bool IsEmpty() const { return mTable.Count() == 0; }
|
bool IsEmpty() const { return mTable.Count() == 0; }
|
||||||
|
|
||||||
void FillTableFromRule(css::Rule& aRule);
|
void FillTableFromRule(css::Rule&);
|
||||||
void FillTableFromRuleList(ServoCSSRuleList& aRuleList);
|
void FillTableFromRuleList(ServoCSSRuleList&);
|
||||||
void FillTableFromStyleSheet(ServoStyleSheet& aSheet);
|
void FillTableFromStyleSheet(StyleSheet&);
|
||||||
|
|
||||||
typedef nsDataHashtable<nsPtrHashKey<const RawServoStyleRule>,
|
typedef nsDataHashtable<nsPtrHashKey<const RawServoStyleRule>,
|
||||||
WeakPtr<ServoStyleRule>> Hashtable;
|
WeakPtr<ServoStyleRule>> Hashtable;
|
||||||
|
|||||||
@@ -1110,7 +1110,7 @@ Loader::CreateSheet(nsIURI* aURI,
|
|||||||
&sriMetadata);
|
&sriMetadata);
|
||||||
}
|
}
|
||||||
|
|
||||||
*aSheet = new ServoStyleSheet(aParsingMode, aCORSMode, aReferrerPolicy, sriMetadata);
|
*aSheet = new StyleSheet(aParsingMode, aCORSMode, aReferrerPolicy, sriMetadata);
|
||||||
(*aSheet)->SetURIs(sheetURI, originalURI, baseURI);
|
(*aSheet)->SetURIs(sheetURI, originalURI, baseURI);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1656,7 +1656,7 @@ Loader::ParseSheet(const nsAString& aUTF16,
|
|||||||
}
|
}
|
||||||
|
|
||||||
nsresult
|
nsresult
|
||||||
Loader::DoParseSheetServo(ServoStyleSheet* aSheet,
|
Loader::DoParseSheetServo(StyleSheet* aSheet,
|
||||||
const nsACString& aBytes,
|
const nsACString& aBytes,
|
||||||
SheetLoadData* aLoadData,
|
SheetLoadData* aLoadData,
|
||||||
bool aAllowAsync,
|
bool aAllowAsync,
|
||||||
|
|||||||
@@ -577,7 +577,7 @@ private:
|
|||||||
bool aAllowAsync,
|
bool aAllowAsync,
|
||||||
bool& aCompleted);
|
bool& aCompleted);
|
||||||
|
|
||||||
nsresult DoParseSheetServo(ServoStyleSheet* aSheet,
|
nsresult DoParseSheetServo(StyleSheet* aSheet,
|
||||||
const nsACString& aBytes,
|
const nsACString& aBytes,
|
||||||
SheetLoadData* aLoadData,
|
SheetLoadData* aLoadData,
|
||||||
bool aAllowAsync,
|
bool aAllowAsync,
|
||||||
|
|||||||
@@ -458,9 +458,9 @@ Gecko_GetUnvisitedLinkAttrDeclarationBlock(RawGeckoElementBorrowed aElement)
|
|||||||
return AsRefRawStrong(sheet->GetServoUnvisitedLinkDecl());
|
return AsRefRawStrong(sheet->GetServoUnvisitedLinkDecl());
|
||||||
}
|
}
|
||||||
|
|
||||||
ServoStyleSheet* Gecko_StyleSheet_Clone(
|
StyleSheet* Gecko_StyleSheet_Clone(
|
||||||
const ServoStyleSheet* aSheet,
|
const StyleSheet* aSheet,
|
||||||
const ServoStyleSheet* aNewParentSheet)
|
const StyleSheet* aNewParentSheet)
|
||||||
{
|
{
|
||||||
MOZ_ASSERT(aSheet);
|
MOZ_ASSERT(aSheet);
|
||||||
MOZ_ASSERT(aSheet->GetParentSheet(), "Should only be used for @import");
|
MOZ_ASSERT(aSheet->GetParentSheet(), "Should only be used for @import");
|
||||||
@@ -475,21 +475,21 @@ ServoStyleSheet* Gecko_StyleSheet_Clone(
|
|||||||
//
|
//
|
||||||
// So we _don't_ update neither the parent pointer of the stylesheet, nor the
|
// So we _don't_ update neither the parent pointer of the stylesheet, nor the
|
||||||
// child list (yet). This is fixed up in that same constructor.
|
// child list (yet). This is fixed up in that same constructor.
|
||||||
return static_cast<ServoStyleSheet*>(newSheet.forget().take());
|
return static_cast<StyleSheet*>(newSheet.forget().take());
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Gecko_StyleSheet_AddRef(const ServoStyleSheet* aSheet)
|
Gecko_StyleSheet_AddRef(const StyleSheet* aSheet)
|
||||||
{
|
{
|
||||||
MOZ_ASSERT(NS_IsMainThread());
|
MOZ_ASSERT(NS_IsMainThread());
|
||||||
const_cast<ServoStyleSheet*>(aSheet)->AddRef();
|
const_cast<StyleSheet*>(aSheet)->AddRef();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Gecko_StyleSheet_Release(const ServoStyleSheet* aSheet)
|
Gecko_StyleSheet_Release(const StyleSheet* aSheet)
|
||||||
{
|
{
|
||||||
MOZ_ASSERT(NS_IsMainThread());
|
MOZ_ASSERT(NS_IsMainThread());
|
||||||
const_cast<ServoStyleSheet*>(aSheet)->Release();
|
const_cast<StyleSheet*>(aSheet)->Release();
|
||||||
}
|
}
|
||||||
|
|
||||||
RawServoDeclarationBlockStrongBorrowedOrNull
|
RawServoDeclarationBlockStrongBorrowedOrNull
|
||||||
@@ -2594,9 +2594,9 @@ Gecko_StyleSheet_FinishAsyncParse(SheetLoadDataHolder* aData,
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
static already_AddRefed<ServoStyleSheet>
|
static already_AddRefed<StyleSheet>
|
||||||
LoadImportSheet(css::Loader* aLoader,
|
LoadImportSheet(css::Loader* aLoader,
|
||||||
ServoStyleSheet* aParent,
|
StyleSheet* aParent,
|
||||||
SheetLoadData* aParentLoadData,
|
SheetLoadData* aParentLoadData,
|
||||||
css::LoaderReusableStyleSheets* aReusableSheets,
|
css::LoaderReusableStyleSheets* aReusableSheets,
|
||||||
css::URLValue* aURL,
|
css::URLValue* aURL,
|
||||||
@@ -2625,7 +2625,7 @@ LoadImportSheet(css::Loader* aLoader,
|
|||||||
// sheet object per spec, even if its empty. DevTools uses the URI to
|
// sheet object per spec, even if its empty. DevTools uses the URI to
|
||||||
// realize it has hit an import cycle, so we mark it complete to make the
|
// realize it has hit an import cycle, so we mark it complete to make the
|
||||||
// sheet readable from JS.
|
// sheet readable from JS.
|
||||||
RefPtr<ServoStyleSheet> emptySheet =
|
RefPtr<StyleSheet> emptySheet =
|
||||||
aParent->CreateEmptyChildSheet(media.forget());
|
aParent->CreateEmptyChildSheet(media.forget());
|
||||||
// Make a dummy URI if we don't have one because some methods assume
|
// Make a dummy URI if we don't have one because some methods assume
|
||||||
// non-null URIs.
|
// non-null URIs.
|
||||||
@@ -2639,14 +2639,14 @@ LoadImportSheet(css::Loader* aLoader,
|
|||||||
return emptySheet.forget();
|
return emptySheet.forget();
|
||||||
}
|
}
|
||||||
|
|
||||||
RefPtr<ServoStyleSheet> sheet =
|
RefPtr<StyleSheet> sheet =
|
||||||
static_cast<ServoStyleSheet*>(aParent->GetFirstChild());
|
static_cast<StyleSheet*>(aParent->GetFirstChild());
|
||||||
return sheet.forget();
|
return sheet.forget();
|
||||||
}
|
}
|
||||||
|
|
||||||
ServoStyleSheet*
|
StyleSheet*
|
||||||
Gecko_LoadStyleSheet(css::Loader* aLoader,
|
Gecko_LoadStyleSheet(css::Loader* aLoader,
|
||||||
ServoStyleSheet* aParent,
|
StyleSheet* aParent,
|
||||||
SheetLoadData* aParentLoadData,
|
SheetLoadData* aParentLoadData,
|
||||||
css::LoaderReusableStyleSheets* aReusableSheets,
|
css::LoaderReusableStyleSheets* aReusableSheets,
|
||||||
ServoBundledURI aServoURL,
|
ServoBundledURI aServoURL,
|
||||||
@@ -2675,7 +2675,7 @@ Gecko_LoadStyleSheetAsync(css::SheetLoadDataHolder* aParentData,
|
|||||||
import = Move(importRule)]() mutable {
|
import = Move(importRule)]() mutable {
|
||||||
MOZ_ASSERT(NS_IsMainThread());
|
MOZ_ASSERT(NS_IsMainThread());
|
||||||
SheetLoadData* d = data->get();
|
SheetLoadData* d = data->get();
|
||||||
RefPtr<ServoStyleSheet> sheet =
|
RefPtr<StyleSheet> sheet =
|
||||||
LoadImportSheet(d->mLoader, d->mSheet, d, nullptr, url, media.forget());
|
LoadImportSheet(d->mLoader, d->mSheet, d, nullptr, url, media.forget());
|
||||||
Servo_ImportRule_SetSheet(import, sheet);
|
Servo_ImportRule_SetSheet(import, sheet);
|
||||||
}));
|
}));
|
||||||
@@ -2775,12 +2775,12 @@ Gecko_SetJemallocThreadLocalArena(bool enabled)
|
|||||||
|
|
||||||
|
|
||||||
ErrorReporter*
|
ErrorReporter*
|
||||||
Gecko_CreateCSSErrorReporter(ServoStyleSheet* sheet,
|
Gecko_CreateCSSErrorReporter(StyleSheet* aSheet,
|
||||||
Loader* loader,
|
Loader* aLoader,
|
||||||
nsIURI* uri)
|
nsIURI* aURI)
|
||||||
{
|
{
|
||||||
MOZ_ASSERT(NS_IsMainThread());
|
MOZ_ASSERT(NS_IsMainThread());
|
||||||
return new ErrorReporter(sheet, loader, uri);
|
return new ErrorReporter(aSheet, aLoader, aURI);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -219,7 +219,7 @@ whitelist-types = [
|
|||||||
"mozilla::SeenPtrs",
|
"mozilla::SeenPtrs",
|
||||||
"mozilla::ServoElementSnapshot.*",
|
"mozilla::ServoElementSnapshot.*",
|
||||||
"mozilla::ComputedStyle",
|
"mozilla::ComputedStyle",
|
||||||
"mozilla::ServoStyleSheet",
|
"mozilla::StyleSheet",
|
||||||
"mozilla::ServoStyleSheetInner",
|
"mozilla::ServoStyleSheetInner",
|
||||||
"mozilla::ServoStyleSetSizes",
|
"mozilla::ServoStyleSetSizes",
|
||||||
"mozilla::ServoTraversalStatistics",
|
"mozilla::ServoTraversalStatistics",
|
||||||
|
|||||||
@@ -20,15 +20,15 @@
|
|||||||
#include "mozilla/ServoNamespaceRule.h"
|
#include "mozilla/ServoNamespaceRule.h"
|
||||||
#include "mozilla/ServoPageRule.h"
|
#include "mozilla/ServoPageRule.h"
|
||||||
#include "mozilla/ServoStyleRule.h"
|
#include "mozilla/ServoStyleRule.h"
|
||||||
#include "mozilla/ServoStyleSheet.h"
|
|
||||||
#include "mozilla/ServoSupportsRule.h"
|
#include "mozilla/ServoSupportsRule.h"
|
||||||
|
#include "mozilla/StyleSheet.h"
|
||||||
|
|
||||||
using namespace mozilla::dom;
|
using namespace mozilla::dom;
|
||||||
|
|
||||||
namespace mozilla {
|
namespace mozilla {
|
||||||
|
|
||||||
ServoCSSRuleList::ServoCSSRuleList(already_AddRefed<ServoCssRules> aRawRules,
|
ServoCSSRuleList::ServoCSSRuleList(already_AddRefed<ServoCssRules> aRawRules,
|
||||||
ServoStyleSheet* aDirectOwnerStyleSheet)
|
StyleSheet* aDirectOwnerStyleSheet)
|
||||||
: mStyleSheet(aDirectOwnerStyleSheet)
|
: mStyleSheet(aDirectOwnerStyleSheet)
|
||||||
, mRawRules(aRawRules)
|
, mRawRules(aRawRules)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ public:
|
|||||||
// is a top level CSSRuleList. If it's owned by a group rule, nullptr.
|
// is a top level CSSRuleList. If it's owned by a group rule, nullptr.
|
||||||
// If this param is set, the caller doesn't need to call SetStyleSheet.
|
// If this param is set, the caller doesn't need to call SetStyleSheet.
|
||||||
ServoCSSRuleList(already_AddRefed<ServoCssRules> aRawRules,
|
ServoCSSRuleList(already_AddRefed<ServoCssRules> aRawRules,
|
||||||
ServoStyleSheet* aDirectOwnerStyleSheet);
|
StyleSheet* aDirectOwnerStyleSheet);
|
||||||
css::GroupRule* GetParentRule() const { return mParentRule; }
|
css::GroupRule* GetParentRule() const { return mParentRule; }
|
||||||
void SetParentRule(css::GroupRule* aParentRule);
|
void SetParentRule(css::GroupRule* aParentRule);
|
||||||
void SetStyleSheet(StyleSheet* aSheet);
|
void SetStyleSheet(StyleSheet* aSheet);
|
||||||
@@ -38,7 +38,7 @@ public:
|
|||||||
NS_DECL_ISUPPORTS_INHERITED
|
NS_DECL_ISUPPORTS_INHERITED
|
||||||
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(ServoCSSRuleList, dom::CSSRuleList)
|
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(ServoCSSRuleList, dom::CSSRuleList)
|
||||||
|
|
||||||
ServoStyleSheet* GetParentObject() final { return mStyleSheet; }
|
StyleSheet* GetParentObject() final { return mStyleSheet; }
|
||||||
|
|
||||||
css::Rule* IndexedGetter(uint32_t aIndex, bool& aFound) final;
|
css::Rule* IndexedGetter(uint32_t aIndex, bool& aFound) final;
|
||||||
uint32_t Length() final { return mRules.Length(); }
|
uint32_t Length() final { return mRules.Length(); }
|
||||||
@@ -72,7 +72,7 @@ private:
|
|||||||
void DropAllRules();
|
void DropAllRules();
|
||||||
|
|
||||||
// mStyleSheet may be nullptr when it drops the reference to us.
|
// mStyleSheet may be nullptr when it drops the reference to us.
|
||||||
ServoStyleSheet* mStyleSheet = nullptr;
|
StyleSheet* mStyleSheet = nullptr;
|
||||||
// mParentRule is nullptr if it isn't a nested rule list.
|
// mParentRule is nullptr if it isn't a nested rule list.
|
||||||
css::GroupRule* mParentRule = nullptr;
|
css::GroupRule* mParentRule = nullptr;
|
||||||
RefPtr<ServoCssRules> mRawRules;
|
RefPtr<ServoCssRules> mRawRules;
|
||||||
|
|||||||
@@ -9,18 +9,19 @@
|
|||||||
#include "mozilla/ServoImportRule.h"
|
#include "mozilla/ServoImportRule.h"
|
||||||
|
|
||||||
#include "mozilla/ServoBindings.h"
|
#include "mozilla/ServoBindings.h"
|
||||||
#include "mozilla/ServoStyleSheet.h"
|
#include "mozilla/StyleSheet.h"
|
||||||
|
|
||||||
namespace mozilla {
|
namespace mozilla {
|
||||||
|
|
||||||
ServoImportRule::ServoImportRule(RefPtr<RawServoImportRule> aRawRule,
|
ServoImportRule::ServoImportRule(RefPtr<RawServoImportRule> aRawRule,
|
||||||
uint32_t aLine, uint32_t aColumn)
|
uint32_t aLine,
|
||||||
|
uint32_t aColumn)
|
||||||
: CSSImportRule(aLine, aColumn)
|
: CSSImportRule(aLine, aColumn)
|
||||||
, mRawRule(Move(aRawRule))
|
, mRawRule(Move(aRawRule))
|
||||||
{
|
{
|
||||||
const auto* sheet = Servo_ImportRule_GetSheet(mRawRule.get());
|
const auto* sheet = Servo_ImportRule_GetSheet(mRawRule.get());
|
||||||
MOZ_ASSERT(sheet);
|
MOZ_ASSERT(sheet);
|
||||||
mChildSheet = const_cast<ServoStyleSheet*>(sheet);
|
mChildSheet = const_cast<StyleSheet*>(sheet);
|
||||||
mChildSheet->SetOwnerRule(this);
|
mChildSheet->SetOwnerRule(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void SetStyleSheet(ServoStyleSheet* aSheet)
|
void SetStyleSheet(StyleSheet* aSheet)
|
||||||
{
|
{
|
||||||
mStyleSheet = aSheet;
|
mStyleSheet = aSheet;
|
||||||
for (css::Rule* rule : mRules) {
|
for (css::Rule* rule : mRules) {
|
||||||
@@ -49,7 +49,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ServoStyleSheet* GetParentObject() final { return mStyleSheet; }
|
StyleSheet* GetParentObject() final { return mStyleSheet; }
|
||||||
|
|
||||||
ServoKeyframeRule* GetRule(uint32_t aIndex) {
|
ServoKeyframeRule* GetRule(uint32_t aIndex) {
|
||||||
if (!mRules[aIndex]) {
|
if (!mRules[aIndex]) {
|
||||||
@@ -124,7 +124,7 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// may be nullptr when the style sheet drops the reference to us.
|
// may be nullptr when the style sheet drops the reference to us.
|
||||||
ServoStyleSheet* mStyleSheet = nullptr;
|
StyleSheet* mStyleSheet = nullptr;
|
||||||
ServoKeyframesRule* mParentRule = nullptr;
|
ServoKeyframesRule* mParentRule = nullptr;
|
||||||
RefPtr<RawServoKeyframesRule> mRawRule;
|
RefPtr<RawServoKeyframesRule> mRawRule;
|
||||||
nsCOMArray<css::Rule> mRules;
|
nsCOMArray<css::Rule> mRules;
|
||||||
|
|||||||
@@ -713,8 +713,7 @@ ServoStyleSet::ResolveXULTreePseudoStyle(dom::Element* aParentElement,
|
|||||||
|
|
||||||
// manage the set of style sheets in the style set
|
// manage the set of style sheets in the style set
|
||||||
nsresult
|
nsresult
|
||||||
ServoStyleSet::AppendStyleSheet(SheetType aType,
|
ServoStyleSet::AppendStyleSheet(SheetType aType, StyleSheet* aSheet)
|
||||||
ServoStyleSheet* aSheet)
|
|
||||||
{
|
{
|
||||||
MOZ_ASSERT(aSheet);
|
MOZ_ASSERT(aSheet);
|
||||||
MOZ_ASSERT(aSheet->IsApplicable());
|
MOZ_ASSERT(aSheet->IsApplicable());
|
||||||
@@ -740,8 +739,7 @@ ServoStyleSet::AppendStyleSheet(SheetType aType,
|
|||||||
}
|
}
|
||||||
|
|
||||||
nsresult
|
nsresult
|
||||||
ServoStyleSet::PrependStyleSheet(SheetType aType,
|
ServoStyleSet::PrependStyleSheet(SheetType aType, StyleSheet* aSheet)
|
||||||
ServoStyleSheet* aSheet)
|
|
||||||
{
|
{
|
||||||
MOZ_ASSERT(aSheet);
|
MOZ_ASSERT(aSheet);
|
||||||
MOZ_ASSERT(aSheet->IsApplicable());
|
MOZ_ASSERT(aSheet->IsApplicable());
|
||||||
@@ -768,8 +766,7 @@ ServoStyleSet::PrependStyleSheet(SheetType aType,
|
|||||||
}
|
}
|
||||||
|
|
||||||
nsresult
|
nsresult
|
||||||
ServoStyleSet::RemoveStyleSheet(SheetType aType,
|
ServoStyleSet::RemoveStyleSheet(SheetType aType, StyleSheet* aSheet)
|
||||||
ServoStyleSheet* aSheet)
|
|
||||||
{
|
{
|
||||||
MOZ_ASSERT(aSheet);
|
MOZ_ASSERT(aSheet);
|
||||||
MOZ_ASSERT(IsCSSSheetType(aType));
|
MOZ_ASSERT(IsCSSSheetType(aType));
|
||||||
@@ -790,7 +787,7 @@ ServoStyleSet::RemoveStyleSheet(SheetType aType,
|
|||||||
|
|
||||||
nsresult
|
nsresult
|
||||||
ServoStyleSet::ReplaceSheets(SheetType aType,
|
ServoStyleSet::ReplaceSheets(SheetType aType,
|
||||||
const nsTArray<RefPtr<ServoStyleSheet>>& aNewSheets)
|
const nsTArray<RefPtr<StyleSheet>>& aNewSheets)
|
||||||
{
|
{
|
||||||
// Gecko uses a two-dimensional array keyed by sheet type, whereas Servo
|
// Gecko uses a two-dimensional array keyed by sheet type, whereas Servo
|
||||||
// stores a flattened list. This makes ReplaceSheets a pretty clunky thing
|
// stores a flattened list. This makes ReplaceSheets a pretty clunky thing
|
||||||
@@ -825,8 +822,8 @@ ServoStyleSet::ReplaceSheets(SheetType aType,
|
|||||||
|
|
||||||
nsresult
|
nsresult
|
||||||
ServoStyleSet::InsertStyleSheetBefore(SheetType aType,
|
ServoStyleSet::InsertStyleSheetBefore(SheetType aType,
|
||||||
ServoStyleSheet* aNewSheet,
|
StyleSheet* aNewSheet,
|
||||||
ServoStyleSheet* aReferenceSheet)
|
StyleSheet* aReferenceSheet)
|
||||||
{
|
{
|
||||||
MOZ_ASSERT(aNewSheet);
|
MOZ_ASSERT(aNewSheet);
|
||||||
MOZ_ASSERT(aReferenceSheet);
|
MOZ_ASSERT(aReferenceSheet);
|
||||||
@@ -861,7 +858,7 @@ ServoStyleSet::SheetCount(SheetType aType) const
|
|||||||
return mSheets[aType].Length();
|
return mSheets[aType].Length();
|
||||||
}
|
}
|
||||||
|
|
||||||
ServoStyleSheet*
|
StyleSheet*
|
||||||
ServoStyleSet::StyleSheetAt(SheetType aType, int32_t aIndex) const
|
ServoStyleSet::StyleSheetAt(SheetType aType, int32_t aIndex) const
|
||||||
{
|
{
|
||||||
MOZ_ASSERT(IsCSSSheetType(aType));
|
MOZ_ASSERT(IsCSSSheetType(aType));
|
||||||
@@ -882,14 +879,13 @@ ServoStyleSet::AppendAllNonDocumentAuthorSheets(nsTArray<StyleSheet*>& aArray) c
|
|||||||
}
|
}
|
||||||
|
|
||||||
nsresult
|
nsresult
|
||||||
ServoStyleSet::RemoveDocStyleSheet(ServoStyleSheet* aSheet)
|
ServoStyleSet::RemoveDocStyleSheet(StyleSheet* aSheet)
|
||||||
{
|
{
|
||||||
return RemoveStyleSheet(SheetType::Doc, aSheet);
|
return RemoveStyleSheet(SheetType::Doc, aSheet);
|
||||||
}
|
}
|
||||||
|
|
||||||
nsresult
|
nsresult
|
||||||
ServoStyleSet::AddDocStyleSheet(ServoStyleSheet* aSheet,
|
ServoStyleSet::AddDocStyleSheet(StyleSheet* aSheet, nsIDocument* aDocument)
|
||||||
nsIDocument* aDocument)
|
|
||||||
{
|
{
|
||||||
MOZ_ASSERT(aSheet->IsApplicable());
|
MOZ_ASSERT(aSheet->IsApplicable());
|
||||||
MOZ_ASSERT(aSheet->RawContents(), "Raw sheet should be in place by this point.");
|
MOZ_ASSERT(aSheet->RawContents(), "Raw sheet should be in place by this point.");
|
||||||
@@ -903,7 +899,7 @@ ServoStyleSet::AddDocStyleSheet(ServoStyleSheet* aSheet,
|
|||||||
|
|
||||||
if (index < mSheets[SheetType::Doc].Length()) {
|
if (index < mSheets[SheetType::Doc].Length()) {
|
||||||
// This case is insert before.
|
// This case is insert before.
|
||||||
ServoStyleSheet *beforeSheet = mSheets[SheetType::Doc][index];
|
StyleSheet *beforeSheet = mSheets[SheetType::Doc][index];
|
||||||
InsertSheetOfType(SheetType::Doc, aSheet, beforeSheet);
|
InsertSheetOfType(SheetType::Doc, aSheet, beforeSheet);
|
||||||
|
|
||||||
if (mRawSet) {
|
if (mRawSet) {
|
||||||
@@ -1141,7 +1137,7 @@ ServoStyleSet::SetStylistXBLStyleSheetsDirty()
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ServoStyleSet::RuleAdded(ServoStyleSheet& aSheet, css::Rule& aRule)
|
ServoStyleSet::RuleAdded(StyleSheet& aSheet, css::Rule& aRule)
|
||||||
{
|
{
|
||||||
if (mStyleRuleMap) {
|
if (mStyleRuleMap) {
|
||||||
mStyleRuleMap->RuleAdded(aSheet, aRule);
|
mStyleRuleMap->RuleAdded(aSheet, aRule);
|
||||||
@@ -1152,7 +1148,7 @@ ServoStyleSet::RuleAdded(ServoStyleSheet& aSheet, css::Rule& aRule)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ServoStyleSet::RuleRemoved(ServoStyleSheet& aSheet, css::Rule& aRule)
|
ServoStyleSet::RuleRemoved(StyleSheet& aSheet, css::Rule& aRule)
|
||||||
{
|
{
|
||||||
if (mStyleRuleMap) {
|
if (mStyleRuleMap) {
|
||||||
mStyleRuleMap->RuleRemoved(aSheet, aRule);
|
mStyleRuleMap->RuleRemoved(aSheet, aRule);
|
||||||
@@ -1163,7 +1159,7 @@ ServoStyleSet::RuleRemoved(ServoStyleSheet& aSheet, css::Rule& aRule)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ServoStyleSet::RuleChanged(ServoStyleSheet& aSheet, css::Rule* aRule)
|
ServoStyleSet::RuleChanged(StyleSheet& aSheet, css::Rule* aRule)
|
||||||
{
|
{
|
||||||
// FIXME(emilio): Could be more granular based on aRule.
|
// FIXME(emilio): Could be more granular based on aRule.
|
||||||
MarkOriginsDirty(aSheet.GetOrigin());
|
MarkOriginsDirty(aSheet.GetOrigin());
|
||||||
@@ -1541,16 +1537,14 @@ ServoStyleSet::ShouldTraverseInParallel() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ServoStyleSet::PrependSheetOfType(SheetType aType,
|
ServoStyleSet::PrependSheetOfType(SheetType aType, StyleSheet* aSheet)
|
||||||
ServoStyleSheet* aSheet)
|
|
||||||
{
|
{
|
||||||
aSheet->AddStyleSet(this);
|
aSheet->AddStyleSet(this);
|
||||||
mSheets[aType].InsertElementAt(0, aSheet);
|
mSheets[aType].InsertElementAt(0, aSheet);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ServoStyleSet::AppendSheetOfType(SheetType aType,
|
ServoStyleSet::AppendSheetOfType(SheetType aType, StyleSheet* aSheet)
|
||||||
ServoStyleSheet* aSheet)
|
|
||||||
{
|
{
|
||||||
aSheet->AddStyleSet(this);
|
aSheet->AddStyleSet(this);
|
||||||
mSheets[aType].AppendElement(aSheet);
|
mSheets[aType].AppendElement(aSheet);
|
||||||
@@ -1558,8 +1552,8 @@ ServoStyleSet::AppendSheetOfType(SheetType aType,
|
|||||||
|
|
||||||
void
|
void
|
||||||
ServoStyleSet::InsertSheetOfType(SheetType aType,
|
ServoStyleSet::InsertSheetOfType(SheetType aType,
|
||||||
ServoStyleSheet* aSheet,
|
StyleSheet* aSheet,
|
||||||
ServoStyleSheet* aBeforeSheet)
|
StyleSheet* aBeforeSheet)
|
||||||
{
|
{
|
||||||
for (uint32_t i = 0; i < mSheets[aType].Length(); ++i) {
|
for (uint32_t i = 0; i < mSheets[aType].Length(); ++i) {
|
||||||
if (mSheets[aType][i] == aBeforeSheet) {
|
if (mSheets[aType][i] == aBeforeSheet) {
|
||||||
@@ -1571,8 +1565,7 @@ ServoStyleSet::InsertSheetOfType(SheetType aType,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ServoStyleSet::RemoveSheetOfType(SheetType aType,
|
ServoStyleSet::RemoveSheetOfType(SheetType aType, StyleSheet* aSheet)
|
||||||
ServoStyleSheet* aSheet)
|
|
||||||
{
|
{
|
||||||
for (uint32_t i = 0; i < mSheets[aType].Length(); ++i) {
|
for (uint32_t i = 0; i < mSheets[aType].Length(); ++i) {
|
||||||
if (mSheets[aType][i] == aSheet) {
|
if (mSheets[aType][i] == aSheet) {
|
||||||
|
|||||||
@@ -8,7 +8,6 @@
|
|||||||
#define mozilla_StyleSheetInlines_h
|
#define mozilla_StyleSheetInlines_h
|
||||||
|
|
||||||
#include "mozilla/StyleSheetInfo.h"
|
#include "mozilla/StyleSheetInfo.h"
|
||||||
#include "mozilla/ServoStyleSheet.h"
|
|
||||||
#include "nsINode.h"
|
#include "nsINode.h"
|
||||||
|
|
||||||
namespace mozilla {
|
namespace mozilla {
|
||||||
|
|||||||
@@ -791,8 +791,10 @@ void
|
|||||||
nsLayoutStylesheetCache::BuildPreferenceSheet(RefPtr<StyleSheet>* aSheet,
|
nsLayoutStylesheetCache::BuildPreferenceSheet(RefPtr<StyleSheet>* aSheet,
|
||||||
nsPresContext* aPresContext)
|
nsPresContext* aPresContext)
|
||||||
{
|
{
|
||||||
*aSheet = new ServoStyleSheet(eAgentSheetFeatures, CORS_NONE,
|
*aSheet = new StyleSheet(eAgentSheetFeatures,
|
||||||
mozilla::net::RP_Unset, dom::SRIMetadata());
|
CORS_NONE,
|
||||||
|
mozilla::net::RP_Unset,
|
||||||
|
dom::SRIMetadata());
|
||||||
|
|
||||||
StyleSheet* sheet = *aSheet;
|
StyleSheet* sheet = *aSheet;
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ use atomic_refcell::{AtomicRef, AtomicRefCell, AtomicRefMut};
|
|||||||
use context::QuirksMode;
|
use context::QuirksMode;
|
||||||
use dom::TElement;
|
use dom::TElement;
|
||||||
use gecko_bindings::bindings::{self, RawServoStyleSet};
|
use gecko_bindings::bindings::{self, RawServoStyleSet};
|
||||||
use gecko_bindings::structs::{self, RawGeckoPresContextOwned, ServoStyleSetSizes, ServoStyleSheet};
|
use gecko_bindings::structs::{self, RawGeckoPresContextOwned, ServoStyleSetSizes, StyleSheet as DomStyleSheet};
|
||||||
use gecko_bindings::structs::{StyleSheetInfo, nsIDocument};
|
use gecko_bindings::structs::{StyleSheetInfo, nsIDocument};
|
||||||
use gecko_bindings::sugar::ownership::{HasArcFFI, HasBoxFFI, HasFFI, HasSimpleFFI};
|
use gecko_bindings::sugar::ownership::{HasArcFFI, HasBoxFFI, HasFFI, HasSimpleFFI};
|
||||||
use invalidation::media_queries::{MediaListKey, ToMediaListKey};
|
use invalidation::media_queries::{MediaListKey, ToMediaListKey};
|
||||||
@@ -23,7 +23,7 @@ use stylist::Stylist;
|
|||||||
|
|
||||||
/// Little wrapper to a Gecko style sheet.
|
/// Little wrapper to a Gecko style sheet.
|
||||||
#[derive(Debug, Eq, PartialEq)]
|
#[derive(Debug, Eq, PartialEq)]
|
||||||
pub struct GeckoStyleSheet(*const ServoStyleSheet);
|
pub struct GeckoStyleSheet(*const DomStyleSheet);
|
||||||
|
|
||||||
impl ToMediaListKey for ::gecko::data::GeckoStyleSheet {
|
impl ToMediaListKey for ::gecko::data::GeckoStyleSheet {
|
||||||
fn to_media_list_key(&self) -> MediaListKey {
|
fn to_media_list_key(&self) -> MediaListKey {
|
||||||
@@ -33,24 +33,24 @@ impl ToMediaListKey for ::gecko::data::GeckoStyleSheet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl GeckoStyleSheet {
|
impl GeckoStyleSheet {
|
||||||
/// Create a `GeckoStyleSheet` from a raw `ServoStyleSheet` pointer.
|
/// Create a `GeckoStyleSheet` from a raw `DomStyleSheet` pointer.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub unsafe fn new(s: *const ServoStyleSheet) -> Self {
|
pub unsafe fn new(s: *const DomStyleSheet) -> Self {
|
||||||
debug_assert!(!s.is_null());
|
debug_assert!(!s.is_null());
|
||||||
bindings::Gecko_StyleSheet_AddRef(s);
|
bindings::Gecko_StyleSheet_AddRef(s);
|
||||||
Self::from_addrefed(s)
|
Self::from_addrefed(s)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Create a `GeckoStyleSheet` from a raw `ServoStyleSheet` pointer that
|
/// Create a `GeckoStyleSheet` from a raw `DomStyleSheet` pointer that
|
||||||
/// already holds a strong reference.
|
/// already holds a strong reference.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub unsafe fn from_addrefed(s: *const ServoStyleSheet) -> Self {
|
pub unsafe fn from_addrefed(s: *const DomStyleSheet) -> Self {
|
||||||
debug_assert!(!s.is_null());
|
debug_assert!(!s.is_null());
|
||||||
GeckoStyleSheet(s)
|
GeckoStyleSheet(s)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Get the raw `ServoStyleSheet` that we're wrapping.
|
/// Get the raw `StyleSheet` that we're wrapping.
|
||||||
pub fn raw(&self) -> &ServoStyleSheet {
|
pub fn raw(&self) -> &DomStyleSheet {
|
||||||
unsafe { &*self.0 }
|
unsafe { &*self.0 }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -237,7 +237,7 @@ pub trait ToCssWithGuard {
|
|||||||
#[cfg(feature = "gecko")]
|
#[cfg(feature = "gecko")]
|
||||||
pub struct DeepCloneParams {
|
pub struct DeepCloneParams {
|
||||||
/// The new sheet we're cloning rules into.
|
/// The new sheet we're cloning rules into.
|
||||||
pub reference_sheet: *const ::gecko_bindings::structs::ServoStyleSheet,
|
pub reference_sheet: *const ::gecko_bindings::structs::StyleSheet,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Parameters needed for deep clones.
|
/// Parameters needed for deep clones.
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ use std::ptr;
|
|||||||
use style::error_reporting::{ParseErrorReporter, ContextualParseError};
|
use style::error_reporting::{ParseErrorReporter, ContextualParseError};
|
||||||
use style::gecko_bindings::bindings::{Gecko_CreateCSSErrorReporter, Gecko_DestroyCSSErrorReporter};
|
use style::gecko_bindings::bindings::{Gecko_CreateCSSErrorReporter, Gecko_DestroyCSSErrorReporter};
|
||||||
use style::gecko_bindings::bindings::Gecko_ReportUnexpectedCSSError;
|
use style::gecko_bindings::bindings::Gecko_ReportUnexpectedCSSError;
|
||||||
use style::gecko_bindings::structs::{Loader, ServoStyleSheet, nsIURI};
|
use style::gecko_bindings::structs::{Loader, StyleSheet as DomStyleSheet, nsIURI};
|
||||||
use style::gecko_bindings::structs::ErrorReporter as GeckoErrorReporter;
|
use style::gecko_bindings::structs::ErrorReporter as GeckoErrorReporter;
|
||||||
use style::gecko_bindings::structs::URLExtraData as RawUrlExtraData;
|
use style::gecko_bindings::structs::URLExtraData as RawUrlExtraData;
|
||||||
use style::stylesheets::UrlExtraData;
|
use style::stylesheets::UrlExtraData;
|
||||||
@@ -27,9 +27,11 @@ pub struct ErrorReporter(*mut GeckoErrorReporter);
|
|||||||
|
|
||||||
impl ErrorReporter {
|
impl ErrorReporter {
|
||||||
/// Create a new instance of the Gecko error reporter.
|
/// Create a new instance of the Gecko error reporter.
|
||||||
pub fn new(sheet: *mut ServoStyleSheet,
|
pub fn new(
|
||||||
loader: *mut Loader,
|
sheet: *mut DomStyleSheet,
|
||||||
extra_data: *mut RawUrlExtraData) -> ErrorReporter {
|
loader: *mut Loader,
|
||||||
|
extra_data: *mut RawUrlExtraData,
|
||||||
|
) -> Self {
|
||||||
unsafe {
|
unsafe {
|
||||||
let url = extra_data.as_ref()
|
let url = extra_data.as_ref()
|
||||||
.map(|d| d.mBaseURI.raw::<nsIURI>())
|
.map(|d| d.mBaseURI.raw::<nsIURI>())
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ use style::gecko_bindings::structs;
|
|||||||
use style::gecko_bindings::structs::{CallerType, CSSPseudoElementType, CompositeOperation};
|
use style::gecko_bindings::structs::{CallerType, CSSPseudoElementType, CompositeOperation};
|
||||||
use style::gecko_bindings::structs::{Loader, LoaderReusableStyleSheets};
|
use style::gecko_bindings::structs::{Loader, LoaderReusableStyleSheets};
|
||||||
use style::gecko_bindings::structs::{RawServoStyleRule, ComputedStyleStrong, RustString};
|
use style::gecko_bindings::structs::{RawServoStyleRule, ComputedStyleStrong, RustString};
|
||||||
use style::gecko_bindings::structs::{ServoStyleSheet, SheetLoadData, SheetLoadDataHolder};
|
use style::gecko_bindings::structs::{StyleSheet as DomStyleSheet, SheetLoadData, SheetLoadDataHolder};
|
||||||
use style::gecko_bindings::structs::{SheetParsingMode, nsAtom, nsCSSPropertyID};
|
use style::gecko_bindings::structs::{SheetParsingMode, nsAtom, nsCSSPropertyID};
|
||||||
use style::gecko_bindings::structs::{nsCSSFontDesc, nsCSSCounterDesc};
|
use style::gecko_bindings::structs::{nsCSSFontDesc, nsCSSCounterDesc};
|
||||||
use style::gecko_bindings::structs::{nsRestyleHint, nsChangeHint, PropertyValuePair};
|
use style::gecko_bindings::structs::{nsRestyleHint, nsChangeHint, PropertyValuePair};
|
||||||
@@ -1194,7 +1194,7 @@ fn mode_to_origin(mode: SheetParsingMode) -> Origin {
|
|||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub extern "C" fn Servo_StyleSheet_FromUTF8Bytes(
|
pub extern "C" fn Servo_StyleSheet_FromUTF8Bytes(
|
||||||
loader: *mut Loader,
|
loader: *mut Loader,
|
||||||
stylesheet: *mut ServoStyleSheet,
|
stylesheet: *mut DomStyleSheet,
|
||||||
load_data: *mut SheetLoadData,
|
load_data: *mut SheetLoadData,
|
||||||
bytes: *const nsACString,
|
bytes: *const nsACString,
|
||||||
mode: SheetParsingMode,
|
mode: SheetParsingMode,
|
||||||
@@ -1263,7 +1263,7 @@ pub extern "C" fn Servo_StyleSheet_FromUTF8BytesAsync(
|
|||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub extern "C" fn Servo_StyleSet_AppendStyleSheet(
|
pub extern "C" fn Servo_StyleSet_AppendStyleSheet(
|
||||||
raw_data: RawServoStyleSetBorrowed,
|
raw_data: RawServoStyleSetBorrowed,
|
||||||
sheet: *const ServoStyleSheet,
|
sheet: *const DomStyleSheet,
|
||||||
) {
|
) {
|
||||||
let global_style_data = &*GLOBAL_STYLE_DATA;
|
let global_style_data = &*GLOBAL_STYLE_DATA;
|
||||||
let mut data = PerDocumentStyleData::from_ffi(raw_data).borrow_mut();
|
let mut data = PerDocumentStyleData::from_ffi(raw_data).borrow_mut();
|
||||||
@@ -1288,7 +1288,7 @@ pub extern "C" fn Servo_AuthorStyles_Drop(
|
|||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub unsafe extern "C" fn Servo_AuthorStyles_AppendStyleSheet(
|
pub unsafe extern "C" fn Servo_AuthorStyles_AppendStyleSheet(
|
||||||
styles: RawServoAuthorStylesBorrowedMut,
|
styles: RawServoAuthorStylesBorrowedMut,
|
||||||
sheet: *const ServoStyleSheet,
|
sheet: *const DomStyleSheet,
|
||||||
) {
|
) {
|
||||||
let styles = AuthorStyles::<GeckoStyleSheet>::from_ffi_mut(styles);
|
let styles = AuthorStyles::<GeckoStyleSheet>::from_ffi_mut(styles);
|
||||||
|
|
||||||
@@ -1301,8 +1301,8 @@ pub unsafe extern "C" fn Servo_AuthorStyles_AppendStyleSheet(
|
|||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub unsafe extern "C" fn Servo_AuthorStyles_InsertStyleSheetBefore(
|
pub unsafe extern "C" fn Servo_AuthorStyles_InsertStyleSheetBefore(
|
||||||
styles: RawServoAuthorStylesBorrowedMut,
|
styles: RawServoAuthorStylesBorrowedMut,
|
||||||
sheet: *const ServoStyleSheet,
|
sheet: *const DomStyleSheet,
|
||||||
before_sheet: *const ServoStyleSheet,
|
before_sheet: *const DomStyleSheet,
|
||||||
) {
|
) {
|
||||||
let styles = AuthorStyles::<GeckoStyleSheet>::from_ffi_mut(styles);
|
let styles = AuthorStyles::<GeckoStyleSheet>::from_ffi_mut(styles);
|
||||||
|
|
||||||
@@ -1319,7 +1319,7 @@ pub unsafe extern "C" fn Servo_AuthorStyles_InsertStyleSheetBefore(
|
|||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub unsafe extern "C" fn Servo_AuthorStyles_RemoveStyleSheet(
|
pub unsafe extern "C" fn Servo_AuthorStyles_RemoveStyleSheet(
|
||||||
styles: RawServoAuthorStylesBorrowedMut,
|
styles: RawServoAuthorStylesBorrowedMut,
|
||||||
sheet: *const ServoStyleSheet,
|
sheet: *const DomStyleSheet,
|
||||||
) {
|
) {
|
||||||
let styles = AuthorStyles::<GeckoStyleSheet>::from_ffi_mut(styles);
|
let styles = AuthorStyles::<GeckoStyleSheet>::from_ffi_mut(styles);
|
||||||
|
|
||||||
@@ -1454,7 +1454,7 @@ pub unsafe extern "C" fn Servo_StyleSet_MediumFeaturesChanged(
|
|||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub extern "C" fn Servo_StyleSet_PrependStyleSheet(
|
pub extern "C" fn Servo_StyleSet_PrependStyleSheet(
|
||||||
raw_data: RawServoStyleSetBorrowed,
|
raw_data: RawServoStyleSetBorrowed,
|
||||||
sheet: *const ServoStyleSheet,
|
sheet: *const DomStyleSheet,
|
||||||
) {
|
) {
|
||||||
let global_style_data = &*GLOBAL_STYLE_DATA;
|
let global_style_data = &*GLOBAL_STYLE_DATA;
|
||||||
let mut data = PerDocumentStyleData::from_ffi(raw_data).borrow_mut();
|
let mut data = PerDocumentStyleData::from_ffi(raw_data).borrow_mut();
|
||||||
@@ -1467,8 +1467,8 @@ pub extern "C" fn Servo_StyleSet_PrependStyleSheet(
|
|||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub extern "C" fn Servo_StyleSet_InsertStyleSheetBefore(
|
pub extern "C" fn Servo_StyleSet_InsertStyleSheetBefore(
|
||||||
raw_data: RawServoStyleSetBorrowed,
|
raw_data: RawServoStyleSetBorrowed,
|
||||||
sheet: *const ServoStyleSheet,
|
sheet: *const DomStyleSheet,
|
||||||
before_sheet: *const ServoStyleSheet
|
before_sheet: *const DomStyleSheet
|
||||||
) {
|
) {
|
||||||
let global_style_data = &*GLOBAL_STYLE_DATA;
|
let global_style_data = &*GLOBAL_STYLE_DATA;
|
||||||
let mut data = PerDocumentStyleData::from_ffi(raw_data).borrow_mut();
|
let mut data = PerDocumentStyleData::from_ffi(raw_data).borrow_mut();
|
||||||
@@ -1485,7 +1485,7 @@ pub extern "C" fn Servo_StyleSet_InsertStyleSheetBefore(
|
|||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub extern "C" fn Servo_StyleSet_RemoveStyleSheet(
|
pub extern "C" fn Servo_StyleSet_RemoveStyleSheet(
|
||||||
raw_data: RawServoStyleSetBorrowed,
|
raw_data: RawServoStyleSetBorrowed,
|
||||||
sheet: *const ServoStyleSheet
|
sheet: *const DomStyleSheet
|
||||||
) {
|
) {
|
||||||
let global_style_data = &*GLOBAL_STYLE_DATA;
|
let global_style_data = &*GLOBAL_STYLE_DATA;
|
||||||
let mut data = PerDocumentStyleData::from_ffi(raw_data).borrow_mut();
|
let mut data = PerDocumentStyleData::from_ffi(raw_data).borrow_mut();
|
||||||
@@ -1560,7 +1560,7 @@ pub extern "C" fn Servo_StyleSheet_GetRules(
|
|||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub extern "C" fn Servo_StyleSheet_Clone(
|
pub extern "C" fn Servo_StyleSheet_Clone(
|
||||||
raw_sheet: RawServoStyleSheetContentsBorrowed,
|
raw_sheet: RawServoStyleSheetContentsBorrowed,
|
||||||
reference_sheet: *const ServoStyleSheet,
|
reference_sheet: *const DomStyleSheet,
|
||||||
) -> RawServoStyleSheetContentsStrong {
|
) -> RawServoStyleSheetContentsStrong {
|
||||||
use style::shared_lock::{DeepCloneParams, DeepCloneWithLock};
|
use style::shared_lock::{DeepCloneParams, DeepCloneWithLock};
|
||||||
let global_style_data = &*GLOBAL_STYLE_DATA;
|
let global_style_data = &*GLOBAL_STYLE_DATA;
|
||||||
@@ -1681,7 +1681,7 @@ pub extern "C" fn Servo_CssRules_InsertRule(
|
|||||||
index: u32,
|
index: u32,
|
||||||
nested: bool,
|
nested: bool,
|
||||||
loader: *mut Loader,
|
loader: *mut Loader,
|
||||||
gecko_stylesheet: *mut ServoStyleSheet,
|
gecko_stylesheet: *mut DomStyleSheet,
|
||||||
rule_type: *mut u16,
|
rule_type: *mut u16,
|
||||||
) -> nsresult {
|
) -> nsresult {
|
||||||
let loader = if loader.is_null() {
|
let loader = if loader.is_null() {
|
||||||
@@ -2136,16 +2136,16 @@ pub extern "C" fn Servo_ImportRule_GetHref(rule: RawServoImportRuleBorrowed, res
|
|||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub extern "C" fn Servo_ImportRule_GetSheet(
|
pub extern "C" fn Servo_ImportRule_GetSheet(
|
||||||
rule: RawServoImportRuleBorrowed,
|
rule: RawServoImportRuleBorrowed,
|
||||||
) -> *const ServoStyleSheet {
|
) -> *const DomStyleSheet {
|
||||||
read_locked_arc(rule, |rule: &ImportRule| {
|
read_locked_arc(rule, |rule: &ImportRule| {
|
||||||
rule.stylesheet.as_sheet().unwrap().raw() as *const ServoStyleSheet
|
rule.stylesheet.as_sheet().unwrap().raw() as *const DomStyleSheet
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub extern "C" fn Servo_ImportRule_SetSheet(
|
pub extern "C" fn Servo_ImportRule_SetSheet(
|
||||||
rule: RawServoImportRuleBorrowed,
|
rule: RawServoImportRuleBorrowed,
|
||||||
sheet: *mut ServoStyleSheet,
|
sheet: *mut DomStyleSheet,
|
||||||
) {
|
) {
|
||||||
write_locked_arc(rule, |rule: &mut ImportRule| {
|
write_locked_arc(rule, |rule: &mut ImportRule| {
|
||||||
let sheet = unsafe { GeckoStyleSheet::new(sheet) };
|
let sheet = unsafe { GeckoStyleSheet::new(sheet) };
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ use style::gecko::global_style_data::GLOBAL_STYLE_DATA;
|
|||||||
use style::gecko_bindings::bindings;
|
use style::gecko_bindings::bindings;
|
||||||
use style::gecko_bindings::bindings::Gecko_LoadStyleSheet;
|
use style::gecko_bindings::bindings::Gecko_LoadStyleSheet;
|
||||||
use style::gecko_bindings::structs::{Loader, LoaderReusableStyleSheets};
|
use style::gecko_bindings::structs::{Loader, LoaderReusableStyleSheets};
|
||||||
use style::gecko_bindings::structs::{ServoStyleSheet, SheetLoadData, SheetLoadDataHolder};
|
use style::gecko_bindings::structs::{StyleSheet as DomStyleSheet, SheetLoadData, SheetLoadDataHolder};
|
||||||
use style::gecko_bindings::structs::URLExtraData;
|
use style::gecko_bindings::structs::URLExtraData;
|
||||||
use style::gecko_bindings::sugar::ownership::FFIArcHelpers;
|
use style::gecko_bindings::sugar::ownership::FFIArcHelpers;
|
||||||
use style::gecko_bindings::sugar::refptr::RefPtr;
|
use style::gecko_bindings::sugar::refptr::RefPtr;
|
||||||
@@ -24,13 +24,15 @@ use style::stylesheets::StylesheetContents;
|
|||||||
use style::stylesheets::import_rule::ImportSheet;
|
use style::stylesheets::import_rule::ImportSheet;
|
||||||
use style::values::CssUrl;
|
use style::values::CssUrl;
|
||||||
|
|
||||||
pub struct StylesheetLoader(*mut Loader, *mut ServoStyleSheet, *mut SheetLoadData, *mut LoaderReusableStyleSheets);
|
pub struct StylesheetLoader(*mut Loader, *mut DomStyleSheet, *mut SheetLoadData, *mut LoaderReusableStyleSheets);
|
||||||
|
|
||||||
impl StylesheetLoader {
|
impl StylesheetLoader {
|
||||||
pub fn new(loader: *mut Loader,
|
pub fn new(
|
||||||
parent: *mut ServoStyleSheet,
|
loader: *mut Loader,
|
||||||
parent_load_data: *mut SheetLoadData,
|
parent: *mut DomStyleSheet,
|
||||||
reusable_sheets: *mut LoaderReusableStyleSheets) -> Self {
|
parent_load_data: *mut SheetLoadData,
|
||||||
|
reusable_sheets: *mut LoaderReusableStyleSheets,
|
||||||
|
) -> Self {
|
||||||
StylesheetLoader(loader, parent, parent_load_data, reusable_sheets)
|
StylesheetLoader(loader, parent, parent_load_data, reusable_sheets)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user