Skip to content

Commit aaca901

Browse files
authored
fix: [wc|bw]-created events do not emit an event object (electron#19465)
* fix: emit real Event instead of empty object in [wc|bw] * chore: add ability to emit empty events
1 parent 33d1e87 commit aaca901

5 files changed

Lines changed: 17 additions & 2 deletions

File tree

lib/browser/api/browser-window.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,8 @@ BrowserWindow.prototype._init = function () {
8282
}
8383

8484
// Notify the creation of the window.
85-
app.emit('browser-window-created', {}, this)
85+
const event = process.electronBinding('event').createEmpty()
86+
app.emit('browser-window-created', event, this)
8687

8788
Object.defineProperty(this, 'devToolsWebContents', {
8889
enumerable: true,

lib/browser/api/web-contents.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -413,7 +413,8 @@ WebContents.prototype._init = function () {
413413
})
414414
}
415415

416-
app.emit('web-contents-created', {}, this)
416+
const event = process.electronBinding('event').createEmpty()
417+
app.emit('web-contents-created', event, this)
417418
}
418419

419420
// Deprecations

shell/browser/api/atom_api_event.cc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,17 @@ v8::Local<v8::Object> CreateWithSender(v8::Isolate* isolate,
1313
return mate::internal::CreateJSEvent(isolate, sender, nullptr, base::nullopt);
1414
}
1515

16+
v8::Local<v8::Object> CreateEmpty(v8::Isolate* isolate) {
17+
return mate::internal::CreateEmptyJSEvent(isolate);
18+
}
19+
1620
void Initialize(v8::Local<v8::Object> exports,
1721
v8::Local<v8::Value> unused,
1822
v8::Local<v8::Context> context,
1923
void* priv) {
2024
mate::Dictionary dict(context->GetIsolate(), exports);
2125
dict.SetMethod("createWithSender", &CreateWithSender);
26+
dict.SetMethod("createEmpty", &CreateEmpty);
2227
}
2328

2429
} // namespace

shell/browser/api/event_emitter.cc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,13 @@ v8::Local<v8::Object> CreateJSEvent(
6767
return event;
6868
}
6969

70+
v8::Local<v8::Object> CreateEmptyJSEvent(v8::Isolate* isolate) {
71+
mate::Handle<mate::Event> native_event = mate::Event::Create(isolate);
72+
v8::Local<v8::Object> event =
73+
v8::Local<v8::Object>::Cast(native_event.ToV8());
74+
return event;
75+
}
76+
7077
v8::Local<v8::Object> CreateCustomEvent(v8::Isolate* isolate,
7178
v8::Local<v8::Object> object,
7279
v8::Local<v8::Object> custom_event) {

shell/browser/api/event_emitter.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ v8::Local<v8::Object> CreateJSEvent(
2828
content::RenderFrameHost* sender,
2929
base::Optional<electron::mojom::ElectronBrowser::MessageSyncCallback>
3030
callback);
31+
v8::Local<v8::Object> CreateEmptyJSEvent(v8::Isolate* isolate);
3132
v8::Local<v8::Object> CreateCustomEvent(v8::Isolate* isolate,
3233
v8::Local<v8::Object> object,
3334
v8::Local<v8::Object> event);

0 commit comments

Comments
 (0)