@@ -4352,35 +4352,30 @@ PresShell::ContentStateChanged(nsIDocument* aDocument,
43524352}
43534353
43544354void
4355- PresShell::DocumentStatesChanged (nsIDocument* aDocument,
4356- EventStates aStateMask)
4355+ PresShell::DocumentStatesChanged (nsIDocument* aDocument, EventStates aStateMask)
43574356{
43584357 NS_PRECONDITION (!mIsDocumentGone , " Unexpected DocumentStatesChanged" );
43594358 NS_PRECONDITION (aDocument == mDocument , " Unexpected aDocument" );
4359+ MOZ_ASSERT (!aStateMask.IsEmpty ());
43604360
43614361 if (mDidInitialize ) {
4362- Element* rootElement = aDocument->GetRootElement ();
4363- bool needRestyle = false ;
43644362 if (mStyleSet ->IsServo ()) {
4365- needRestyle = rootElement &&
4366- (mStyleSet ->AsServo ()->HasDocumentStateDependency (aStateMask) ||
4367- aDocument->BindingManager ()->
4368- AnyBindingHasDocumentStateDependency (aStateMask));
4369- } else {
4370- needRestyle = mStyleSet ->AsGecko ()->
4371- HasDocumentStateDependentStyle (rootElement, aStateMask);
4372- }
4373- if (needRestyle) {
4374- mPresContext ->RestyleManager ()->PostRestyleEvent (rootElement,
4375- eRestyle_Subtree,
4376- nsChangeHint (0 ));
4377- VERIFY_STYLE_TREE;
4363+ mStyleSet ->AsServo ()->InvalidateStyleForDocumentStateChanges (aStateMask);
4364+ } else if (Element* rootElement = aDocument->GetRootElement ()) {
4365+ const bool needRestyle =
4366+ mStyleSet ->AsGecko ()->HasDocumentStateDependentStyle (
4367+ rootElement, aStateMask);
4368+ if (needRestyle) {
4369+ mPresContext ->RestyleManager ()->PostRestyleEvent (rootElement,
4370+ eRestyle_Subtree,
4371+ nsChangeHint (0 ));
4372+ VERIFY_STYLE_TREE;
4373+ }
43784374 }
43794375 }
43804376
43814377 if (aStateMask.HasState (NS_DOCUMENT_STATE_WINDOW_INACTIVE)) {
4382- nsIFrame* root = mFrameConstructor ->GetRootFrame ();
4383- if (root) {
4378+ if (nsIFrame* root = mFrameConstructor ->GetRootFrame ()) {
43844379 root->SchedulePaint ();
43854380 }
43864381 }
0 commit comments