Browse Source

feat: support fullScreen BrowserWindow property (#23145)

Shelley Vohr 5 years ago
parent
commit
f3dc3997b1

+ 4 - 0
docs/api/browser-window.md

@@ -807,6 +807,10 @@ hide it immediately.
 
 A `Boolean` property that determines whether the window is in simple (pre-Lion) fullscreen mode.
 
+#### `win.fullScreen`
+
+A `Boolean` property that determines whether the window is in fullscreen mode.
+
 #### `win.visibleOnAllWorkspaces`
 
 A `Boolean` property that determines whether the window is visible on all workspaces.

+ 5 - 0
lib/browser/api/top-level-window.js

@@ -29,6 +29,11 @@ Object.defineProperty(TopLevelWindow.prototype, 'visibleOnAllWorkspaces', {
   set: function (visible) { this.setVisibleOnAllWorkspaces(visible); }
 });
 
+Object.defineProperty(TopLevelWindow.prototype, 'fullScreen', {
+  get: function () { return this.isFullScreen(); },
+  set: function (full) { this.setFullScreen(full); }
+});
+
 Object.defineProperty(TopLevelWindow.prototype, 'simpleFullScreen', {
   get: function () { return this.isSimpleFullScreen(); },
   set: function (simple) { this.setSimpleFullScreen(simple); }

+ 66 - 15
spec-main/api-browser-window-spec.ts

@@ -1010,27 +1010,78 @@ describe('BrowserWindow module', () => {
       });
 
       ifdescribe(process.platform === 'win32')(`Fullscreen state`, () => {
-        it(`checks normal bounds when fullscreen'ed`, (done) => {
-          const bounds = w.getBounds();
-          w.once('enter-full-screen', () => {
-            expectBoundsEqual(w.getNormalBounds(), bounds);
-            done();
+        it('with properties', () => {
+          it('can be set with the fullscreen constructor option', () => {
+            w = new BrowserWindow({ fullscreen: true });
+            expect(w.fullScreen).to.be.true();
+          });
+
+          it('can be changed', () => {
+            w.fullScreen = false;
+            expect(w.fullScreen).to.be.false();
+            w.fullScreen = true;
+            expect(w.fullScreen).to.be.true();
+          });
+
+          it(`checks normal bounds when fullscreen'ed`, (done) => {
+            const bounds = w.getBounds();
+            w.once('enter-full-screen', () => {
+              expectBoundsEqual(w.getNormalBounds(), bounds);
+              done();
+            });
+            w.show();
+            w.fullScreen = true;
+          });
+
+          it(`checks normal bounds when unfullscreen'ed`, (done) => {
+            const bounds = w.getBounds();
+            w.once('enter-full-screen', () => {
+              w.fullScreen = false;
+            });
+            w.once('leave-full-screen', () => {
+              expectBoundsEqual(w.getNormalBounds(), bounds);
+              done();
+            });
+            w.show();
+            w.fullScreen = true;
           });
-          w.show();
-          w.setFullScreen(true);
         });
 
-        it(`checks normal bounds when unfullscreen'ed`, (done) => {
-          const bounds = w.getBounds();
-          w.once('enter-full-screen', () => {
+        it('with functions', () => {
+          it('can be set with the fullscreen constructor option', () => {
+            w = new BrowserWindow({ fullscreen: true });
+            expect(w.isFullScreen()).to.be.true();
+          });
+
+          it('can be changed', () => {
             w.setFullScreen(false);
+            expect(w.isFullScreen()).to.be.false();
+            w.setFullScreen(true);
+            expect(w.isFullScreen()).to.be.true();
           });
-          w.once('leave-full-screen', () => {
-            expectBoundsEqual(w.getNormalBounds(), bounds);
-            done();
+
+          it(`checks normal bounds when fullscreen'ed`, (done) => {
+            const bounds = w.getBounds();
+            w.once('enter-full-screen', () => {
+              expectBoundsEqual(w.getNormalBounds(), bounds);
+              done();
+            });
+            w.show();
+            w.setFullScreen(true);
+          });
+
+          it(`checks normal bounds when unfullscreen'ed`, (done) => {
+            const bounds = w.getBounds();
+            w.once('enter-full-screen', () => {
+              w.setFullScreen(false);
+            });
+            w.once('leave-full-screen', () => {
+              expectBoundsEqual(w.getNormalBounds(), bounds);
+              done();
+            });
+            w.show();
+            w.setFullScreen(true);
           });
-          w.show();
-          w.setFullScreen(true);
         });
       });
     });