| Index: Source/core/dom/Microtask.cpp
|
| diff --git a/Source/core/dom/Microtask.cpp b/Source/core/dom/Microtask.cpp
|
| index 9340c1df4780ce2ef665054201638b4cb02b27e4..13527c0e7b7c8d0b8219df582992cb0667d6be4a 100644
|
| --- a/Source/core/dom/Microtask.cpp
|
| +++ b/Source/core/dom/Microtask.cpp
|
| @@ -33,6 +33,7 @@
|
|
|
| #include "bindings/core/v8/V8PerIsolateData.h"
|
| #include "bindings/core/v8/V8RecursionScope.h"
|
| +#include "platform/ScriptForbiddenScope.h"
|
| #include "platform/Task.h"
|
| #include "public/platform/WebThread.h"
|
| #include <v8.h>
|
| @@ -44,12 +45,13 @@ void Microtask::performCheckpoint()
|
| v8::Isolate* isolate = v8::Isolate::GetCurrent();
|
| V8PerIsolateData* isolateData = V8PerIsolateData::from(isolate);
|
| ASSERT(isolateData);
|
| - if (isolateData->recursionLevel() || isolateData->performingMicrotaskCheckpoint() || isolateData->destructionPending())
|
| + if (isolateData->recursionLevel() || isolateData->performingMicrotaskCheckpoint() || isolateData->destructionPending() || ScriptForbiddenScope::isScriptForbidden())
|
| return;
|
| isolateData->setPerformingMicrotaskCheckpoint(true);
|
| {
|
| // Ensure that end-of-task-or-microtask actions are performed.
|
| - V8RecursionScope recursionScope(isolate);
|
| + OwnPtr<V8RecursionScope> recursionScope = V8RecursionScope::create(isolate);
|
| + ASSERT(recursionScope);
|
| isolate->RunMicrotasks();
|
| }
|
| isolateData->setPerformingMicrotaskCheckpoint(false);
|
|
|