| 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..2b5bd4d9e5a9afa300fae8fe971148312a8d2d60 100644
|
| --- a/third_party/WebKit/Source/bindings/core/v8/V8PerIsolateData.h
|
| +++ b/third_party/WebKit/Source/bindings/core/v8/V8PerIsolateData.h
|
| @@ -167,6 +167,32 @@ class CORE_EXPORT V8PerIsolateData {
|
| return m_activeScriptWrappables.get();
|
| }
|
|
|
| + class TemporaryScriptWrappableVisitorScope {
|
| + WTF_MAKE_NONCOPYABLE(TemporaryScriptWrappableVisitorScope);
|
| + STACK_ALLOCATED();
|
| +
|
| + public:
|
| + TemporaryScriptWrappableVisitorScope(v8::Isolate* isolate,
|
| + ScriptWrappableVisitor* visitor)
|
| + : m_isolate(isolate) {
|
| + m_savedVisitor = currentVisitor(m_isolate);
|
| + swapInNewVisitor(visitor);
|
| + }
|
| + ~TemporaryScriptWrappableVisitorScope() {
|
| + swapInNewVisitor(m_savedVisitor);
|
| + }
|
| +
|
| + private:
|
| + inline ScriptWrappableVisitor* currentVisitor(v8::Isolate* isolate) {
|
| + return V8PerIsolateData::from(m_isolate)->scriptWrappableVisitor();
|
| + }
|
| +
|
| + void swapInNewVisitor(ScriptWrappableVisitor*);
|
| +
|
| + v8::Isolate* m_isolate;
|
| + ScriptWrappableVisitor* m_savedVisitor;
|
| + };
|
| +
|
| void setScriptWrappableVisitor(
|
| std::unique_ptr<ScriptWrappableVisitor> visitor) {
|
| m_scriptWrappableVisitor = std::move(visitor);
|
|
|