fix: segfault on webContents.fromId(xxx) (#26609)
This commit is contained in:
parent
abb1504ecc
commit
329494cfeb
3 changed files with 15 additions and 2 deletions
|
@ -42,7 +42,8 @@ returns `null`.
|
||||||
|
|
||||||
* `id` Integer
|
* `id` Integer
|
||||||
|
|
||||||
Returns `WebContents` - A WebContents instance with the given ID.
|
Returns `WebContents` | undefined - A WebContents instance with the given ID, or
|
||||||
|
`undefined` if there is no WebContents associated with the given ID.
|
||||||
|
|
||||||
## Class: WebContents
|
## Class: WebContents
|
||||||
|
|
||||||
|
|
|
@ -3781,6 +3781,12 @@ namespace {
|
||||||
using electron::api::GetAllWebContents;
|
using electron::api::GetAllWebContents;
|
||||||
using electron::api::WebContents;
|
using electron::api::WebContents;
|
||||||
|
|
||||||
|
gin::Handle<WebContents> WebContentsFromID(v8::Isolate* isolate, int32_t id) {
|
||||||
|
WebContents* contents = WebContents::FromID(id);
|
||||||
|
return contents ? gin::CreateHandle(isolate, contents)
|
||||||
|
: gin::Handle<WebContents>();
|
||||||
|
}
|
||||||
|
|
||||||
std::vector<gin::Handle<WebContents>> GetAllWebContentsAsV8(
|
std::vector<gin::Handle<WebContents>> GetAllWebContentsAsV8(
|
||||||
v8::Isolate* isolate) {
|
v8::Isolate* isolate) {
|
||||||
std::vector<gin::Handle<WebContents>> list;
|
std::vector<gin::Handle<WebContents>> list;
|
||||||
|
@ -3798,7 +3804,7 @@ void Initialize(v8::Local<v8::Object> exports,
|
||||||
v8::Isolate* isolate = context->GetIsolate();
|
v8::Isolate* isolate = context->GetIsolate();
|
||||||
gin_helper::Dictionary dict(isolate, exports);
|
gin_helper::Dictionary dict(isolate, exports);
|
||||||
dict.Set("WebContents", WebContents::GetConstructor(context));
|
dict.Set("WebContents", WebContents::GetConstructor(context));
|
||||||
dict.SetMethod("fromId", &WebContents::FromID);
|
dict.SetMethod("fromId", &WebContentsFromID);
|
||||||
dict.SetMethod("getAllWebContents", &GetAllWebContentsAsV8);
|
dict.SetMethod("getAllWebContents", &GetAllWebContentsAsV8);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -42,6 +42,12 @@ describe('webContents module', () => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('fromId()', () => {
|
||||||
|
it('returns undefined for an unknown id', () => {
|
||||||
|
expect(webContents.fromId(12345)).to.be.undefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe('will-prevent-unload event', function () {
|
describe('will-prevent-unload event', function () {
|
||||||
afterEach(closeAllWindows);
|
afterEach(closeAllWindows);
|
||||||
it('does not emit if beforeunload returns undefined', async () => {
|
it('does not emit if beforeunload returns undefined', async () => {
|
||||||
|
|
Loading…
Reference in a new issue