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 faf17438cdf1345178461da631fb606fec60bd4a..7baff2fe98124552efbb5b6bb6ed8c9a2e6a1af7 100644 |
--- a/third_party/WebKit/Source/bindings/core/v8/V8PerIsolateData.cpp |
+++ b/third_party/WebKit/Source/bindings/core/v8/V8PerIsolateData.cpp |
@@ -34,6 +34,7 @@ |
#include "bindings/core/v8/V8ScriptRunner.h" |
#include "core/frame/Deprecation.h" |
#include "core/inspector/MainThreadDebugger.h" |
+#include "platform/ScriptForbiddenScope.h" |
#include "public/platform/Platform.h" |
#include "wtf/LeakAnnotations.h" |
#include "wtf/MainThread.h" |
@@ -42,10 +43,15 @@ namespace blink { |
static V8PerIsolateData* mainThreadPerIsolateData = 0; |
+static void beforeCallEnteredCallback(v8::Isolate* isolate) |
+{ |
+ RELEASE_ASSERT(!ScriptForbiddenScope::isScriptForbidden()); |
+} |
+ |
#if ENABLE(ASSERT) |
-static void assertV8RecursionScope() |
+static void assertV8RecursionScope(v8::Isolate* isolate) |
{ |
- ASSERT(V8RecursionScope::properlyUsed(v8::Isolate::GetCurrent())); |
+ ASSERT(V8RecursionScope::properlyUsed(isolate)); |
} |
static bool runningUnitTest() |
@@ -151,6 +157,7 @@ V8PerIsolateData::V8PerIsolateData() |
if (!runningUnitTest()) |
isolate()->AddCallCompletedCallback(&assertV8RecursionScope); |
#endif |
+ isolate()->AddBeforeCallEnteredCallback(&beforeCallEnteredCallback); |
if (isMainThread()) |
mainThreadPerIsolateData = this; |
isolate()->SetUseCounterCallback(&useCounterCallback); |
@@ -210,6 +217,7 @@ void V8PerIsolateData::destroy(v8::Isolate* isolate) |
if (!runningUnitTest()) |
isolate->RemoveCallCompletedCallback(&assertV8RecursionScope); |
#endif |
+ isolate->RemoveBeforeCallEnteredCallback(&beforeCallEnteredCallback); |
V8PerIsolateData* data = from(isolate); |
// Clear everything before exiting the Isolate. |