Index: third_party/WebKit/Source/bindings/core/v8/V8PerIsolateData.cpp |
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8PerIsolateData.cpp b/third_party/WebKit/Source/bindings/core/v8/V8PerIsolateData.cpp |
index 7baff2fe98124552efbb5b6bb6ed8c9a2e6a1af7..0a2cfcb91e350d51b0e373a3f71707588fbdf081 100644 |
--- a/third_party/WebKit/Source/bindings/core/v8/V8PerIsolateData.cpp |
+++ b/third_party/WebKit/Source/bindings/core/v8/V8PerIsolateData.cpp |
@@ -48,6 +48,11 @@ static void beforeCallEnteredCallback(v8::Isolate* isolate) |
RELEASE_ASSERT(!ScriptForbiddenScope::isScriptForbidden()); |
} |
+static void microtasksCompletedCallback(v8::Isolate* isolate) |
+{ |
+ V8PerIsolateData::from(isolate)->runEndOfScopeTasks(); |
+} |
+ |
#if ENABLE(ASSERT) |
static void assertV8RecursionScope(v8::Isolate* isolate) |
{ |
@@ -158,6 +163,7 @@ V8PerIsolateData::V8PerIsolateData() |
isolate()->AddCallCompletedCallback(&assertV8RecursionScope); |
#endif |
isolate()->AddBeforeCallEnteredCallback(&beforeCallEnteredCallback); |
+ isolate()->AddMicrotasksCompletedCallback(µtasksCompletedCallback); |
if (isMainThread()) |
mainThreadPerIsolateData = this; |
isolate()->SetUseCounterCallback(&useCounterCallback); |
@@ -218,6 +224,7 @@ void V8PerIsolateData::destroy(v8::Isolate* isolate) |
isolate->RemoveCallCompletedCallback(&assertV8RecursionScope); |
#endif |
isolate->RemoveBeforeCallEnteredCallback(&beforeCallEnteredCallback); |
+ isolate->RemoveMicrotasksCompletedCallback(µtasksCompletedCallback); |
V8PerIsolateData* data = from(isolate); |
// Clear everything before exiting the Isolate. |