| Index: third_party/WebKit/Source/bindings/core/v8/V8PerIsolateData.h
|
| diff --git a/third_party/WebKit/Source/bindings/core/v8/V8PerIsolateData.h b/third_party/WebKit/Source/bindings/core/v8/V8PerIsolateData.h
|
| index b4e05891a44b8bf5df5ffde47e5a3814f974f91a..99776e7788df252375e0feae48dca8cbaf82dfce 100644
|
| --- a/third_party/WebKit/Source/bindings/core/v8/V8PerIsolateData.h
|
| +++ b/third_party/WebKit/Source/bindings/core/v8/V8PerIsolateData.h
|
| @@ -167,6 +167,33 @@ class CORE_EXPORT V8PerIsolateData {
|
| return m_activeScriptWrappables.get();
|
| }
|
|
|
| + class TemporaryScriptWrappableVisitorScope {
|
| + WTF_MAKE_NONCOPYABLE(TemporaryScriptWrappableVisitorScope);
|
| + STACK_ALLOCATED();
|
| +
|
| + public:
|
| + TemporaryScriptWrappableVisitorScope(
|
| + v8::Isolate* isolate,
|
| + std::unique_ptr<ScriptWrappableVisitor> visitor)
|
| + : m_isolate(isolate) {
|
| + swapWithV8PerIsolateDataVisitor(visitor);
|
| + }
|
| + ~TemporaryScriptWrappableVisitorScope() {
|
| + swapWithV8PerIsolateDataVisitor(m_savedVisitor);
|
| + }
|
| +
|
| + private:
|
| + inline ScriptWrappableVisitor* currentVisitor(v8::Isolate* isolate) {
|
| + return V8PerIsolateData::from(m_isolate)->scriptWrappableVisitor();
|
| + }
|
| +
|
| + void swapWithV8PerIsolateDataVisitor(
|
| + std::unique_ptr<ScriptWrappableVisitor>&);
|
| +
|
| + v8::Isolate* m_isolate;
|
| + std::unique_ptr<ScriptWrappableVisitor> m_savedVisitor;
|
| + };
|
| +
|
| void setScriptWrappableVisitor(
|
| std::unique_ptr<ScriptWrappableVisitor> visitor) {
|
| m_scriptWrappableVisitor = std::move(visitor);
|
|
|