diff --git a/shell/common/gin_helper/promise.cc b/shell/common/gin_helper/promise.cc index 9fef990ab6e..bd162c426ef 100644 --- a/shell/common/gin_helper/promise.cc +++ b/shell/common/gin_helper/promise.cc @@ -30,35 +30,38 @@ PromiseBase& PromiseBase::operator=(PromiseBase&&) = default; v8::Maybe PromiseBase::Reject() { v8::HandleScope handle_scope(isolate()); + v8::Local context = GetContext(); gin_helper::MicrotasksScope microtasks_scope{ - isolate(), GetContext()->GetMicrotaskQueue(), false, + isolate(), context->GetMicrotaskQueue(), false, v8::MicrotasksScope::kRunMicrotasks}; - v8::Context::Scope context_scope(GetContext()); + v8::Context::Scope context_scope(context); - return GetInner()->Reject(GetContext(), v8::Undefined(isolate())); + return GetInner()->Reject(context, v8::Undefined(isolate())); } v8::Maybe PromiseBase::Reject(v8::Local except) { v8::HandleScope handle_scope(isolate()); + v8::Local context = GetContext(); gin_helper::MicrotasksScope microtasks_scope{ - isolate(), GetContext()->GetMicrotaskQueue(), false, + isolate(), context->GetMicrotaskQueue(), false, v8::MicrotasksScope::kRunMicrotasks}; - v8::Context::Scope context_scope(GetContext()); + v8::Context::Scope context_scope(context); - return GetInner()->Reject(GetContext(), except); + return GetInner()->Reject(context, except); } v8::Maybe PromiseBase::RejectWithErrorMessage( const std::string_view message) { v8::HandleScope handle_scope(isolate()); + v8::Local context = GetContext(); gin_helper::MicrotasksScope microtasks_scope{ - isolate(), GetContext()->GetMicrotaskQueue(), false, + isolate(), context->GetMicrotaskQueue(), false, v8::MicrotasksScope::kRunMicrotasks}; - v8::Context::Scope context_scope(GetContext()); + v8::Context::Scope context_scope(context); v8::Local error = v8::Exception::Error(gin::StringToV8(isolate(), message)); - return GetInner()->Reject(GetContext(), (error)); + return GetInner()->Reject(context, (error)); } v8::Local PromiseBase::GetContext() const { @@ -95,12 +98,13 @@ v8::Local Promise::ResolvedPromise(v8::Isolate* isolate) { v8::Maybe Promise::Resolve() { v8::HandleScope handle_scope(isolate()); + v8::Local context = GetContext(); gin_helper::MicrotasksScope microtasks_scope{ - isolate(), GetContext()->GetMicrotaskQueue(), false, + isolate(), context->GetMicrotaskQueue(), false, v8::MicrotasksScope::kRunMicrotasks}; - v8::Context::Scope context_scope(GetContext()); + v8::Context::Scope context_scope(context); - return GetInner()->Resolve(GetContext(), v8::Undefined(isolate())); + return GetInner()->Resolve(context, v8::Undefined(isolate())); } } // namespace gin_helper diff --git a/shell/common/gin_helper/promise.h b/shell/common/gin_helper/promise.h index e46c5991ee7..e220bd6291e 100644 --- a/shell/common/gin_helper/promise.h +++ b/shell/common/gin_helper/promise.h @@ -123,13 +123,13 @@ class Promise : public PromiseBase { v8::Maybe Resolve(const RT& value) { gin_helper::Locker locker(isolate()); v8::HandleScope handle_scope(isolate()); + v8::Local context = GetContext(); gin_helper::MicrotasksScope microtasks_scope{ - isolate(), GetContext()->GetMicrotaskQueue(), false, + isolate(), context->GetMicrotaskQueue(), false, v8::MicrotasksScope::kRunMicrotasks}; - v8::Context::Scope context_scope(GetContext()); + v8::Context::Scope context_scope(context); - return GetInner()->Resolve(GetContext(), - gin::ConvertToV8(isolate(), value)); + return GetInner()->Resolve(context, gin::ConvertToV8(isolate(), value)); } template @@ -144,12 +144,13 @@ class Promise : public PromiseBase { "promises resolve type"); gin_helper::Locker locker(isolate()); v8::HandleScope handle_scope(isolate()); - v8::Context::Scope context_scope(GetContext()); + v8::Local context = GetContext(); + v8::Context::Scope context_scope(context); v8::Local value = gin::ConvertToV8(isolate(), std::move(cb)); v8::Local handler = value.As(); - return GetHandle()->Then(GetContext(), handler); + return GetHandle()->Then(context, handler); } };