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; };