Bug 1290209 - Part 9: Don't return early from Loader::PrepareSheet for a ServoStyleSheet. r?xidorn draft
authorCameron McCormack <cam@mcc.id.au>
Thu, 05 Jan 2017 16:26:55 +0800
changeset 456288 5bef1c5c6f9d8bd9a3c00d9bf557ce628631f4a6
parent 456287 209d80e574ead2ebd2a0028a62acae9dba7336fb
child 541178 a1a99d03827f1986674815d78410d4605e94b96c
push id40445
push userbmo:cam@mcc.id.au
push dateThu, 05 Jan 2017 09:33:32 +0000
reviewersxidorn
bugs1290209
milestone53.0a1
Bug 1290209 - Part 9: Don't return early from Loader::PrepareSheet for a ServoStyleSheet. r?xidorn MozReview-Commit-ID: 8NXajQ6pMqi
layout/style/Loader.cpp
--- a/layout/style/Loader.cpp
+++ b/layout/style/Loader.cpp
@@ -1277,24 +1277,16 @@ Loader::PrepareSheet(StyleSheet* aSheet,
                      const nsSubstring& aTitle,
                      const nsSubstring& aMediaString,
                      nsMediaList* aMediaList,
                      Element* aScopeElement,
                      bool aIsAlternate)
 {
   NS_PRECONDITION(aSheet, "Must have a sheet!");
 
-  // XXXheycam Need to set media, title, etc. on ServoStyleSheets.
-  if (aSheet->IsServo()) {
-    NS_WARNING("stylo: should set metadata on ServoStyleSheets. See bug 1290209.");
-    return;
-  }
-
-  CSSStyleSheet* sheet = aSheet->AsGecko();
-
   RefPtr<nsMediaList> mediaList(aMediaList);
 
   if (!aMediaString.IsEmpty()) {
     NS_ASSERTION(!aMediaList,
                  "must not provide both aMediaString and aMediaList");
     mediaList = new nsMediaList();
 
     nsCSSParser mediumParser(this);
@@ -1303,17 +1295,24 @@ Loader::PrepareSheet(StyleSheet* aSheet,
     // elements, or PIs, so pass true.
     mediumParser.ParseMediaList(aMediaString, nullptr, 0, mediaList);
   }
 
   aSheet->SetMedia(mediaList);
 
   aSheet->SetTitle(aTitle);
   aSheet->SetEnabled(!aIsAlternate);
-  sheet->SetScopeElement(aScopeElement);
+
+  if (aSheet->IsGecko()) {
+    aSheet->AsGecko()->SetScopeElement(aScopeElement);
+  } else {
+    if (aScopeElement) {
+      NS_WARNING("stylo: scoped style sheets not supported");
+    }
+  }
 }
 
 /**
  * InsertSheetInDoc handles ordering of sheets in the document.  Here
  * we have two types of sheets -- those with linking elements and
  * those without.  The latter are loaded by Link: headers.
  * The following constraints are observed:
  * 1) Any sheet with a linking element comes after all sheets without