blob: 41bb0c76ea22b9a115175626eb39def97d324eae (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
import { ContentProcessDomain } from "chrome://remote/content/cdp/domains/ContentProcessDomain.sys.mjs";
const lazy = {};
ChromeUtils.defineESModuleGetters(lazy, {
AnimationFramePromise: "chrome://remote/content/shared/Sync.sys.mjs",
});
export class Emulation extends ContentProcessDomain {
// commands
/**
* Internal methods: the following methods are not part of CDP;
* note the _ prefix.
*/
/**
* Waits until the viewport has reached the new dimensions.
*/
async _awaitViewportDimensions({ width, height }) {
const win = this.content;
let resized;
// Updates for background tabs are throttled, and we also we have to make
// sure that the new browser dimensions have been received by the content
// process. As such wait for the next animation frame.
await lazy.AnimationFramePromise(win);
const checkBrowserSize = () => {
if (win.innerWidth === width && win.innerHeight === height) {
resized();
}
};
return new Promise(resolve => {
resized = resolve;
win.addEventListener("resize", checkBrowserSize);
// Trigger a layout flush in case none happened yet.
checkBrowserSize();
}).finally(() => {
win.removeEventListener("resize", checkBrowserSize);
});
}
}
|