Index: Source/bindings/core/v8/V8RecursionScope.h |
diff --git a/Source/bindings/core/v8/V8RecursionScope.h b/Source/bindings/core/v8/V8RecursionScope.h |
index e42a4fa1d3a10cac6aff27666576ac3cc90ecddc..48ef82ec82eef6c4d858ed8e44857c437b5c03d8 100644 |
--- a/Source/bindings/core/v8/V8RecursionScope.h |
+++ b/Source/bindings/core/v8/V8RecursionScope.h |
@@ -35,6 +35,7 @@ |
#include "core/dom/ExecutionContext.h" |
#include "platform/ScriptForbiddenScope.h" |
#include "wtf/Noncopyable.h" |
+#include "wtf/PassOwnPtr.h" |
#include <v8.h> |
namespace blink { |
@@ -59,14 +60,11 @@ namespace blink { |
class V8RecursionScope { |
WTF_MAKE_NONCOPYABLE(V8RecursionScope); |
public: |
- explicit V8RecursionScope(v8::Isolate* isolate) |
- : m_isolate(isolate) |
+ static PassOwnPtr<V8RecursionScope> create(v8::Isolate* isolate) |
haraken
2014/10/14 01:04:29
Shall we rename create => createIfScriptAllowed ?
|
{ |
- V8PerIsolateData::from(m_isolate)->incrementRecursionLevel(); |
- RELEASE_ASSERT(!ScriptForbiddenScope::isScriptForbidden()); |
- // If you want V8 to autorun microtasks, this class needs to have a |
- // v8::Isolate::SuppressMicrotaskExecutionScope member. |
- ASSERT(!isolate->WillAutorunMicrotasks()); |
+ return !ScriptForbiddenScope::isScriptForbidden() |
+ ? adoptPtr(new V8RecursionScope(isolate)) |
+ : nullptr; |
} |
~V8RecursionScope() |
@@ -114,6 +112,15 @@ public: |
}; |
private: |
+ explicit V8RecursionScope(v8::Isolate* isolate) |
+ : m_isolate(isolate) |
+ { |
+ V8PerIsolateData::from(m_isolate)->incrementRecursionLevel(); |
+ // If you want V8 to autorun microtasks, this class needs to have a |
+ // v8::Isolate::SuppressMicrotaskExecutionScope member. |
+ ASSERT(!isolate->WillAutorunMicrotasks()); |
+ } |
+ |
void didLeaveScriptContext(); |
v8::Isolate* m_isolate; |