refactor: allocate gin_helper::internal::Event on cpp heap (#48161)

This commit is contained in:
Robo 2025-08-27 09:30:50 +09:00 committed by GitHub
commit e0db4046b2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
15 changed files with 156 additions and 116 deletions

View file

@ -194,14 +194,15 @@ void BaseWindow::OnWindowQueryEndSession(
v8::Isolate* isolate = JavascriptEnvironment::GetIsolate();
v8::HandleScope handle_scope(isolate);
gin_helper::Handle<gin_helper::internal::Event> event =
gin_helper::internal::Event* event =
gin_helper::internal::Event::New(isolate);
v8::Local<v8::Object> event_object = event.ToV8().As<v8::Object>();
v8::Local<v8::Object> event_object =
event->GetWrapper(isolate).ToLocalChecked();
gin::Dictionary dict(isolate, event_object);
dict.Set("reasons", reasons);
EmitWithoutEvent("query-session-end", event);
EmitWithoutEvent("query-session-end", event_object);
if (event->GetDefaultPrevented()) {
*prevent_default = true;
}
@ -211,14 +212,15 @@ void BaseWindow::OnWindowEndSession(const std::vector<std::string>& reasons) {
v8::Isolate* isolate = JavascriptEnvironment::GetIsolate();
v8::HandleScope handle_scope(isolate);
gin_helper::Handle<gin_helper::internal::Event> event =
gin_helper::internal::Event* event =
gin_helper::internal::Event::New(isolate);
v8::Local<v8::Object> event_object = event.ToV8().As<v8::Object>();
v8::Local<v8::Object> event_object =
event->GetWrapper(isolate).ToLocalChecked();
gin::Dictionary dict(isolate, event_object);
dict.Set("reasons", reasons);
EmitWithoutEvent("session-end", event);
EmitWithoutEvent("session-end", event_object);
}
void BaseWindow::OnWindowBlur() {