mirror of
https://github.com/roytam1/palemoon27.git
synced 2026-05-26 13:23:07 +00:00
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:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user