Bug 1369187: Don't return an old style context for ::first-line and ::first-letter, but not crash either. r?bholley draft
authorEmilio Cobos Álvarez <emilio@crisal.io>
Wed, 31 May 2017 19:15:14 +0200
changeset 587380 6afda716b783f206d6b6122aa8d65b53f9dfb5c8
parent 587379 326cbaf7e61ebc5d96f943257a24e7b3b5cec1d3
child 587381 32bd2a3ee41387350ba1e5b04cd28eb5c8167e74
push id61681
push userbmo:emilio+bugs@crisal.io
push dateWed, 31 May 2017 21:41:57 +0000
reviewersbholley
bugs1369187
milestone55.0a1
Bug 1369187: Don't return an old style context for ::first-line and ::first-letter, but not crash either. r?bholley This will make us reframe until fixed. It's not hard to fix, just requires to discuss how :) MozReview-Commit-ID: 1vlRUSuMqtp
layout/base/ServoRestyleManager.cpp
--- a/layout/base/ServoRestyleManager.cpp
+++ b/layout/base/ServoRestyleManager.cpp
@@ -510,16 +510,22 @@ ServoRestyleManager::FrameForPseudoEleme
   if (aPseudoTagOrNull == nsCSSPseudoElements::before) {
     return nsLayoutUtils::GetBeforeFrame(aContent);
   }
 
   if (aPseudoTagOrNull == nsCSSPseudoElements::after) {
     return nsLayoutUtils::GetAfterFrame(aContent);
   }
 
+  if (aPseudoTagOrNull == nsCSSPseudoElements::firstLine ||
+      aPseudoTagOrNull == nsCSSPseudoElements::firstLetter) {
+    // TODO(emilio, bz): Figure out the best way to diff these styles.
+    return nullptr;
+  }
+
   MOZ_CRASH("Unkown pseudo-element given to "
             "ServoRestyleManager::FrameForPseudoElement");
   return nullptr;
 }
 
 void
 ServoRestyleManager::DoProcessPendingRestyles(TraversalRestyleBehavior
                                                 aRestyleBehavior)