Bug 1413418 - Part 1: Use MicroTask on CustomElements correctly
MozReview-Commit-ID: IwRHz7bXFa5
--- a/dom/base/CustomElementRegistry.cpp
+++ b/dom/base/CustomElementRegistry.cpp
@@ -1127,19 +1127,18 @@ CustomElementReactionsStack::Enqueue(Ele
mBackupQueue.AppendElement(aElement);
elementData->mReactionQueue.AppendElement(aReaction);
if (mIsBackupQueueProcessing) {
return;
}
CycleCollectedJSContext* context = CycleCollectedJSContext::Get();
- RefPtr<ProcessBackupQueueRunnable> processBackupQueueRunnable =
- new ProcessBackupQueueRunnable(this);
- context->DispatchToMicroTask(processBackupQueueRunnable.forget());
+ RefPtr<BackupQueueMicroTask> bqmt = new BackupQueueMicroTask(this);
+ context->DispatchMicroTaskRunnable(bqmt.forget());
}
void
CustomElementReactionsStack::InvokeBackupQueue()
{
// Check backup queue size in order to reduce function call overhead.
if (!mBackupQueue.IsEmpty()) {
// Upgrade reactions won't be scheduled in backup queue and the exception of
--- a/dom/base/CustomElementRegistry.h
+++ b/dom/base/CustomElementRegistry.h
@@ -315,34 +315,32 @@ private:
* Invoke custom element reactions
* https://html.spec.whatwg.org/multipage/scripting.html#invoke-custom-element-reactions
*/
void InvokeReactions(ElementQueue* aElementQueue, nsIGlobalObject* aGlobal);
void Enqueue(Element* aElement, CustomElementReaction* aReaction);
private:
- class ProcessBackupQueueRunnable : public mozilla::Runnable {
+ class BackupQueueMicroTask final : public mozilla::MicroTaskRunnable {
public:
- explicit ProcessBackupQueueRunnable(
+ explicit BackupQueueMicroTask(
CustomElementReactionsStack* aReactionStack)
- : Runnable(
- "dom::CustomElementReactionsStack::ProcessBackupQueueRunnable")
+ : MicroTaskRunnable()
, mReactionStack(aReactionStack)
{
MOZ_ASSERT(!mReactionStack->mIsBackupQueueProcessing,
"mIsBackupQueueProcessing should be initially false");
mReactionStack->mIsBackupQueueProcessing = true;
}
- NS_IMETHOD Run() override
+ virtual void Run(AutoSlowOperation& aAso) override
{
mReactionStack->InvokeBackupQueue();
mReactionStack->mIsBackupQueueProcessing = false;
- return NS_OK;
}
private:
RefPtr<CustomElementReactionsStack> mReactionStack;
};
};
class CustomElementRegistry final : public nsISupports,