| Index: gin/isolate_holder.cc
|
| diff --git a/gin/isolate_holder.cc b/gin/isolate_holder.cc
|
| index db4473ec0f9ee3d3976f8521523fd6a5459dbb18..00e9d845bd067327fbf90838b96ab08fccc9732f 100644
|
| --- a/gin/isolate_holder.cc
|
| +++ b/gin/isolate_holder.cc
|
| @@ -8,6 +8,7 @@
|
| #include <string.h>
|
|
|
| #include "base/logging.h"
|
| +#include "base/message_loop/message_loop.h"
|
| #include "base/rand_util.h"
|
| #include "base/sys_info.h"
|
| #include "gin/array_buffer.h"
|
| @@ -15,6 +16,7 @@
|
| #include "gin/function_template.h"
|
| #include "gin/per_isolate_data.h"
|
| #include "gin/public/v8_platform.h"
|
| +#include "gin/run_microtasks_observer.h"
|
|
|
| namespace gin {
|
|
|
| @@ -43,6 +45,8 @@ IsolateHolder::IsolateHolder() {
|
| }
|
|
|
| IsolateHolder::~IsolateHolder() {
|
| + if (task_observer_.get())
|
| + base::MessageLoop::current()->RemoveTaskObserver(task_observer_.get());
|
| isolate_data_.reset();
|
| isolate_->Dispose();
|
| }
|
| @@ -66,4 +70,16 @@ void IsolateHolder::Initialize(ScriptMode mode,
|
| v8_is_initialized = true;
|
| }
|
|
|
| +void IsolateHolder::AddRunMicrotasksObserver() {
|
| + DCHECK(!task_observer_.get());
|
| + task_observer_.reset(new RunMicrotasksObserver(isolate_));;
|
| + base::MessageLoop::current()->AddTaskObserver(task_observer_.get());
|
| +}
|
| +
|
| +void IsolateHolder::RemoveRunMicrotasksObserver() {
|
| + DCHECK(task_observer_.get());
|
| + base::MessageLoop::current()->RemoveTaskObserver(task_observer_.get());
|
| + task_observer_.reset();
|
| +}
|
| +
|
| } // namespace gin
|
|
|