Bug 1443553: Devirtualize ContentStateChanged / DocumentStatesChanged / StyleRule*. r?smaug
MozReview-Commit-ID: RE6rrBQMMU
--- a/dom/base/nsDocument.cpp
+++ b/dom/base/nsDocument.cpp
@@ -5482,59 +5482,59 @@ nsDocument::UnblockDOMContentLoaded()
&nsDocument::DispatchContentLoadedEvents);
Dispatch(TaskCategory::Other, ev.forget());
} else {
DispatchContentLoadedEvents();
}
}
void
-nsDocument::ContentStateChanged(nsIContent* aContent, EventStates aStateMask)
+nsIDocument::ContentStateChanged(nsIContent* aContent, EventStates aStateMask)
{
NS_PRECONDITION(!nsContentUtils::IsSafeToRunScript(),
"Someone forgot a scriptblocker");
NS_DOCUMENT_NOTIFY_OBSERVERS(ContentStateChanged,
(this, aContent, aStateMask));
}
void
-nsDocument::DocumentStatesChanged(EventStates aStateMask)
+nsIDocument::DocumentStatesChanged(EventStates aStateMask)
{
UpdateDocumentStates(aStateMask);
NS_DOCUMENT_NOTIFY_OBSERVERS(DocumentStatesChanged, (this, aStateMask));
}
void
-nsDocument::StyleRuleChanged(StyleSheet* aSheet, css::Rule* aStyleRule)
+nsIDocument::StyleRuleChanged(StyleSheet* aSheet, css::Rule* aStyleRule)
{
if (!StyleSheetChangeEventsEnabled()) {
return;
}
DO_STYLESHEET_NOTIFICATION(StyleRuleChangeEvent,
"StyleRuleChanged",
mRule,
aStyleRule);
}
void
-nsDocument::StyleRuleAdded(StyleSheet* aSheet, css::Rule* aStyleRule)
+nsIDocument::StyleRuleAdded(StyleSheet* aSheet, css::Rule* aStyleRule)
{
if (!StyleSheetChangeEventsEnabled()) {
return;
}
DO_STYLESHEET_NOTIFICATION(StyleRuleChangeEvent,
"StyleRuleAdded",
mRule,
aStyleRule);
}
void
-nsDocument::StyleRuleRemoved(StyleSheet* aSheet, css::Rule* aStyleRule)
+nsIDocument::StyleRuleRemoved(StyleSheet* aSheet, css::Rule* aStyleRule)
{
if (!StyleSheetChangeEventsEnabled()) {
return;
}
DO_STYLESHEET_NOTIFICATION(StyleRuleChangeEvent,
"StyleRuleRemoved",
mRule,
--- a/dom/base/nsDocument.h
+++ b/dom/base/nsDocument.h
@@ -494,29 +494,16 @@ public:
// observers.
virtual void BeginUpdate(nsUpdateType aUpdateType) override;
virtual void EndUpdate(nsUpdateType aUpdateType) override;
virtual void BeginLoad() override;
virtual void EndLoad() override;
virtual void SetReadyStateInternal(ReadyState rs) override;
- virtual void ContentStateChanged(nsIContent* aContent,
- mozilla::EventStates aStateMask)
- override;
- virtual void DocumentStatesChanged(
- mozilla::EventStates aStateMask) override;
-
- virtual void StyleRuleChanged(mozilla::StyleSheet* aStyleSheet,
- mozilla::css::Rule* aStyleRule) override;
- virtual void StyleRuleAdded(mozilla::StyleSheet* aStyleSheet,
- mozilla::css::Rule* aStyleRule) override;
- virtual void StyleRuleRemoved(mozilla::StyleSheet* aStyleSheet,
- mozilla::css::Rule* aStyleRule) override;
-
virtual void FlushPendingNotifications(mozilla::FlushType aType) final override;
virtual void FlushExternalResources(mozilla::FlushType aType) override;
virtual void SetXMLDeclaration(const char16_t *aVersion,
const char16_t *aEncoding,
const int32_t aStandalone) override;
virtual void GetXMLDeclaration(nsAString& aVersion,
nsAString& aEncoding,
nsAString& Standalone) override;
--- a/dom/base/nsIDocument.h
+++ b/dom/base/nsIDocument.h
@@ -1689,32 +1689,32 @@ public:
virtual void SetReadyStateInternal(ReadyState rs) = 0;
ReadyState GetReadyStateEnum()
{
return mReadyState;
}
// notify that a content node changed state. This must happen under
// a scriptblocker but NOT within a begin/end update.
- virtual void ContentStateChanged(nsIContent* aContent,
- mozilla::EventStates aStateMask) = 0;
+ void ContentStateChanged(
+ nsIContent* aContent, mozilla::EventStates aStateMask);
// Notify that a document state has changed.
// This should only be called by callers whose state is also reflected in the
// implementation of nsDocument::GetDocumentState.
- virtual void DocumentStatesChanged(mozilla::EventStates aStateMask) = 0;
+ void DocumentStatesChanged(mozilla::EventStates aStateMask);
// Observation hooks for style data to propagate notifications
// to document observers
- virtual void StyleRuleChanged(mozilla::StyleSheet* aStyleSheet,
- mozilla::css::Rule* aStyleRule) = 0;
- virtual void StyleRuleAdded(mozilla::StyleSheet* aStyleSheet,
- mozilla::css::Rule* aStyleRule) = 0;
- virtual void StyleRuleRemoved(mozilla::StyleSheet* aStyleSheet,
- mozilla::css::Rule* aStyleRule) = 0;
+ void StyleRuleChanged(mozilla::StyleSheet* aStyleSheet,
+ mozilla::css::Rule* aStyleRule);
+ void StyleRuleAdded(mozilla::StyleSheet* aStyleSheet,
+ mozilla::css::Rule* aStyleRule);
+ void StyleRuleRemoved(mozilla::StyleSheet* aStyleSheet,
+ mozilla::css::Rule* aStyleRule);
/**
* Flush notifications for this document and its parent documents
* (since those may affect the layout of this one).
*/
virtual void FlushPendingNotifications(mozilla::FlushType aType) = 0;
/**