fix: ensure document.visibilityState aligns with the visibility of the TopLevelWindow (#19988)

* fix: ensure document.visibilityState aligns with the visibility of the
TopLevelWindow

* chore: disable the specs on linux on CI
This commit is contained in:
Samuel Attard 2019-09-05 10:56:06 -07:00 committed by GitHub
parent cd096289e9
commit 137622931b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 269 additions and 4 deletions

View file

@ -19,13 +19,13 @@ export const waitForEvent = (target: EventTarget, eventName: string) => {
* @param {string} eventName
* @return {!Promise<!Array>} With Event as the first item.
*/
export const emittedOnce = (emitter: NodeJS.EventEmitter, eventName: string) => {
return emittedNTimes(emitter, eventName, 1).then(([result]) => result)
export const emittedOnce = (emitter: NodeJS.EventEmitter, eventName: string, trigger?: () => void) => {
return emittedNTimes(emitter, eventName, 1, trigger).then(([result]) => result)
}
export const emittedNTimes = (emitter: NodeJS.EventEmitter, eventName: string, times: number) => {
export const emittedNTimes = async (emitter: NodeJS.EventEmitter, eventName: string, times: number, trigger?: () => void) => {
const events: any[][] = []
return new Promise<any[][]>(resolve => {
const p = new Promise<any[][]>(resolve => {
const handler = (...args: any[]) => {
events.push(args)
if (events.length === times) {
@ -35,4 +35,8 @@ export const emittedNTimes = (emitter: NodeJS.EventEmitter, eventName: string, t
}
emitter.on(eventName, handler)
})
if (trigger) {
await Promise.resolve(trigger())
}
return p
}