fix: BrowserWindow.fromBrowserView in multiple-BrowserView windows (#26493)
This commit is contained in:
parent
040ee66678
commit
7c2ac6b7c1
2 changed files with 18 additions and 6 deletions
|
@ -96,11 +96,7 @@ BrowserWindow.fromWebContents = (webContents: WebContents) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
BrowserWindow.fromBrowserView = (browserView: BrowserView) => {
|
BrowserWindow.fromBrowserView = (browserView: BrowserView) => {
|
||||||
for (const window of BrowserWindow.getAllWindows()) {
|
return BrowserWindow.fromWebContents(browserView.webContents);
|
||||||
if (window.getBrowserView() === browserView) return window;
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
BrowserWindow.prototype.setTouchBar = function (touchBar) {
|
BrowserWindow.prototype.setTouchBar = function (touchBar) {
|
||||||
|
|
|
@ -1634,7 +1634,7 @@ describe('BrowserWindow module', () => {
|
||||||
describe('BrowserWindow.fromBrowserView(browserView)', () => {
|
describe('BrowserWindow.fromBrowserView(browserView)', () => {
|
||||||
afterEach(closeAllWindows);
|
afterEach(closeAllWindows);
|
||||||
|
|
||||||
it('returns the window with the browserView', () => {
|
it('returns the window with the BrowserView', () => {
|
||||||
const w = new BrowserWindow({ show: false });
|
const w = new BrowserWindow({ show: false });
|
||||||
const bv = new BrowserView();
|
const bv = new BrowserView();
|
||||||
w.setBrowserView(bv);
|
w.setBrowserView(bv);
|
||||||
|
@ -1645,6 +1645,22 @@ describe('BrowserWindow module', () => {
|
||||||
expect(BrowserWindow.fromBrowserView(bv)!.id).to.equal(w.id);
|
expect(BrowserWindow.fromBrowserView(bv)!.id).to.equal(w.id);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('returns the window when there are multiple BrowserViews', () => {
|
||||||
|
const w = new BrowserWindow({ show: false });
|
||||||
|
const bv1 = new BrowserView();
|
||||||
|
w.addBrowserView(bv1);
|
||||||
|
const bv2 = new BrowserView();
|
||||||
|
w.addBrowserView(bv2);
|
||||||
|
defer(() => {
|
||||||
|
w.removeBrowserView(bv1);
|
||||||
|
w.removeBrowserView(bv2);
|
||||||
|
(bv1.webContents as any).destroy();
|
||||||
|
(bv2.webContents as any).destroy();
|
||||||
|
});
|
||||||
|
expect(BrowserWindow.fromBrowserView(bv1)!.id).to.equal(w.id);
|
||||||
|
expect(BrowserWindow.fromBrowserView(bv2)!.id).to.equal(w.id);
|
||||||
|
});
|
||||||
|
|
||||||
it('returns undefined if not attached', () => {
|
it('returns undefined if not attached', () => {
|
||||||
const bv = new BrowserView();
|
const bv = new BrowserView();
|
||||||
defer(() => {
|
defer(() => {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue