From 10f043acc34ad79d0fe589e306da0f826ba97349 Mon Sep 17 00:00:00 2001 From: CanadaHonk Date: Mon, 2 Jan 2023 12:24:00 +0000 Subject: [PATCH] controls: new Window.controls API --- src/api/controls.js | 20 ++++++++++++++++++++ src/index.js | 2 ++ 2 files changed, 22 insertions(+) create mode 100644 src/api/controls.js diff --git a/src/api/controls.js b/src/api/controls.js new file mode 100644 index 0000000..485aa19 --- /dev/null +++ b/src/api/controls.js @@ -0,0 +1,20 @@ +export default async (CDP) => { + const { windowId } = await CDP.send('Browser.getWindowForTarget'); + + const setWindowState = async state => await CDP.send('Browser.setWindowBounds', { windowId, bounds: { windowState: state }}); + + return { + minimize: async () => { + await setWindowState('minimized'); + }, + + maximize: async () => { + await setWindowState('maximized'); + }, + + show: async () => { + await setWindowState('minimized'); + await setWindowState('normal'); + } + }; +}; \ No newline at end of file diff --git a/src/index.js b/src/index.js index 4a03322..96622a4 100644 --- a/src/index.js +++ b/src/index.js @@ -11,6 +11,7 @@ import Chromium from './browser/chromium.js'; import Firefox from './browser/firefox.js'; import IdleAPI from './api/idle.js'; +import ControlsAPI from './api/controls.js'; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); @@ -108,6 +109,7 @@ const startBrowser = async (url, { windowSize, forceBrowser }) => { }); Window.idle = await IdleAPI(Window.cdp, { browserType }); + Window.controls = await ControlsAPI(Window.cdp); return Window; };