Chromium Code Reviews| 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; |