import changes from `dev' branch of rmottola/Arctic-Fox:

- Bug 895274 part.2 Define event messages as anonymous enum with EventMessageList.h r=smaug (44a28d5da)
- Bug 895274 part.1 Rename WidgetEvent::message to WidgetEvent::mMessage r=smaug (1a1651a54)
- Bug 895274 part.170 Rename NS_ANIMATION_EVENT_START to eAnimationEventFirst r=smaug (e3bedfd02)
- some cleanup (c496de395)
- Bug 1186582 - AskPermission should check for prompt exceptions; r=fabrice (e7fc39d0a)
- Bug 1170314 - Make console.timeStamp to add also Gecko profiler markers if Gecko profiler is active, r=baku,benwa (7e78b02c1)
- Bug 1178172 - Fix all compile errors in dom/base on non-unified build. r=baku (ffc87d5ae)
- namespace (93bb2e778)
- Bug 1001158 - Handle an invalid distribution.ini gracefully, r=gijs (260ab12f2)
- Bug 1157760: Remove incorrect MOZ_ASSERT in nsMessageManagerSH<Super>::Enumerate. r=bz (e1d86db8a)
- Bug 1148694 patch 1 - Stop creating a CharsetRule object when parsing @charset rules. r=dbaron (5d3b4a237)
- Bug 1148694 patch 2 - Remove interface and implementation of CSSCharsetRule. r=dbaron (e687d6a51)
- Bug 1148694 patch 3 - remove tests affected by removal of CSSCharsetRule. r=dbaron, r=khuey (84e04ec3c)
- Bug 958778 - De-holder nsIXPConnect::GetWrappedNativePrototype(). r=gabor (e862b0197)
- non-EME part of Bug 1160445 - Add detailed logging for EME promise failures (90c5ae1a1)
- Bug 1191305 - Alphabetize some includes; r=froydnj (6bc41455c)
- Bug 1188640 - Add ChromeOnly MutationObserver.mergeAttributeRecords to speed up devtools, r=bz,bgrins (5f07c777f)
- namespace (0e90aac16)
This commit is contained in:
2022-01-03 11:05:37 +08:00
parent cbefc77b36
commit e283739a59
140 changed files with 1372 additions and 1267 deletions
+39 -11
View File
@@ -7,16 +7,20 @@
#include "nsDOMMutationObserver.h"
#include "mozilla/OwningNonNull.h"
#include "nsError.h"
#include "nsIScriptGlobalObject.h"
#include "nsContentUtils.h"
#include "nsThreadUtils.h"
#include "nsIDOMMutationEvent.h"
#include "nsTextFragment.h"
#include "nsServiceManagerUtils.h"
#include "mozilla/dom/Animation.h"
#include "mozilla/dom/KeyframeEffect.h"
#include "nsContentUtils.h"
#include "nsError.h"
#include "nsIDOMMutationEvent.h"
#include "nsIScriptGlobalObject.h"
#include "nsServiceManagerUtils.h"
#include "nsTextFragment.h"
#include "nsThreadUtils.h"
using mozilla::dom::Animation;
nsAutoTArray<nsRefPtr<nsDOMMutationObserver>, 4>*
nsDOMMutationObserver::sScheduledMutationObservers = nullptr;
@@ -346,12 +350,12 @@ void
nsAnimationReceiver::RecordAnimationMutation(Animation* aAnimation,
AnimationMutation aMutationType)
{
KeyframeEffectReadOnly* effect = aAnimation->GetEffect();
mozilla::dom::KeyframeEffectReadOnly* effect = aAnimation->GetEffect();
if (!effect) {
return;
}
Element* animationTarget = effect->GetTarget();
mozilla::dom::Element* animationTarget = effect->GetTarget();
if (!animationTarget) {
return;
}
@@ -686,7 +690,11 @@ nsDOMMutationObserver::TakeRecords(
for (uint32_t i = 0; i < mPendingMutationCount; ++i) {
nsRefPtr<nsDOMMutationRecord> next;
current->mNext.swap(next);
*aRetVal.AppendElement() = current.forget();
if (!mMergeAttributeRecords ||
!MergeableAttributeRecord(aRetVal.SafeLastElement(nullptr),
current)) {
*aRetVal.AppendElement() = current.forget();
}
current.swap(next);
}
ClearPendingRecords();
@@ -743,6 +751,21 @@ nsDOMMutationObserver::Constructor(const mozilla::dom::GlobalObject& aGlobal,
return observer.forget();
}
bool
nsDOMMutationObserver::MergeableAttributeRecord(nsDOMMutationRecord* aOldRecord,
nsDOMMutationRecord* aRecord)
{
MOZ_ASSERT(mMergeAttributeRecords);
return
aOldRecord &&
aOldRecord->mType == nsGkAtoms::attributes &&
aOldRecord->mType == aRecord->mType &&
aOldRecord->mTarget == aRecord->mTarget &&
aOldRecord->mAttrName == aRecord->mAttrName &&
aOldRecord->mAttrNamespace.Equals(aRecord->mAttrNamespace);
}
void
nsDOMMutationObserver::HandleMutation()
{
@@ -774,7 +797,12 @@ nsDOMMutationObserver::HandleMutation()
for (uint32_t i = 0; i < mPendingMutationCount; ++i) {
nsRefPtr<nsDOMMutationRecord> next;
current->mNext.swap(next);
*mutations.AppendElement(mozilla::fallible) = current;
if (!mMergeAttributeRecords ||
!MergeableAttributeRecord(mutations.Length() ?
mutations.LastElement().get() : nullptr,
current)) {
*mutations.AppendElement(mozilla::fallible) = current;
}
current.swap(next);
}
}