From 436a6d5c0ffca72eca7cbe2916250428a575ea19 Mon Sep 17 00:00:00 2001 From: Daijiro Wachi Date: Sat, 14 Jan 2017 00:04:51 +0100 Subject: [PATCH 1/2] Save a fullScreen state for Kiosk mode --- atom/browser/native_window_mac.h | 2 ++ atom/browser/native_window_mac.mm | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/atom/browser/native_window_mac.h b/atom/browser/native_window_mac.h index d5b1b501536..759e51e3623 100644 --- a/atom/browser/native_window_mac.h +++ b/atom/browser/native_window_mac.h @@ -162,6 +162,8 @@ class NativeWindowMac : public NativeWindow, bool is_kiosk_; + bool was_fullscreen_; + bool zoom_to_page_width_; NSInteger attention_request_id_; // identifier from requestUserAttention diff --git a/atom/browser/native_window_mac.mm b/atom/browser/native_window_mac.mm index 76d9a372810..15e3cb4439c 100644 --- a/atom/browser/native_window_mac.mm +++ b/atom/browser/native_window_mac.mm @@ -619,6 +619,7 @@ NativeWindowMac::NativeWindowMac( NativeWindow* parent) : NativeWindow(web_contents, options, parent), is_kiosk_(false), + was_fullscreen_(false), zoom_to_page_width_(false), attention_request_id_(0), title_bar_style_(NORMAL) { @@ -1126,10 +1127,11 @@ void NativeWindowMac::SetKiosk(bool kiosk) { NSApplicationPresentationDisableHideApplication; [NSApp setPresentationOptions:options]; is_kiosk_ = true; + was_fullscreen_ = IsFullscreen(); SetFullScreen(true); } else if (!kiosk && is_kiosk_) { is_kiosk_ = false; - SetFullScreen(false); + if (!was_fullscreen_) SetFullScreen(false); [NSApp setPresentationOptions:kiosk_options_]; } } From b97db68f0c0d25737ecf9f3e5139708dc39b4dc0 Mon Sep 17 00:00:00 2001 From: Daijiro Wachi Date: Sat, 14 Jan 2017 00:05:04 +0100 Subject: [PATCH 2/2] add tests to fullScreen and Kiosk --- spec/api-browser-window-spec.js | 36 +++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/spec/api-browser-window-spec.js b/spec/api-browser-window-spec.js index ab5d6d2d0d0..bb41e9e442e 100644 --- a/spec/api-browser-window-spec.js +++ b/spec/api-browser-window-spec.js @@ -1417,6 +1417,42 @@ describe('BrowserWindow module', function () { }) }) + describe('kiosk state', function () { + // Only implemented on macOS. + if (process.platform !== 'darwin') return + + it('can be changed with setKiosk method', function () { + w.destroy() + w = new BrowserWindow() + w.setKiosk(true) + assert.equal(w.isKiosk(), true) + w.setKiosk(false) + assert.equal(w.isKiosk(), false) + }) + }) + + describe('fullscreen state', function () { + // Only implemented on macOS. + if (process.platform !== 'darwin') return + + it('can be changed with setFullScreen method', function () { + w.destroy() + w = new BrowserWindow() + w.setFullScreen(true) + assert.equal(w.isFullScreen(), true) + w.setFullScreen(false) + assert.equal(w.isFullScreen(), false) + }) + + it('should not be changed by setKiosk method', function () { + w.setFullScreen(true) + assert.equal(w.isFullScreen(), true) + w.setKiosk(true) + w.setKiosk(false) + assert.equal(w.isFullScreen(), true) + }) + }) + describe('closable state', function () { it('can be changed with closable option', function () { w.destroy()