Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ulixee
GitHub Repository: ulixee/secret-agent
Path: blob/main/plugins/default-browser-emulator/lib/helpers/setScreensize.ts
1030 views
1
import IDevtoolsSession from '@secret-agent/interfaces/IDevtoolsSession';
2
import { IPuppetPage } from '@secret-agent/interfaces/IPuppetPage';
3
import BrowserEmulator from '../../index';
4
5
export default async function setScreensize(
6
emulator: BrowserEmulator,
7
page: IPuppetPage,
8
devtools: IDevtoolsSession,
9
): Promise<void> {
10
const { viewport } = emulator;
11
if (!viewport) return;
12
13
const promises: Promise<any>[] = [];
14
15
if (emulator.browserEngine.isHeaded) {
16
promises.push(
17
page.devtoolsSession.send('Browser.getWindowForTarget').then(({ windowId, bounds }) => {
18
if (bounds.width === viewport.width && bounds.height === viewport.height) {
19
return null;
20
}
21
22
return devtools.send('Browser.setWindowBounds', {
23
windowId,
24
bounds: {
25
width: viewport.width,
26
height: viewport.height,
27
windowState: 'normal',
28
},
29
});
30
}),
31
);
32
}
33
34
promises.push(
35
devtools.send('Emulation.setDeviceMetricsOverride', {
36
width: viewport.width,
37
height: viewport.height,
38
deviceScaleFactor: viewport.deviceScaleFactor ?? 1,
39
positionX: viewport.positionX,
40
positionY: viewport.positionY,
41
screenWidth: viewport.screenWidth,
42
screenHeight: viewport.screenHeight,
43
mobile: false,
44
}),
45
);
46
await Promise.all(promises);
47
}
48
49