mirror of
https://github.com/electron/electron.git
synced 2026-01-09 23:48:01 -05:00
fix: handle empty event scenario in ipc callbacks (#48987)
This commit is contained in:
@@ -49,6 +49,8 @@ void ElectronApiIPCHandlerImpl::Message(bool internal,
|
|||||||
v8::Isolate* isolate = electron::JavascriptEnvironment::GetIsolate();
|
v8::Isolate* isolate = electron::JavascriptEnvironment::GetIsolate();
|
||||||
v8::HandleScope handle_scope(isolate);
|
v8::HandleScope handle_scope(isolate);
|
||||||
auto* event = MakeIPCEvent(isolate, session->Get(), internal);
|
auto* event = MakeIPCEvent(isolate, session->Get(), internal);
|
||||||
|
if (!event)
|
||||||
|
return;
|
||||||
v8::Local<v8::Object> event_object =
|
v8::Local<v8::Object> event_object =
|
||||||
event->GetWrapper(isolate).ToLocalChecked();
|
event->GetWrapper(isolate).ToLocalChecked();
|
||||||
session->Get()->Message(event_object, channel, std::move(arguments));
|
session->Get()->Message(event_object, channel, std::move(arguments));
|
||||||
@@ -64,6 +66,8 @@ void ElectronApiIPCHandlerImpl::Invoke(bool internal,
|
|||||||
v8::HandleScope handle_scope(isolate);
|
v8::HandleScope handle_scope(isolate);
|
||||||
auto* event =
|
auto* event =
|
||||||
MakeIPCEvent(isolate, session->Get(), internal, std::move(callback));
|
MakeIPCEvent(isolate, session->Get(), internal, std::move(callback));
|
||||||
|
if (!event)
|
||||||
|
return;
|
||||||
v8::Local<v8::Object> event_object =
|
v8::Local<v8::Object> event_object =
|
||||||
event->GetWrapper(isolate).ToLocalChecked();
|
event->GetWrapper(isolate).ToLocalChecked();
|
||||||
session->Get()->Invoke(event_object, channel, std::move(arguments));
|
session->Get()->Invoke(event_object, channel, std::move(arguments));
|
||||||
@@ -78,6 +82,8 @@ void ElectronApiIPCHandlerImpl::ReceivePostMessage(
|
|||||||
v8::Isolate* isolate = electron::JavascriptEnvironment::GetIsolate();
|
v8::Isolate* isolate = electron::JavascriptEnvironment::GetIsolate();
|
||||||
v8::HandleScope handle_scope(isolate);
|
v8::HandleScope handle_scope(isolate);
|
||||||
auto* event = MakeIPCEvent(isolate, session->Get(), false);
|
auto* event = MakeIPCEvent(isolate, session->Get(), false);
|
||||||
|
if (!event)
|
||||||
|
return;
|
||||||
v8::Local<v8::Object> event_object =
|
v8::Local<v8::Object> event_object =
|
||||||
event->GetWrapper(isolate).ToLocalChecked();
|
event->GetWrapper(isolate).ToLocalChecked();
|
||||||
session->Get()->ReceivePostMessage(event_object, channel,
|
session->Get()->ReceivePostMessage(event_object, channel,
|
||||||
@@ -95,6 +101,8 @@ void ElectronApiIPCHandlerImpl::MessageSync(bool internal,
|
|||||||
v8::HandleScope handle_scope(isolate);
|
v8::HandleScope handle_scope(isolate);
|
||||||
auto* event =
|
auto* event =
|
||||||
MakeIPCEvent(isolate, session->Get(), internal, std::move(callback));
|
MakeIPCEvent(isolate, session->Get(), internal, std::move(callback));
|
||||||
|
if (!event)
|
||||||
|
return;
|
||||||
v8::Local<v8::Object> event_object =
|
v8::Local<v8::Object> event_object =
|
||||||
event->GetWrapper(isolate).ToLocalChecked();
|
event->GetWrapper(isolate).ToLocalChecked();
|
||||||
session->Get()->MessageSync(event_object, channel, std::move(arguments));
|
session->Get()->MessageSync(event_object, channel, std::move(arguments));
|
||||||
@@ -108,6 +116,8 @@ void ElectronApiIPCHandlerImpl::MessageHost(const std::string& channel,
|
|||||||
v8::Isolate* isolate = electron::JavascriptEnvironment::GetIsolate();
|
v8::Isolate* isolate = electron::JavascriptEnvironment::GetIsolate();
|
||||||
v8::HandleScope handle_scope(isolate);
|
v8::HandleScope handle_scope(isolate);
|
||||||
auto* event = MakeIPCEvent(isolate, session->Get(), false);
|
auto* event = MakeIPCEvent(isolate, session->Get(), false);
|
||||||
|
if (!event)
|
||||||
|
return;
|
||||||
v8::Local<v8::Object> event_object =
|
v8::Local<v8::Object> event_object =
|
||||||
event->GetWrapper(isolate).ToLocalChecked();
|
event->GetWrapper(isolate).ToLocalChecked();
|
||||||
session->Get()->MessageHost(event_object, channel, std::move(arguments));
|
session->Get()->MessageHost(event_object, channel, std::move(arguments));
|
||||||
|
|||||||
@@ -76,6 +76,8 @@ void ElectronApiSWIPCHandlerImpl::Message(bool internal,
|
|||||||
v8::Isolate* isolate = electron::JavascriptEnvironment::GetIsolate();
|
v8::Isolate* isolate = electron::JavascriptEnvironment::GetIsolate();
|
||||||
v8::HandleScope handle_scope(isolate);
|
v8::HandleScope handle_scope(isolate);
|
||||||
auto* event = MakeIPCEvent(isolate, session->Get(), internal);
|
auto* event = MakeIPCEvent(isolate, session->Get(), internal);
|
||||||
|
if (!event)
|
||||||
|
return;
|
||||||
v8::Local<v8::Object> event_object =
|
v8::Local<v8::Object> event_object =
|
||||||
event->GetWrapper(isolate).ToLocalChecked();
|
event->GetWrapper(isolate).ToLocalChecked();
|
||||||
session->Get()->Message(event_object, channel, std::move(arguments));
|
session->Get()->Message(event_object, channel, std::move(arguments));
|
||||||
@@ -92,6 +94,8 @@ void ElectronApiSWIPCHandlerImpl::Invoke(bool internal,
|
|||||||
v8::HandleScope handle_scope(isolate);
|
v8::HandleScope handle_scope(isolate);
|
||||||
auto* event =
|
auto* event =
|
||||||
MakeIPCEvent(isolate, session->Get(), internal, std::move(callback));
|
MakeIPCEvent(isolate, session->Get(), internal, std::move(callback));
|
||||||
|
if (!event)
|
||||||
|
return;
|
||||||
v8::Local<v8::Object> event_object =
|
v8::Local<v8::Object> event_object =
|
||||||
event->GetWrapper(isolate).ToLocalChecked();
|
event->GetWrapper(isolate).ToLocalChecked();
|
||||||
session->Get()->Invoke(event_object, channel, std::move(arguments));
|
session->Get()->Invoke(event_object, channel, std::move(arguments));
|
||||||
@@ -106,6 +110,8 @@ void ElectronApiSWIPCHandlerImpl::ReceivePostMessage(
|
|||||||
v8::Isolate* isolate = electron::JavascriptEnvironment::GetIsolate();
|
v8::Isolate* isolate = electron::JavascriptEnvironment::GetIsolate();
|
||||||
v8::HandleScope handle_scope(isolate);
|
v8::HandleScope handle_scope(isolate);
|
||||||
auto* event = MakeIPCEvent(isolate, session->Get(), false);
|
auto* event = MakeIPCEvent(isolate, session->Get(), false);
|
||||||
|
if (!event)
|
||||||
|
return;
|
||||||
v8::Local<v8::Object> event_object =
|
v8::Local<v8::Object> event_object =
|
||||||
event->GetWrapper(isolate).ToLocalChecked();
|
event->GetWrapper(isolate).ToLocalChecked();
|
||||||
session->Get()->ReceivePostMessage(event_object, channel,
|
session->Get()->ReceivePostMessage(event_object, channel,
|
||||||
@@ -123,6 +129,8 @@ void ElectronApiSWIPCHandlerImpl::MessageSync(bool internal,
|
|||||||
v8::HandleScope handle_scope(isolate);
|
v8::HandleScope handle_scope(isolate);
|
||||||
auto* event =
|
auto* event =
|
||||||
MakeIPCEvent(isolate, session->Get(), internal, std::move(callback));
|
MakeIPCEvent(isolate, session->Get(), internal, std::move(callback));
|
||||||
|
if (!event)
|
||||||
|
return;
|
||||||
v8::Local<v8::Object> event_object =
|
v8::Local<v8::Object> event_object =
|
||||||
event->GetWrapper(isolate).ToLocalChecked();
|
event->GetWrapper(isolate).ToLocalChecked();
|
||||||
session->Get()->MessageSync(event_object, channel, std::move(arguments));
|
session->Get()->MessageSync(event_object, channel, std::move(arguments));
|
||||||
|
|||||||
Reference in New Issue
Block a user