wexond / browser-base

Modern and feature-rich web browser base based on Electron
https://wexond.net
2.67k stars 408 forks source link

The `BrowserView`s are not getting destroyed after closing the `BrowserWindow` #653

Open msynk opened 2 years ago

msynk commented 2 years ago

Currently, the clear method of the ViewManager class is using the Object.values method on the views list which is a Map as follows:

image

since the Object.values does not work on a Map and returns an empty array, the views are not getting destroyed. (just try Object.values(new Map([['a', {a:1}], ['b', {b:2}]])) in the console)

for example, if you have multiple windows open and in one of them a video is playing, after closing that window the video keeps playing until the app is closed.

msynk commented 2 years ago

I'm not sure why the Object.values method is used in this line, but the fix is simply to remove it and use the forEach method on the this.views itself, something like this:

this.views.forEach((x: View) => x.destroy())

if it's ok I can create a new PR for this change 😊

msynk commented 2 years ago

there are some other usages of the Object.values the same way, that I think have the same problem.