exit HTML fullscreen when window leaves fullscreen (#13090)

This commit is contained in:
Milan Burda 2018-06-18 09:48:20 +02:00 committed by Cheng Zhao
parent 28fd571d0c
commit 2eb5b751f3
3 changed files with 32 additions and 0 deletions

View file

@ -270,6 +270,14 @@ void BrowserWindow::OnWindowResize() {
TopLevelWindow::OnWindowResize(); TopLevelWindow::OnWindowResize();
} }
void BrowserWindow::OnWindowLeaveFullScreen() {
TopLevelWindow::OnWindowLeaveFullScreen();
#if defined(OS_MACOSX)
if (web_contents()->IsFullscreenForCurrentTab())
web_contents()->ExitFullscreen(true);
#endif
}
void BrowserWindow::Focus() { void BrowserWindow::Focus() {
if (api_web_contents_->IsOffScreen()) if (api_web_contents_->IsOffScreen())
FocusOnWebView(); FocusOnWebView();

View file

@ -66,6 +66,7 @@ class BrowserWindow : public TopLevelWindow,
void OnWindowBlur() override; void OnWindowBlur() override;
void OnWindowFocus() override; void OnWindowFocus() override;
void OnWindowResize() override; void OnWindowResize() override;
void OnWindowLeaveFullScreen() override;
void Focus() override; void Focus() override;
void Blur() override; void Blur() override;
void SetBackgroundColor(const std::string& color_name) override; void SetBackgroundColor(const std::string& color_name) override;

View file

@ -2590,6 +2590,29 @@ describe('BrowserWindow module', () => {
}) })
}) })
describe('BrowserWindow.setFullScreen(false) when HTML fullscreen', () => {
before(function () {
if (process.platform !== 'darwin') {
this.skip()
}
})
it('exits HTML fullscreen when window leaves fullscreen', (done) => {
w.destroy()
w = new BrowserWindow()
w.webContents.once('did-finish-load', () => {
w.once('enter-full-screen', () => {
w.once('leave-html-full-screen', () => {
done()
})
w.setFullScreen(false)
})
w.webContents.executeJavaScript('document.body.webkitRequestFullscreen()', true)
})
w.loadURL('about:blank')
})
})
describe('parent window', () => { describe('parent window', () => {
let c = null let c = null