import BrowserFrameFactory from './BrowserFrameFactory.js'; /** * Browser page utility. */ export default class BrowserPageUtility { /** * Returns frames for a page. * * @param page Page. * @returns Frames. */ static getFrames(page) { return this.findFrames(page.mainFrame); } /** * Aborts all ongoing operations and destroys the page. * * @param page Page. */ static closePage(page) { if (page.closed) { return Promise.resolve(); } page.closed = true; const index = page.context.pages.indexOf(page); if (index !== -1) { page.context.pages.splice(index, 1); } page.virtualConsolePrinter.close(); // Using Promise instead of async/await to prevent microtask return BrowserFrameFactory.destroyFrame(page.mainFrame); } /** * Returns all frames. * * @param parentFrame Parent frame. * @returns Frames, including the parent. */ static findFrames(parentFrame) { let frames = [parentFrame]; for (const frame of parentFrame.childFrames) { frames = frames.concat(this.findFrames(frame)); } return frames; } } //# sourceMappingURL=BrowserPageUtility.js.map