electron/spec/api-web-contents-spec.ts

3325 lines
120 KiB
TypeScript
Raw Normal View History

import { BrowserWindow, ipcMain, webContents, session, app, BrowserView, WebContents, BaseWindow, WebContentsView } from 'electron/main';
2020-03-20 13:28:31 -07:00
import { expect } from 'chai';
build(deps): bump the npm_and_yarn group across 2 directories with 3 updates (#43511) * build(deps): bump the npm_and_yarn group across 2 directories with 3 updates Bumps the npm_and_yarn group with 1 update in the / directory: [braces](https://github.com/micromatch/braces). Bumps the npm_and_yarn group with 3 updates in the /spec directory: [braces](https://github.com/micromatch/braces), [pdfjs-dist](https://github.com/mozilla/pdf.js) and [ws](https://github.com/websockets/ws). Updates `braces` from 3.0.2 to 3.0.3 - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) Updates `braces` from 3.0.2 to 3.0.3 - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) Updates `pdfjs-dist` from 2.16.105 to 4.2.67 - [Release notes](https://github.com/mozilla/pdf.js/releases) - [Commits](https://github.com/mozilla/pdf.js/compare/v2.16.105...v4.2.67) Updates `ws` from 7.5.9 to 7.5.10 - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/7.5.9...7.5.10) --- updated-dependencies: - dependency-name: braces dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: braces dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: pdfjs-dist dependency-type: direct:development dependency-group: npm_and_yarn - dependency-name: ws dependency-type: direct:development dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] <support@github.com> * chore: update api-web-contents-spec to us newer version of pdfjs-dist * test: create fixture to read PDF files for verification --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2024-09-09 11:49:43 +02:00
import * as cp from 'node:child_process';
import { once } from 'node:events';
import * as fs from 'node:fs';
import * as http from 'node:http';
import { AddressInfo } from 'node:net';
build(deps): bump the npm_and_yarn group across 2 directories with 3 updates (#43511) * build(deps): bump the npm_and_yarn group across 2 directories with 3 updates Bumps the npm_and_yarn group with 1 update in the / directory: [braces](https://github.com/micromatch/braces). Bumps the npm_and_yarn group with 3 updates in the /spec directory: [braces](https://github.com/micromatch/braces), [pdfjs-dist](https://github.com/mozilla/pdf.js) and [ws](https://github.com/websockets/ws). Updates `braces` from 3.0.2 to 3.0.3 - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) Updates `braces` from 3.0.2 to 3.0.3 - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) Updates `pdfjs-dist` from 2.16.105 to 4.2.67 - [Release notes](https://github.com/mozilla/pdf.js/releases) - [Commits](https://github.com/mozilla/pdf.js/compare/v2.16.105...v4.2.67) Updates `ws` from 7.5.9 to 7.5.10 - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/7.5.9...7.5.10) --- updated-dependencies: - dependency-name: braces dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: braces dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: pdfjs-dist dependency-type: direct:development dependency-group: npm_and_yarn - dependency-name: ws dependency-type: direct:development dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] <support@github.com> * chore: update api-web-contents-spec to us newer version of pdfjs-dist * test: create fixture to read PDF files for verification --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2024-09-09 11:49:43 +02:00
import * as os from 'node:os';
import * as path from 'node:path';
import { setTimeout } from 'node:timers/promises';
import * as url from 'node:url';
import { ifdescribe, defer, waitUntil, listen, ifit } from './lib/spec-helpers';
build: use github actions for windows (#44136) * build: test windows runner * build: try build windows on windows? * build: take win/cross changes * build: use bash as default shell always * build: configure git for windows build tools * build: bash as default * build: configure windows correctly * build: use sha1sum * build: force windows cipd init and python3 existence * just pain * build: restore cache on windows * build: use build-tools gclient * build: sync gclient vars to build windows job * build: output depshash for debugging * build: past sam was a silly goose * build: depshash logging * build: force lf endings for lock and DEPS * build: platform strings are hard * build: checkout on windows host * sup * no check * idk * sigh * ... * no double checkout * build: yolo some stuff * build: run gn-check for windows on linux hosts for speed * use container... * cry ? * build: e d * e d * no log * fix toolchain on windows cross check * build: use powershell to add mksnapshot_args * build: enable x86 and arm64 windows builds too * clean up * maybe not needed * build: keep action around for post step * build: configure git global on win * build: ia32 zip manifest * build: no patch depot_tools for tests * build: get arm64 windows closer to working * build: windows tar is ass * 32 bit on 32 bit * maybe bash * build: set up nodejs * correct windows sharding * fix some spec runner stuff * fix windows tests * overwrite -Force * sigh * screen res * wat * logs * ... more logs * line endings will be the death of me * remove 1080p force thing * vsctools + logging * disable some fullscreen tests on GHA * no progress * run all CI * install visual studio on arm64 * windows hax for non windows * maybe arm sdk * clean up depshash logic * build: use single check per platform * ensure clean args * fix loop * remove debug * update default build image sha for dispatch * plzzzz * one more try * arm64 vctools * sad * build: fix non-dispatch windows gn check * chore: debug datadog-ci location * chore: update build-tools for newer toolchain * chore: set path for datadog-ci * try this * chore: fixup gn check * fixup gn-check some more * fixup windows gn check * chore: fixup windows gn check * test: use cmd for Windows testing * fixup use cmd for testing on Windows * fixup windows GN check * fixup npm config arch for x86 * Can we set test files via powershell * fixup to set test files via powershell * fixup set test files via powershell * Don't check cross instance cache disk space on Windows * Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing (AGAIN) * use powershell if in powershell * fixup use powershell if in powershell * chore: remove no longer needed changes to depot_tools xref: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/5669094 and https://chromium-review.googlesource.com/c/chromium/src/+/5844046 * chore: try using 7zip on Windows to extract tarball * Revert "chore: try using 7zip on Windows to extract tarball" This reverts commit c7432b6a37857fd0746b8f1776fbd1103dba0b85. * test: debug failing tests on GHA windows * fix: ftbfs when including simdjson in Node.js (cherry picked from commit 48e44c40d61b7aa843a990d4e0c8dec676b4ce8f) * chore: try to track down Windows testing hang * use correct timeout * try this * see if this helps * try to figure out why node is running * shard tests to try to narrow down WOA lockup * try to narrow down problem test * Narrow down blocking test more * do we need a combo to repro * see if this cleans up the tests * fixup navigator.usb test * remove logging from problematic tests * Revert "shard tests to try to narrow down WOA lockup" This reverts commit a1806583769678491814cb8b008131c32be4e8fb. * remove logging * debug keyboard test * add timeout for Windows since arm64 sometimes hangs * see if this helps * put back original timeout * try to use screenCapture to get screenshots of what is going on on WOA * try using electron screencapture to debug WOA hang * chore: turn off privacy experience * run screenshot on both shards * fixup screencap * try to narrow down hanging spec * chore: cleanup servers left open * cleanup tests * Revert "try to narrow down hanging spec" This reverts commit a0f959f5382f4012a9919ac535d42c5333eb7d5f. * cleanup test debugging * fixup extensions spec * cleanup unneeded items * run wtf with 2 shards instead of 6 * Revert "run wtf with 2 shards instead of 6" This reverts commit ca2d282129ee42c535d80f9876d6fa0dc6c08344. * debug windows version on woa * dump more info * Get detailed CPU info * revert debugging * use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * try to track down which tests trigger hang * one or more of these combinations should hang * break up web contents spec to find hang * further break down api-web-contents to find hang * test: ensure all webContents are closed * test: fix require is not defined error * see if api-web-contents spec is now good * test: ensure all webContents are closed * Revert "try to track down which tests trigger hang" This reverts commit 07298d6ffeb4873ef7615a8ec3d1a6696e354ff4. * chore: use alternate location for windows toolchain * Reapply "try to track down which tests trigger hang" This reverts commit 0321f76d01069ef325339b6fe6ed39700eae2b6b. * try to narrow down problem test * fix TEST_SHARD env var * no, really fix TEST_SHARD env var * see if this fixes it * test: cleanup any remaining windows and webcontents * see if new cleanup helps * dont destroy webcontents for now * fixup dont destroy webcontents for now * Only cleanup right before process.exit * see if this fixes the hang * actually destroy webcontents * Revert "Reapply "try to track down which tests trigger hang"" This reverts commit cdee7de049ce6bb5f67bbcc64882c56aa2c73027. * see if this helps * Revert "see if this helps" This reverts commit 9a15a69cf7dbc456db7a61efa5b6870535bae993. * Is it all about the web contents? * it is all about the webcontents but which one? * Narrow down problem webcontents test * try to speed up git install on WOA * disable problematic test on WOA * remove debugging * remove debugging from choco installs * Revert "disable problematic test on WOA" This reverts commit e060fb0839b73d53cfde1f8acdca634f8e267937. * Revert "remove debugging" This reverts commit f18dd8b1a555f56bb06d0ea996a6eff31b424bf1. * run against all the tests in the failing shard * don't run visibility tests first * remove debugging * 3 is a magic number * Revert "3 is a magic number" This reverts commit 36b91ccf9f03a4b34230cd69ceca482f7d8428c1. * match what Appveyor runs exactly * Revert "match what Appveyor runs exactly" This reverts commit 7260dd432216c62696e4bc864930f17c857eabbe. * chore: sort files alphabetically * find out what spec is leaving stuff open * chore: Checkout PR HEAD commit instead of merge commit * try using app.exit instead of process.exit * test: cleanup BrowserWindows and webContents * Revert "chore: sort files alphabetically" This reverts commit d9e217ffb1522076e150fce9e43a31bf56716acb. * chore: use win32 to match process.platform Needed for build-tools to download from PRs * chore: cache yarn dir * fixup cache yarn * fixup use win32 to match process.platform * fixup use win32 to match process.platform * fixup cache yarn * Add debugging for WOA hang * Add debugging for failing keyboard lock test * Revert "Add debugging for WOA hang" This reverts commit 8df03d568d15a269e4026140d1158e8cdf551dec. * try using process.kill * add more debugging to keyboard.lock test * Revert "Add debugging for failing keyboard lock test" * remove debugging * test: disable keyboard.lock on Windows * test: disable fullscreen tests on Windows * test: only force test suite exit on WOA * fixup test: only force test suite exit on WOA * cleanup tests * extract yarn caching/install to action * try using bash to run windows tests * remove left over debugging * standardize on 'win' for Windows builds * use 'x86' for arch for manifest files * fixup try using bash to run windows tests * fixup use 'x86' for arch for manifest files * standardize on 'win' for Windows builds * fixup use 'x86' for arch for manifest files * fixup try using bash to run windows tests --------- Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org> Co-authored-by: Charles Kerr <charles@charleskerr.com>
2024-12-12 08:51:24 -08:00
import { cleanupWebContents, closeAllWindows } from './lib/window-helpers';
2020-03-20 13:28:31 -07:00
const fixturesPath = path.resolve(__dirname, 'fixtures');
const features = process._linkedBinding('electron_common_features');
describe('webContents module', () => {
describe('getAllWebContents() API', () => {
2020-03-20 13:28:31 -07:00
afterEach(closeAllWindows);
it('returns an array of web contents', async () => {
const w = new BrowserWindow({
show: false,
webPreferences: { webviewTag: true }
2020-03-20 13:28:31 -07:00
});
w.loadFile(path.join(fixturesPath, 'pages', 'webview-zoom-factor.html'));
await once(w.webContents, 'did-attach-webview') as [any, WebContents];
2020-03-20 13:28:31 -07:00
w.webContents.openDevTools();
await once(w.webContents, 'devtools-opened');
const all = webContents.getAllWebContents().sort((a, b) => {
2020-03-20 13:28:31 -07:00
return a.id - b.id;
});
2020-03-20 13:28:31 -07:00
expect(all).to.have.length(3);
expect(all[0].getType()).to.equal('window');
expect(all[all.length - 2].getType()).to.equal('webview');
expect(all[all.length - 1].getType()).to.equal('remote');
});
});
describe('webContents properties', () => {
afterEach(closeAllWindows);
it('has expected additional enumerable properties', () => {
const w = new BrowserWindow({ show: false });
const properties = Object.getOwnPropertyNames(w.webContents);
expect(properties).to.include('ipc');
expect(properties).to.include('navigationHistory');
});
});
describe('fromId()', () => {
it('returns undefined for an unknown id', () => {
expect(webContents.fromId(12345)).to.be.undefined();
});
});
describe('fromFrame()', () => {
build: use github actions for windows (#44136) * build: test windows runner * build: try build windows on windows? * build: take win/cross changes * build: use bash as default shell always * build: configure git for windows build tools * build: bash as default * build: configure windows correctly * build: use sha1sum * build: force windows cipd init and python3 existence * just pain * build: restore cache on windows * build: use build-tools gclient * build: sync gclient vars to build windows job * build: output depshash for debugging * build: past sam was a silly goose * build: depshash logging * build: force lf endings for lock and DEPS * build: platform strings are hard * build: checkout on windows host * sup * no check * idk * sigh * ... * no double checkout * build: yolo some stuff * build: run gn-check for windows on linux hosts for speed * use container... * cry ? * build: e d * e d * no log * fix toolchain on windows cross check * build: use powershell to add mksnapshot_args * build: enable x86 and arm64 windows builds too * clean up * maybe not needed * build: keep action around for post step * build: configure git global on win * build: ia32 zip manifest * build: no patch depot_tools for tests * build: get arm64 windows closer to working * build: windows tar is ass * 32 bit on 32 bit * maybe bash * build: set up nodejs * correct windows sharding * fix some spec runner stuff * fix windows tests * overwrite -Force * sigh * screen res * wat * logs * ... more logs * line endings will be the death of me * remove 1080p force thing * vsctools + logging * disable some fullscreen tests on GHA * no progress * run all CI * install visual studio on arm64 * windows hax for non windows * maybe arm sdk * clean up depshash logic * build: use single check per platform * ensure clean args * fix loop * remove debug * update default build image sha for dispatch * plzzzz * one more try * arm64 vctools * sad * build: fix non-dispatch windows gn check * chore: debug datadog-ci location * chore: update build-tools for newer toolchain * chore: set path for datadog-ci * try this * chore: fixup gn check * fixup gn-check some more * fixup windows gn check * chore: fixup windows gn check * test: use cmd for Windows testing * fixup use cmd for testing on Windows * fixup windows GN check * fixup npm config arch for x86 * Can we set test files via powershell * fixup to set test files via powershell * fixup set test files via powershell * Don't check cross instance cache disk space on Windows * Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing (AGAIN) * use powershell if in powershell * fixup use powershell if in powershell * chore: remove no longer needed changes to depot_tools xref: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/5669094 and https://chromium-review.googlesource.com/c/chromium/src/+/5844046 * chore: try using 7zip on Windows to extract tarball * Revert "chore: try using 7zip on Windows to extract tarball" This reverts commit c7432b6a37857fd0746b8f1776fbd1103dba0b85. * test: debug failing tests on GHA windows * fix: ftbfs when including simdjson in Node.js (cherry picked from commit 48e44c40d61b7aa843a990d4e0c8dec676b4ce8f) * chore: try to track down Windows testing hang * use correct timeout * try this * see if this helps * try to figure out why node is running * shard tests to try to narrow down WOA lockup * try to narrow down problem test * Narrow down blocking test more * do we need a combo to repro * see if this cleans up the tests * fixup navigator.usb test * remove logging from problematic tests * Revert "shard tests to try to narrow down WOA lockup" This reverts commit a1806583769678491814cb8b008131c32be4e8fb. * remove logging * debug keyboard test * add timeout for Windows since arm64 sometimes hangs * see if this helps * put back original timeout * try to use screenCapture to get screenshots of what is going on on WOA * try using electron screencapture to debug WOA hang * chore: turn off privacy experience * run screenshot on both shards * fixup screencap * try to narrow down hanging spec * chore: cleanup servers left open * cleanup tests * Revert "try to narrow down hanging spec" This reverts commit a0f959f5382f4012a9919ac535d42c5333eb7d5f. * cleanup test debugging * fixup extensions spec * cleanup unneeded items * run wtf with 2 shards instead of 6 * Revert "run wtf with 2 shards instead of 6" This reverts commit ca2d282129ee42c535d80f9876d6fa0dc6c08344. * debug windows version on woa * dump more info * Get detailed CPU info * revert debugging * use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * try to track down which tests trigger hang * one or more of these combinations should hang * break up web contents spec to find hang * further break down api-web-contents to find hang * test: ensure all webContents are closed * test: fix require is not defined error * see if api-web-contents spec is now good * test: ensure all webContents are closed * Revert "try to track down which tests trigger hang" This reverts commit 07298d6ffeb4873ef7615a8ec3d1a6696e354ff4. * chore: use alternate location for windows toolchain * Reapply "try to track down which tests trigger hang" This reverts commit 0321f76d01069ef325339b6fe6ed39700eae2b6b. * try to narrow down problem test * fix TEST_SHARD env var * no, really fix TEST_SHARD env var * see if this fixes it * test: cleanup any remaining windows and webcontents * see if new cleanup helps * dont destroy webcontents for now * fixup dont destroy webcontents for now * Only cleanup right before process.exit * see if this fixes the hang * actually destroy webcontents * Revert "Reapply "try to track down which tests trigger hang"" This reverts commit cdee7de049ce6bb5f67bbcc64882c56aa2c73027. * see if this helps * Revert "see if this helps" This reverts commit 9a15a69cf7dbc456db7a61efa5b6870535bae993. * Is it all about the web contents? * it is all about the webcontents but which one? * Narrow down problem webcontents test * try to speed up git install on WOA * disable problematic test on WOA * remove debugging * remove debugging from choco installs * Revert "disable problematic test on WOA" This reverts commit e060fb0839b73d53cfde1f8acdca634f8e267937. * Revert "remove debugging" This reverts commit f18dd8b1a555f56bb06d0ea996a6eff31b424bf1. * run against all the tests in the failing shard * don't run visibility tests first * remove debugging * 3 is a magic number * Revert "3 is a magic number" This reverts commit 36b91ccf9f03a4b34230cd69ceca482f7d8428c1. * match what Appveyor runs exactly * Revert "match what Appveyor runs exactly" This reverts commit 7260dd432216c62696e4bc864930f17c857eabbe. * chore: sort files alphabetically * find out what spec is leaving stuff open * chore: Checkout PR HEAD commit instead of merge commit * try using app.exit instead of process.exit * test: cleanup BrowserWindows and webContents * Revert "chore: sort files alphabetically" This reverts commit d9e217ffb1522076e150fce9e43a31bf56716acb. * chore: use win32 to match process.platform Needed for build-tools to download from PRs * chore: cache yarn dir * fixup cache yarn * fixup use win32 to match process.platform * fixup use win32 to match process.platform * fixup cache yarn * Add debugging for WOA hang * Add debugging for failing keyboard lock test * Revert "Add debugging for WOA hang" This reverts commit 8df03d568d15a269e4026140d1158e8cdf551dec. * try using process.kill * add more debugging to keyboard.lock test * Revert "Add debugging for failing keyboard lock test" * remove debugging * test: disable keyboard.lock on Windows * test: disable fullscreen tests on Windows * test: only force test suite exit on WOA * fixup test: only force test suite exit on WOA * cleanup tests * extract yarn caching/install to action * try using bash to run windows tests * remove left over debugging * standardize on 'win' for Windows builds * use 'x86' for arch for manifest files * fixup try using bash to run windows tests * fixup use 'x86' for arch for manifest files * standardize on 'win' for Windows builds * fixup use 'x86' for arch for manifest files * fixup try using bash to run windows tests --------- Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org> Co-authored-by: Charles Kerr <charles@charleskerr.com>
2024-12-12 08:51:24 -08:00
afterEach(cleanupWebContents);
it('returns WebContents for mainFrame', () => {
const contents = (webContents as typeof ElectronInternal.WebContents).create();
expect(webContents.fromFrame(contents.mainFrame)).to.equal(contents);
});
it('returns undefined for disposed frame', async () => {
const contents = (webContents as typeof ElectronInternal.WebContents).create();
const { mainFrame } = contents;
contents.destroy();
await waitUntil(() => typeof webContents.fromFrame(mainFrame) === 'undefined');
});
it('throws when passing invalid argument', async () => {
let errored = false;
try {
webContents.fromFrame({} as any);
} catch {
errored = true;
}
expect(errored).to.be.true();
});
});
describe('fromDevToolsTargetId()', () => {
build: use github actions for windows (#44136) * build: test windows runner * build: try build windows on windows? * build: take win/cross changes * build: use bash as default shell always * build: configure git for windows build tools * build: bash as default * build: configure windows correctly * build: use sha1sum * build: force windows cipd init and python3 existence * just pain * build: restore cache on windows * build: use build-tools gclient * build: sync gclient vars to build windows job * build: output depshash for debugging * build: past sam was a silly goose * build: depshash logging * build: force lf endings for lock and DEPS * build: platform strings are hard * build: checkout on windows host * sup * no check * idk * sigh * ... * no double checkout * build: yolo some stuff * build: run gn-check for windows on linux hosts for speed * use container... * cry ? * build: e d * e d * no log * fix toolchain on windows cross check * build: use powershell to add mksnapshot_args * build: enable x86 and arm64 windows builds too * clean up * maybe not needed * build: keep action around for post step * build: configure git global on win * build: ia32 zip manifest * build: no patch depot_tools for tests * build: get arm64 windows closer to working * build: windows tar is ass * 32 bit on 32 bit * maybe bash * build: set up nodejs * correct windows sharding * fix some spec runner stuff * fix windows tests * overwrite -Force * sigh * screen res * wat * logs * ... more logs * line endings will be the death of me * remove 1080p force thing * vsctools + logging * disable some fullscreen tests on GHA * no progress * run all CI * install visual studio on arm64 * windows hax for non windows * maybe arm sdk * clean up depshash logic * build: use single check per platform * ensure clean args * fix loop * remove debug * update default build image sha for dispatch * plzzzz * one more try * arm64 vctools * sad * build: fix non-dispatch windows gn check * chore: debug datadog-ci location * chore: update build-tools for newer toolchain * chore: set path for datadog-ci * try this * chore: fixup gn check * fixup gn-check some more * fixup windows gn check * chore: fixup windows gn check * test: use cmd for Windows testing * fixup use cmd for testing on Windows * fixup windows GN check * fixup npm config arch for x86 * Can we set test files via powershell * fixup to set test files via powershell * fixup set test files via powershell * Don't check cross instance cache disk space on Windows * Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing (AGAIN) * use powershell if in powershell * fixup use powershell if in powershell * chore: remove no longer needed changes to depot_tools xref: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/5669094 and https://chromium-review.googlesource.com/c/chromium/src/+/5844046 * chore: try using 7zip on Windows to extract tarball * Revert "chore: try using 7zip on Windows to extract tarball" This reverts commit c7432b6a37857fd0746b8f1776fbd1103dba0b85. * test: debug failing tests on GHA windows * fix: ftbfs when including simdjson in Node.js (cherry picked from commit 48e44c40d61b7aa843a990d4e0c8dec676b4ce8f) * chore: try to track down Windows testing hang * use correct timeout * try this * see if this helps * try to figure out why node is running * shard tests to try to narrow down WOA lockup * try to narrow down problem test * Narrow down blocking test more * do we need a combo to repro * see if this cleans up the tests * fixup navigator.usb test * remove logging from problematic tests * Revert "shard tests to try to narrow down WOA lockup" This reverts commit a1806583769678491814cb8b008131c32be4e8fb. * remove logging * debug keyboard test * add timeout for Windows since arm64 sometimes hangs * see if this helps * put back original timeout * try to use screenCapture to get screenshots of what is going on on WOA * try using electron screencapture to debug WOA hang * chore: turn off privacy experience * run screenshot on both shards * fixup screencap * try to narrow down hanging spec * chore: cleanup servers left open * cleanup tests * Revert "try to narrow down hanging spec" This reverts commit a0f959f5382f4012a9919ac535d42c5333eb7d5f. * cleanup test debugging * fixup extensions spec * cleanup unneeded items * run wtf with 2 shards instead of 6 * Revert "run wtf with 2 shards instead of 6" This reverts commit ca2d282129ee42c535d80f9876d6fa0dc6c08344. * debug windows version on woa * dump more info * Get detailed CPU info * revert debugging * use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * try to track down which tests trigger hang * one or more of these combinations should hang * break up web contents spec to find hang * further break down api-web-contents to find hang * test: ensure all webContents are closed * test: fix require is not defined error * see if api-web-contents spec is now good * test: ensure all webContents are closed * Revert "try to track down which tests trigger hang" This reverts commit 07298d6ffeb4873ef7615a8ec3d1a6696e354ff4. * chore: use alternate location for windows toolchain * Reapply "try to track down which tests trigger hang" This reverts commit 0321f76d01069ef325339b6fe6ed39700eae2b6b. * try to narrow down problem test * fix TEST_SHARD env var * no, really fix TEST_SHARD env var * see if this fixes it * test: cleanup any remaining windows and webcontents * see if new cleanup helps * dont destroy webcontents for now * fixup dont destroy webcontents for now * Only cleanup right before process.exit * see if this fixes the hang * actually destroy webcontents * Revert "Reapply "try to track down which tests trigger hang"" This reverts commit cdee7de049ce6bb5f67bbcc64882c56aa2c73027. * see if this helps * Revert "see if this helps" This reverts commit 9a15a69cf7dbc456db7a61efa5b6870535bae993. * Is it all about the web contents? * it is all about the webcontents but which one? * Narrow down problem webcontents test * try to speed up git install on WOA * disable problematic test on WOA * remove debugging * remove debugging from choco installs * Revert "disable problematic test on WOA" This reverts commit e060fb0839b73d53cfde1f8acdca634f8e267937. * Revert "remove debugging" This reverts commit f18dd8b1a555f56bb06d0ea996a6eff31b424bf1. * run against all the tests in the failing shard * don't run visibility tests first * remove debugging * 3 is a magic number * Revert "3 is a magic number" This reverts commit 36b91ccf9f03a4b34230cd69ceca482f7d8428c1. * match what Appveyor runs exactly * Revert "match what Appveyor runs exactly" This reverts commit 7260dd432216c62696e4bc864930f17c857eabbe. * chore: sort files alphabetically * find out what spec is leaving stuff open * chore: Checkout PR HEAD commit instead of merge commit * try using app.exit instead of process.exit * test: cleanup BrowserWindows and webContents * Revert "chore: sort files alphabetically" This reverts commit d9e217ffb1522076e150fce9e43a31bf56716acb. * chore: use win32 to match process.platform Needed for build-tools to download from PRs * chore: cache yarn dir * fixup cache yarn * fixup use win32 to match process.platform * fixup use win32 to match process.platform * fixup cache yarn * Add debugging for WOA hang * Add debugging for failing keyboard lock test * Revert "Add debugging for WOA hang" This reverts commit 8df03d568d15a269e4026140d1158e8cdf551dec. * try using process.kill * add more debugging to keyboard.lock test * Revert "Add debugging for failing keyboard lock test" * remove debugging * test: disable keyboard.lock on Windows * test: disable fullscreen tests on Windows * test: only force test suite exit on WOA * fixup test: only force test suite exit on WOA * cleanup tests * extract yarn caching/install to action * try using bash to run windows tests * remove left over debugging * standardize on 'win' for Windows builds * use 'x86' for arch for manifest files * fixup try using bash to run windows tests * fixup use 'x86' for arch for manifest files * standardize on 'win' for Windows builds * fixup use 'x86' for arch for manifest files * fixup try using bash to run windows tests --------- Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org> Co-authored-by: Charles Kerr <charles@charleskerr.com>
2024-12-12 08:51:24 -08:00
afterEach(closeAllWindows);
it('returns WebContents for attached DevTools target', async () => {
const w = new BrowserWindow({ show: false });
await w.loadURL('about:blank');
try {
await w.webContents.debugger.attach('1.3');
const { targetInfo } = await w.webContents.debugger.sendCommand('Target.getTargetInfo');
expect(webContents.fromDevToolsTargetId(targetInfo.targetId)).to.equal(w.webContents);
} finally {
await w.webContents.debugger.detach();
}
});
it('returns undefined for an unknown id', () => {
expect(webContents.fromDevToolsTargetId('nope')).to.be.undefined();
});
});
2020-05-18 08:04:41 -07:00
describe('will-prevent-unload event', function () {
build: use github actions for windows (#44136) * build: test windows runner * build: try build windows on windows? * build: take win/cross changes * build: use bash as default shell always * build: configure git for windows build tools * build: bash as default * build: configure windows correctly * build: use sha1sum * build: force windows cipd init and python3 existence * just pain * build: restore cache on windows * build: use build-tools gclient * build: sync gclient vars to build windows job * build: output depshash for debugging * build: past sam was a silly goose * build: depshash logging * build: force lf endings for lock and DEPS * build: platform strings are hard * build: checkout on windows host * sup * no check * idk * sigh * ... * no double checkout * build: yolo some stuff * build: run gn-check for windows on linux hosts for speed * use container... * cry ? * build: e d * e d * no log * fix toolchain on windows cross check * build: use powershell to add mksnapshot_args * build: enable x86 and arm64 windows builds too * clean up * maybe not needed * build: keep action around for post step * build: configure git global on win * build: ia32 zip manifest * build: no patch depot_tools for tests * build: get arm64 windows closer to working * build: windows tar is ass * 32 bit on 32 bit * maybe bash * build: set up nodejs * correct windows sharding * fix some spec runner stuff * fix windows tests * overwrite -Force * sigh * screen res * wat * logs * ... more logs * line endings will be the death of me * remove 1080p force thing * vsctools + logging * disable some fullscreen tests on GHA * no progress * run all CI * install visual studio on arm64 * windows hax for non windows * maybe arm sdk * clean up depshash logic * build: use single check per platform * ensure clean args * fix loop * remove debug * update default build image sha for dispatch * plzzzz * one more try * arm64 vctools * sad * build: fix non-dispatch windows gn check * chore: debug datadog-ci location * chore: update build-tools for newer toolchain * chore: set path for datadog-ci * try this * chore: fixup gn check * fixup gn-check some more * fixup windows gn check * chore: fixup windows gn check * test: use cmd for Windows testing * fixup use cmd for testing on Windows * fixup windows GN check * fixup npm config arch for x86 * Can we set test files via powershell * fixup to set test files via powershell * fixup set test files via powershell * Don't check cross instance cache disk space on Windows * Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing (AGAIN) * use powershell if in powershell * fixup use powershell if in powershell * chore: remove no longer needed changes to depot_tools xref: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/5669094 and https://chromium-review.googlesource.com/c/chromium/src/+/5844046 * chore: try using 7zip on Windows to extract tarball * Revert "chore: try using 7zip on Windows to extract tarball" This reverts commit c7432b6a37857fd0746b8f1776fbd1103dba0b85. * test: debug failing tests on GHA windows * fix: ftbfs when including simdjson in Node.js (cherry picked from commit 48e44c40d61b7aa843a990d4e0c8dec676b4ce8f) * chore: try to track down Windows testing hang * use correct timeout * try this * see if this helps * try to figure out why node is running * shard tests to try to narrow down WOA lockup * try to narrow down problem test * Narrow down blocking test more * do we need a combo to repro * see if this cleans up the tests * fixup navigator.usb test * remove logging from problematic tests * Revert "shard tests to try to narrow down WOA lockup" This reverts commit a1806583769678491814cb8b008131c32be4e8fb. * remove logging * debug keyboard test * add timeout for Windows since arm64 sometimes hangs * see if this helps * put back original timeout * try to use screenCapture to get screenshots of what is going on on WOA * try using electron screencapture to debug WOA hang * chore: turn off privacy experience * run screenshot on both shards * fixup screencap * try to narrow down hanging spec * chore: cleanup servers left open * cleanup tests * Revert "try to narrow down hanging spec" This reverts commit a0f959f5382f4012a9919ac535d42c5333eb7d5f. * cleanup test debugging * fixup extensions spec * cleanup unneeded items * run wtf with 2 shards instead of 6 * Revert "run wtf with 2 shards instead of 6" This reverts commit ca2d282129ee42c535d80f9876d6fa0dc6c08344. * debug windows version on woa * dump more info * Get detailed CPU info * revert debugging * use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * try to track down which tests trigger hang * one or more of these combinations should hang * break up web contents spec to find hang * further break down api-web-contents to find hang * test: ensure all webContents are closed * test: fix require is not defined error * see if api-web-contents spec is now good * test: ensure all webContents are closed * Revert "try to track down which tests trigger hang" This reverts commit 07298d6ffeb4873ef7615a8ec3d1a6696e354ff4. * chore: use alternate location for windows toolchain * Reapply "try to track down which tests trigger hang" This reverts commit 0321f76d01069ef325339b6fe6ed39700eae2b6b. * try to narrow down problem test * fix TEST_SHARD env var * no, really fix TEST_SHARD env var * see if this fixes it * test: cleanup any remaining windows and webcontents * see if new cleanup helps * dont destroy webcontents for now * fixup dont destroy webcontents for now * Only cleanup right before process.exit * see if this fixes the hang * actually destroy webcontents * Revert "Reapply "try to track down which tests trigger hang"" This reverts commit cdee7de049ce6bb5f67bbcc64882c56aa2c73027. * see if this helps * Revert "see if this helps" This reverts commit 9a15a69cf7dbc456db7a61efa5b6870535bae993. * Is it all about the web contents? * it is all about the webcontents but which one? * Narrow down problem webcontents test * try to speed up git install on WOA * disable problematic test on WOA * remove debugging * remove debugging from choco installs * Revert "disable problematic test on WOA" This reverts commit e060fb0839b73d53cfde1f8acdca634f8e267937. * Revert "remove debugging" This reverts commit f18dd8b1a555f56bb06d0ea996a6eff31b424bf1. * run against all the tests in the failing shard * don't run visibility tests first * remove debugging * 3 is a magic number * Revert "3 is a magic number" This reverts commit 36b91ccf9f03a4b34230cd69ceca482f7d8428c1. * match what Appveyor runs exactly * Revert "match what Appveyor runs exactly" This reverts commit 7260dd432216c62696e4bc864930f17c857eabbe. * chore: sort files alphabetically * find out what spec is leaving stuff open * chore: Checkout PR HEAD commit instead of merge commit * try using app.exit instead of process.exit * test: cleanup BrowserWindows and webContents * Revert "chore: sort files alphabetically" This reverts commit d9e217ffb1522076e150fce9e43a31bf56716acb. * chore: use win32 to match process.platform Needed for build-tools to download from PRs * chore: cache yarn dir * fixup cache yarn * fixup use win32 to match process.platform * fixup use win32 to match process.platform * fixup cache yarn * Add debugging for WOA hang * Add debugging for failing keyboard lock test * Revert "Add debugging for WOA hang" This reverts commit 8df03d568d15a269e4026140d1158e8cdf551dec. * try using process.kill * add more debugging to keyboard.lock test * Revert "Add debugging for failing keyboard lock test" * remove debugging * test: disable keyboard.lock on Windows * test: disable fullscreen tests on Windows * test: only force test suite exit on WOA * fixup test: only force test suite exit on WOA * cleanup tests * extract yarn caching/install to action * try using bash to run windows tests * remove left over debugging * standardize on 'win' for Windows builds * use 'x86' for arch for manifest files * fixup try using bash to run windows tests * fixup use 'x86' for arch for manifest files * standardize on 'win' for Windows builds * fixup use 'x86' for arch for manifest files * fixup try using bash to run windows tests --------- Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org> Co-authored-by: Charles Kerr <charles@charleskerr.com>
2024-12-12 08:51:24 -08:00
afterEach(async () => {
await closeAllWindows();
await cleanupWebContents();
});
it('does not emit if beforeunload returns undefined in a BrowserWindow', async () => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false });
2019-11-01 13:37:02 -07:00
w.webContents.once('will-prevent-unload', () => {
2020-03-20 13:28:31 -07:00
expect.fail('should not have fired');
});
await w.loadFile(path.join(__dirname, 'fixtures', 'api', 'beforeunload-undefined.html'));
const wait = once(w, 'closed');
w.close();
await wait;
2020-03-20 13:28:31 -07:00
});
it('does not emit if beforeunload returns undefined in a BrowserView', async () => {
const w = new BrowserWindow({ show: false });
const view = new BrowserView();
w.setBrowserView(view);
view.setBounds(w.getBounds());
view.webContents.once('will-prevent-unload', () => {
expect.fail('should not have fired');
});
await view.webContents.loadFile(path.join(__dirname, 'fixtures', 'api', 'beforeunload-undefined.html'));
const wait = once(w, 'closed');
w.close();
await wait;
});
it('emits if beforeunload returns false in a BrowserWindow', async () => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false });
await w.loadFile(path.join(__dirname, 'fixtures', 'api', 'beforeunload-false.html'));
w.close();
await once(w.webContents, 'will-prevent-unload');
2020-03-20 13:28:31 -07:00
});
it('emits if beforeunload returns false in a BrowserView', async () => {
const w = new BrowserWindow({ show: false });
const view = new BrowserView();
w.setBrowserView(view);
view.setBounds(w.getBounds());
await view.webContents.loadFile(path.join(__dirname, 'fixtures', 'api', 'beforeunload-false.html'));
w.close();
await once(view.webContents, 'will-prevent-unload');
});
it('supports calling preventDefault on will-prevent-unload events in a BrowserWindow', async () => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false });
w.webContents.once('will-prevent-unload', event => event.preventDefault());
await w.loadFile(path.join(__dirname, 'fixtures', 'api', 'beforeunload-false.html'));
const wait = once(w, 'closed');
w.close();
await wait;
2020-03-20 13:28:31 -07:00
});
});
describe('webContents.send(channel, args...)', () => {
2020-03-20 13:28:31 -07:00
afterEach(closeAllWindows);
it('throws an error when the channel is missing', () => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false });
expect(() => {
2020-03-20 13:28:31 -07:00
(w.webContents.send as any)();
}).to.throw('Missing required channel argument');
expect(() => {
2020-03-20 13:28:31 -07:00
w.webContents.send(null as any);
}).to.throw('Missing required channel argument');
});
it('does not block node async APIs when sent before document is ready', (done) => {
// Please reference https://github.com/electron/electron/issues/19368 if
// this test fails.
ipcMain.once('async-node-api-done', () => {
2020-03-20 13:28:31 -07:00
done();
});
const w = new BrowserWindow({
show: false,
webPreferences: {
nodeIntegration: true,
sandbox: false,
contextIsolation: false
}
2020-03-20 13:28:31 -07:00
});
w.loadFile(path.join(fixturesPath, 'pages', 'send-after-node.html'));
setTimeout(50).then(() => {
2020-03-20 13:28:31 -07:00
w.webContents.send('test');
});
2020-03-20 13:28:31 -07:00
});
});
ifdescribe(features.isPrintingEnabled())('webContents.print()', () => {
2020-03-20 13:28:31 -07:00
let w: BrowserWindow;
beforeEach(() => {
2020-03-20 13:28:31 -07:00
w = new BrowserWindow({ show: false });
});
2020-03-20 13:28:31 -07:00
afterEach(closeAllWindows);
it('does not throw when options are not passed', () => {
expect(() => {
w.webContents.print();
}).not.to.throw();
expect(() => {
w.webContents.print(undefined);
}).not.to.throw();
});
it('does not throw when options object is empty', () => {
expect(() => {
w.webContents.print({});
}).not.to.throw();
});
it('throws when invalid settings are passed', () => {
expect(() => {
// @ts-ignore this line is intentionally incorrect
2020-03-20 13:28:31 -07:00
w.webContents.print(true);
}).to.throw('webContents.print(): Invalid print settings specified.');
expect(() => {
// @ts-ignore this line is intentionally incorrect
w.webContents.print(null);
}).to.throw('webContents.print(): Invalid print settings specified.');
2020-03-20 13:28:31 -07:00
});
it('throws when an invalid pageSize is passed', () => {
const badSize = 5;
expect(() => {
// @ts-ignore this line is intentionally incorrect
w.webContents.print({ pageSize: badSize });
}).to.throw(`Unsupported pageSize: ${badSize}`);
});
it('throws when an invalid callback is passed', () => {
expect(() => {
// @ts-ignore this line is intentionally incorrect
2020-03-20 13:28:31 -07:00
w.webContents.print({}, true);
}).to.throw('webContents.print(): Invalid optional callback provided.');
});
it('fails when an invalid deviceName is passed', (done) => {
w.webContents.print({ deviceName: 'i-am-a-nonexistent-printer' }, (success, reason) => {
expect(success).to.equal(false);
expect(reason).to.match(/Invalid deviceName provided/);
done();
});
2020-03-20 13:28:31 -07:00
});
it('throws when an invalid pageSize is passed', () => {
expect(() => {
// @ts-ignore this line is intentionally incorrect
2020-03-20 13:28:31 -07:00
w.webContents.print({ pageSize: 'i-am-a-bad-pagesize' }, () => {});
}).to.throw('Unsupported pageSize: i-am-a-bad-pagesize');
});
it('throws when an invalid custom pageSize is passed', () => {
expect(() => {
w.webContents.print({
pageSize: {
width: 100,
height: 200
}
});
}).to.throw('height and width properties must be minimum 352 microns.');
});
it('does not crash with custom margins', () => {
expect(() => {
w.webContents.print({
silent: true,
margins: {
marginType: 'custom',
top: 1,
bottom: 1,
left: 1,
right: 1
}
2020-03-20 13:28:31 -07:00
});
}).to.not.throw();
});
});
describe('webContents.executeJavaScript', () => {
describe('in about:blank', () => {
2020-03-20 13:28:31 -07:00
const expected = 'hello, world!';
const expectedErrorMsg = 'woops!';
const code = `(() => "${expected}")()`;
const asyncCode = `(() => new Promise(r => setTimeout(() => r("${expected}"), 500)))()`;
const badAsyncCode = `(() => new Promise((r, e) => setTimeout(() => e("${expectedErrorMsg}"), 500)))()`;
const errorTypes = new Set([
Error,
ReferenceError,
EvalError,
RangeError,
SyntaxError,
TypeError,
URIError
2020-03-20 13:28:31 -07:00
]);
let w: BrowserWindow;
build: use github actions for windows (#44136) * build: test windows runner * build: try build windows on windows? * build: take win/cross changes * build: use bash as default shell always * build: configure git for windows build tools * build: bash as default * build: configure windows correctly * build: use sha1sum * build: force windows cipd init and python3 existence * just pain * build: restore cache on windows * build: use build-tools gclient * build: sync gclient vars to build windows job * build: output depshash for debugging * build: past sam was a silly goose * build: depshash logging * build: force lf endings for lock and DEPS * build: platform strings are hard * build: checkout on windows host * sup * no check * idk * sigh * ... * no double checkout * build: yolo some stuff * build: run gn-check for windows on linux hosts for speed * use container... * cry ? * build: e d * e d * no log * fix toolchain on windows cross check * build: use powershell to add mksnapshot_args * build: enable x86 and arm64 windows builds too * clean up * maybe not needed * build: keep action around for post step * build: configure git global on win * build: ia32 zip manifest * build: no patch depot_tools for tests * build: get arm64 windows closer to working * build: windows tar is ass * 32 bit on 32 bit * maybe bash * build: set up nodejs * correct windows sharding * fix some spec runner stuff * fix windows tests * overwrite -Force * sigh * screen res * wat * logs * ... more logs * line endings will be the death of me * remove 1080p force thing * vsctools + logging * disable some fullscreen tests on GHA * no progress * run all CI * install visual studio on arm64 * windows hax for non windows * maybe arm sdk * clean up depshash logic * build: use single check per platform * ensure clean args * fix loop * remove debug * update default build image sha for dispatch * plzzzz * one more try * arm64 vctools * sad * build: fix non-dispatch windows gn check * chore: debug datadog-ci location * chore: update build-tools for newer toolchain * chore: set path for datadog-ci * try this * chore: fixup gn check * fixup gn-check some more * fixup windows gn check * chore: fixup windows gn check * test: use cmd for Windows testing * fixup use cmd for testing on Windows * fixup windows GN check * fixup npm config arch for x86 * Can we set test files via powershell * fixup to set test files via powershell * fixup set test files via powershell * Don't check cross instance cache disk space on Windows * Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing (AGAIN) * use powershell if in powershell * fixup use powershell if in powershell * chore: remove no longer needed changes to depot_tools xref: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/5669094 and https://chromium-review.googlesource.com/c/chromium/src/+/5844046 * chore: try using 7zip on Windows to extract tarball * Revert "chore: try using 7zip on Windows to extract tarball" This reverts commit c7432b6a37857fd0746b8f1776fbd1103dba0b85. * test: debug failing tests on GHA windows * fix: ftbfs when including simdjson in Node.js (cherry picked from commit 48e44c40d61b7aa843a990d4e0c8dec676b4ce8f) * chore: try to track down Windows testing hang * use correct timeout * try this * see if this helps * try to figure out why node is running * shard tests to try to narrow down WOA lockup * try to narrow down problem test * Narrow down blocking test more * do we need a combo to repro * see if this cleans up the tests * fixup navigator.usb test * remove logging from problematic tests * Revert "shard tests to try to narrow down WOA lockup" This reverts commit a1806583769678491814cb8b008131c32be4e8fb. * remove logging * debug keyboard test * add timeout for Windows since arm64 sometimes hangs * see if this helps * put back original timeout * try to use screenCapture to get screenshots of what is going on on WOA * try using electron screencapture to debug WOA hang * chore: turn off privacy experience * run screenshot on both shards * fixup screencap * try to narrow down hanging spec * chore: cleanup servers left open * cleanup tests * Revert "try to narrow down hanging spec" This reverts commit a0f959f5382f4012a9919ac535d42c5333eb7d5f. * cleanup test debugging * fixup extensions spec * cleanup unneeded items * run wtf with 2 shards instead of 6 * Revert "run wtf with 2 shards instead of 6" This reverts commit ca2d282129ee42c535d80f9876d6fa0dc6c08344. * debug windows version on woa * dump more info * Get detailed CPU info * revert debugging * use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * try to track down which tests trigger hang * one or more of these combinations should hang * break up web contents spec to find hang * further break down api-web-contents to find hang * test: ensure all webContents are closed * test: fix require is not defined error * see if api-web-contents spec is now good * test: ensure all webContents are closed * Revert "try to track down which tests trigger hang" This reverts commit 07298d6ffeb4873ef7615a8ec3d1a6696e354ff4. * chore: use alternate location for windows toolchain * Reapply "try to track down which tests trigger hang" This reverts commit 0321f76d01069ef325339b6fe6ed39700eae2b6b. * try to narrow down problem test * fix TEST_SHARD env var * no, really fix TEST_SHARD env var * see if this fixes it * test: cleanup any remaining windows and webcontents * see if new cleanup helps * dont destroy webcontents for now * fixup dont destroy webcontents for now * Only cleanup right before process.exit * see if this fixes the hang * actually destroy webcontents * Revert "Reapply "try to track down which tests trigger hang"" This reverts commit cdee7de049ce6bb5f67bbcc64882c56aa2c73027. * see if this helps * Revert "see if this helps" This reverts commit 9a15a69cf7dbc456db7a61efa5b6870535bae993. * Is it all about the web contents? * it is all about the webcontents but which one? * Narrow down problem webcontents test * try to speed up git install on WOA * disable problematic test on WOA * remove debugging * remove debugging from choco installs * Revert "disable problematic test on WOA" This reverts commit e060fb0839b73d53cfde1f8acdca634f8e267937. * Revert "remove debugging" This reverts commit f18dd8b1a555f56bb06d0ea996a6eff31b424bf1. * run against all the tests in the failing shard * don't run visibility tests first * remove debugging * 3 is a magic number * Revert "3 is a magic number" This reverts commit 36b91ccf9f03a4b34230cd69ceca482f7d8428c1. * match what Appveyor runs exactly * Revert "match what Appveyor runs exactly" This reverts commit 7260dd432216c62696e4bc864930f17c857eabbe. * chore: sort files alphabetically * find out what spec is leaving stuff open * chore: Checkout PR HEAD commit instead of merge commit * try using app.exit instead of process.exit * test: cleanup BrowserWindows and webContents * Revert "chore: sort files alphabetically" This reverts commit d9e217ffb1522076e150fce9e43a31bf56716acb. * chore: use win32 to match process.platform Needed for build-tools to download from PRs * chore: cache yarn dir * fixup cache yarn * fixup use win32 to match process.platform * fixup use win32 to match process.platform * fixup cache yarn * Add debugging for WOA hang * Add debugging for failing keyboard lock test * Revert "Add debugging for WOA hang" This reverts commit 8df03d568d15a269e4026140d1158e8cdf551dec. * try using process.kill * add more debugging to keyboard.lock test * Revert "Add debugging for failing keyboard lock test" * remove debugging * test: disable keyboard.lock on Windows * test: disable fullscreen tests on Windows * test: only force test suite exit on WOA * fixup test: only force test suite exit on WOA * cleanup tests * extract yarn caching/install to action * try using bash to run windows tests * remove left over debugging * standardize on 'win' for Windows builds * use 'x86' for arch for manifest files * fixup try using bash to run windows tests * fixup use 'x86' for arch for manifest files * standardize on 'win' for Windows builds * fixup use 'x86' for arch for manifest files * fixup try using bash to run windows tests --------- Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org> Co-authored-by: Charles Kerr <charles@charleskerr.com>
2024-12-12 08:51:24 -08:00
beforeEach(async () => {
w = new BrowserWindow({ show: false, webPreferences: { contextIsolation: false } });
2020-03-20 13:28:31 -07:00
await w.loadURL('about:blank');
});
build: use github actions for windows (#44136) * build: test windows runner * build: try build windows on windows? * build: take win/cross changes * build: use bash as default shell always * build: configure git for windows build tools * build: bash as default * build: configure windows correctly * build: use sha1sum * build: force windows cipd init and python3 existence * just pain * build: restore cache on windows * build: use build-tools gclient * build: sync gclient vars to build windows job * build: output depshash for debugging * build: past sam was a silly goose * build: depshash logging * build: force lf endings for lock and DEPS * build: platform strings are hard * build: checkout on windows host * sup * no check * idk * sigh * ... * no double checkout * build: yolo some stuff * build: run gn-check for windows on linux hosts for speed * use container... * cry ? * build: e d * e d * no log * fix toolchain on windows cross check * build: use powershell to add mksnapshot_args * build: enable x86 and arm64 windows builds too * clean up * maybe not needed * build: keep action around for post step * build: configure git global on win * build: ia32 zip manifest * build: no patch depot_tools for tests * build: get arm64 windows closer to working * build: windows tar is ass * 32 bit on 32 bit * maybe bash * build: set up nodejs * correct windows sharding * fix some spec runner stuff * fix windows tests * overwrite -Force * sigh * screen res * wat * logs * ... more logs * line endings will be the death of me * remove 1080p force thing * vsctools + logging * disable some fullscreen tests on GHA * no progress * run all CI * install visual studio on arm64 * windows hax for non windows * maybe arm sdk * clean up depshash logic * build: use single check per platform * ensure clean args * fix loop * remove debug * update default build image sha for dispatch * plzzzz * one more try * arm64 vctools * sad * build: fix non-dispatch windows gn check * chore: debug datadog-ci location * chore: update build-tools for newer toolchain * chore: set path for datadog-ci * try this * chore: fixup gn check * fixup gn-check some more * fixup windows gn check * chore: fixup windows gn check * test: use cmd for Windows testing * fixup use cmd for testing on Windows * fixup windows GN check * fixup npm config arch for x86 * Can we set test files via powershell * fixup to set test files via powershell * fixup set test files via powershell * Don't check cross instance cache disk space on Windows * Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing (AGAIN) * use powershell if in powershell * fixup use powershell if in powershell * chore: remove no longer needed changes to depot_tools xref: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/5669094 and https://chromium-review.googlesource.com/c/chromium/src/+/5844046 * chore: try using 7zip on Windows to extract tarball * Revert "chore: try using 7zip on Windows to extract tarball" This reverts commit c7432b6a37857fd0746b8f1776fbd1103dba0b85. * test: debug failing tests on GHA windows * fix: ftbfs when including simdjson in Node.js (cherry picked from commit 48e44c40d61b7aa843a990d4e0c8dec676b4ce8f) * chore: try to track down Windows testing hang * use correct timeout * try this * see if this helps * try to figure out why node is running * shard tests to try to narrow down WOA lockup * try to narrow down problem test * Narrow down blocking test more * do we need a combo to repro * see if this cleans up the tests * fixup navigator.usb test * remove logging from problematic tests * Revert "shard tests to try to narrow down WOA lockup" This reverts commit a1806583769678491814cb8b008131c32be4e8fb. * remove logging * debug keyboard test * add timeout for Windows since arm64 sometimes hangs * see if this helps * put back original timeout * try to use screenCapture to get screenshots of what is going on on WOA * try using electron screencapture to debug WOA hang * chore: turn off privacy experience * run screenshot on both shards * fixup screencap * try to narrow down hanging spec * chore: cleanup servers left open * cleanup tests * Revert "try to narrow down hanging spec" This reverts commit a0f959f5382f4012a9919ac535d42c5333eb7d5f. * cleanup test debugging * fixup extensions spec * cleanup unneeded items * run wtf with 2 shards instead of 6 * Revert "run wtf with 2 shards instead of 6" This reverts commit ca2d282129ee42c535d80f9876d6fa0dc6c08344. * debug windows version on woa * dump more info * Get detailed CPU info * revert debugging * use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * try to track down which tests trigger hang * one or more of these combinations should hang * break up web contents spec to find hang * further break down api-web-contents to find hang * test: ensure all webContents are closed * test: fix require is not defined error * see if api-web-contents spec is now good * test: ensure all webContents are closed * Revert "try to track down which tests trigger hang" This reverts commit 07298d6ffeb4873ef7615a8ec3d1a6696e354ff4. * chore: use alternate location for windows toolchain * Reapply "try to track down which tests trigger hang" This reverts commit 0321f76d01069ef325339b6fe6ed39700eae2b6b. * try to narrow down problem test * fix TEST_SHARD env var * no, really fix TEST_SHARD env var * see if this fixes it * test: cleanup any remaining windows and webcontents * see if new cleanup helps * dont destroy webcontents for now * fixup dont destroy webcontents for now * Only cleanup right before process.exit * see if this fixes the hang * actually destroy webcontents * Revert "Reapply "try to track down which tests trigger hang"" This reverts commit cdee7de049ce6bb5f67bbcc64882c56aa2c73027. * see if this helps * Revert "see if this helps" This reverts commit 9a15a69cf7dbc456db7a61efa5b6870535bae993. * Is it all about the web contents? * it is all about the webcontents but which one? * Narrow down problem webcontents test * try to speed up git install on WOA * disable problematic test on WOA * remove debugging * remove debugging from choco installs * Revert "disable problematic test on WOA" This reverts commit e060fb0839b73d53cfde1f8acdca634f8e267937. * Revert "remove debugging" This reverts commit f18dd8b1a555f56bb06d0ea996a6eff31b424bf1. * run against all the tests in the failing shard * don't run visibility tests first * remove debugging * 3 is a magic number * Revert "3 is a magic number" This reverts commit 36b91ccf9f03a4b34230cd69ceca482f7d8428c1. * match what Appveyor runs exactly * Revert "match what Appveyor runs exactly" This reverts commit 7260dd432216c62696e4bc864930f17c857eabbe. * chore: sort files alphabetically * find out what spec is leaving stuff open * chore: Checkout PR HEAD commit instead of merge commit * try using app.exit instead of process.exit * test: cleanup BrowserWindows and webContents * Revert "chore: sort files alphabetically" This reverts commit d9e217ffb1522076e150fce9e43a31bf56716acb. * chore: use win32 to match process.platform Needed for build-tools to download from PRs * chore: cache yarn dir * fixup cache yarn * fixup use win32 to match process.platform * fixup use win32 to match process.platform * fixup cache yarn * Add debugging for WOA hang * Add debugging for failing keyboard lock test * Revert "Add debugging for WOA hang" This reverts commit 8df03d568d15a269e4026140d1158e8cdf551dec. * try using process.kill * add more debugging to keyboard.lock test * Revert "Add debugging for failing keyboard lock test" * remove debugging * test: disable keyboard.lock on Windows * test: disable fullscreen tests on Windows * test: only force test suite exit on WOA * fixup test: only force test suite exit on WOA * cleanup tests * extract yarn caching/install to action * try using bash to run windows tests * remove left over debugging * standardize on 'win' for Windows builds * use 'x86' for arch for manifest files * fixup try using bash to run windows tests * fixup use 'x86' for arch for manifest files * standardize on 'win' for Windows builds * fixup use 'x86' for arch for manifest files * fixup try using bash to run windows tests --------- Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org> Co-authored-by: Charles Kerr <charles@charleskerr.com>
2024-12-12 08:51:24 -08:00
afterEach(async () => {
await closeAllWindows();
});
it('resolves the returned promise with the result', async () => {
2020-03-20 13:28:31 -07:00
const result = await w.webContents.executeJavaScript(code);
expect(result).to.equal(expected);
});
it('resolves the returned promise with the result if the code returns an asynchronous promise', async () => {
2020-03-20 13:28:31 -07:00
const result = await w.webContents.executeJavaScript(asyncCode);
expect(result).to.equal(expected);
});
it('rejects the returned promise if an async error is thrown', async () => {
2020-03-20 13:28:31 -07:00
await expect(w.webContents.executeJavaScript(badAsyncCode)).to.eventually.be.rejectedWith(expectedErrorMsg);
});
it('rejects the returned promise with an error if an Error.prototype is thrown', async () => {
for (const error of errorTypes) {
await expect(w.webContents.executeJavaScript(`Promise.reject(new ${error.name}("Wamp-wamp"))`))
2020-03-20 13:28:31 -07:00
.to.eventually.be.rejectedWith(error);
}
2020-03-20 13:28:31 -07:00
});
});
2019-11-01 13:37:02 -07:00
describe('on a real page', () => {
2020-03-20 13:28:31 -07:00
let w: BrowserWindow;
beforeEach(() => {
2020-03-20 13:28:31 -07:00
w = new BrowserWindow({ show: false });
});
afterEach(closeAllWindows);
let server: http.Server;
let serverUrl: string;
before(async () => {
server = http.createServer((request, response) => {
2020-03-20 13:28:31 -07:00
response.end();
});
serverUrl = (await listen(server)).url;
2020-03-20 13:28:31 -07:00
});
after(() => {
2020-03-20 13:28:31 -07:00
server.close();
});
it('works after page load and during subframe load', async () => {
await w.loadURL(serverUrl);
// initiate a sub-frame load, then try and execute script during it
await w.webContents.executeJavaScript(`
var iframe = document.createElement('iframe')
iframe.src = '${serverUrl}/slow'
document.body.appendChild(iframe)
null // don't return the iframe
`);
await w.webContents.executeJavaScript('console.log(\'hello\')');
});
it('executes after page load', async () => {
const executeJavaScript = w.webContents.executeJavaScript('(() => "test")()');
2020-03-20 13:28:31 -07:00
w.loadURL(serverUrl);
const result = await executeJavaScript;
expect(result).to.equal('test');
2020-03-20 13:28:31 -07:00
});
});
});
describe('webContents.executeJavaScriptInIsolatedWorld', () => {
2020-03-20 13:28:31 -07:00
let w: BrowserWindow;
before(async () => {
2020-03-20 13:28:31 -07:00
w = new BrowserWindow({ show: false, webPreferences: { contextIsolation: true } });
await w.loadURL('about:blank');
});
build: use github actions for windows (#44136) * build: test windows runner * build: try build windows on windows? * build: take win/cross changes * build: use bash as default shell always * build: configure git for windows build tools * build: bash as default * build: configure windows correctly * build: use sha1sum * build: force windows cipd init and python3 existence * just pain * build: restore cache on windows * build: use build-tools gclient * build: sync gclient vars to build windows job * build: output depshash for debugging * build: past sam was a silly goose * build: depshash logging * build: force lf endings for lock and DEPS * build: platform strings are hard * build: checkout on windows host * sup * no check * idk * sigh * ... * no double checkout * build: yolo some stuff * build: run gn-check for windows on linux hosts for speed * use container... * cry ? * build: e d * e d * no log * fix toolchain on windows cross check * build: use powershell to add mksnapshot_args * build: enable x86 and arm64 windows builds too * clean up * maybe not needed * build: keep action around for post step * build: configure git global on win * build: ia32 zip manifest * build: no patch depot_tools for tests * build: get arm64 windows closer to working * build: windows tar is ass * 32 bit on 32 bit * maybe bash * build: set up nodejs * correct windows sharding * fix some spec runner stuff * fix windows tests * overwrite -Force * sigh * screen res * wat * logs * ... more logs * line endings will be the death of me * remove 1080p force thing * vsctools + logging * disable some fullscreen tests on GHA * no progress * run all CI * install visual studio on arm64 * windows hax for non windows * maybe arm sdk * clean up depshash logic * build: use single check per platform * ensure clean args * fix loop * remove debug * update default build image sha for dispatch * plzzzz * one more try * arm64 vctools * sad * build: fix non-dispatch windows gn check * chore: debug datadog-ci location * chore: update build-tools for newer toolchain * chore: set path for datadog-ci * try this * chore: fixup gn check * fixup gn-check some more * fixup windows gn check * chore: fixup windows gn check * test: use cmd for Windows testing * fixup use cmd for testing on Windows * fixup windows GN check * fixup npm config arch for x86 * Can we set test files via powershell * fixup to set test files via powershell * fixup set test files via powershell * Don't check cross instance cache disk space on Windows * Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing (AGAIN) * use powershell if in powershell * fixup use powershell if in powershell * chore: remove no longer needed changes to depot_tools xref: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/5669094 and https://chromium-review.googlesource.com/c/chromium/src/+/5844046 * chore: try using 7zip on Windows to extract tarball * Revert "chore: try using 7zip on Windows to extract tarball" This reverts commit c7432b6a37857fd0746b8f1776fbd1103dba0b85. * test: debug failing tests on GHA windows * fix: ftbfs when including simdjson in Node.js (cherry picked from commit 48e44c40d61b7aa843a990d4e0c8dec676b4ce8f) * chore: try to track down Windows testing hang * use correct timeout * try this * see if this helps * try to figure out why node is running * shard tests to try to narrow down WOA lockup * try to narrow down problem test * Narrow down blocking test more * do we need a combo to repro * see if this cleans up the tests * fixup navigator.usb test * remove logging from problematic tests * Revert "shard tests to try to narrow down WOA lockup" This reverts commit a1806583769678491814cb8b008131c32be4e8fb. * remove logging * debug keyboard test * add timeout for Windows since arm64 sometimes hangs * see if this helps * put back original timeout * try to use screenCapture to get screenshots of what is going on on WOA * try using electron screencapture to debug WOA hang * chore: turn off privacy experience * run screenshot on both shards * fixup screencap * try to narrow down hanging spec * chore: cleanup servers left open * cleanup tests * Revert "try to narrow down hanging spec" This reverts commit a0f959f5382f4012a9919ac535d42c5333eb7d5f. * cleanup test debugging * fixup extensions spec * cleanup unneeded items * run wtf with 2 shards instead of 6 * Revert "run wtf with 2 shards instead of 6" This reverts commit ca2d282129ee42c535d80f9876d6fa0dc6c08344. * debug windows version on woa * dump more info * Get detailed CPU info * revert debugging * use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * try to track down which tests trigger hang * one or more of these combinations should hang * break up web contents spec to find hang * further break down api-web-contents to find hang * test: ensure all webContents are closed * test: fix require is not defined error * see if api-web-contents spec is now good * test: ensure all webContents are closed * Revert "try to track down which tests trigger hang" This reverts commit 07298d6ffeb4873ef7615a8ec3d1a6696e354ff4. * chore: use alternate location for windows toolchain * Reapply "try to track down which tests trigger hang" This reverts commit 0321f76d01069ef325339b6fe6ed39700eae2b6b. * try to narrow down problem test * fix TEST_SHARD env var * no, really fix TEST_SHARD env var * see if this fixes it * test: cleanup any remaining windows and webcontents * see if new cleanup helps * dont destroy webcontents for now * fixup dont destroy webcontents for now * Only cleanup right before process.exit * see if this fixes the hang * actually destroy webcontents * Revert "Reapply "try to track down which tests trigger hang"" This reverts commit cdee7de049ce6bb5f67bbcc64882c56aa2c73027. * see if this helps * Revert "see if this helps" This reverts commit 9a15a69cf7dbc456db7a61efa5b6870535bae993. * Is it all about the web contents? * it is all about the webcontents but which one? * Narrow down problem webcontents test * try to speed up git install on WOA * disable problematic test on WOA * remove debugging * remove debugging from choco installs * Revert "disable problematic test on WOA" This reverts commit e060fb0839b73d53cfde1f8acdca634f8e267937. * Revert "remove debugging" This reverts commit f18dd8b1a555f56bb06d0ea996a6eff31b424bf1. * run against all the tests in the failing shard * don't run visibility tests first * remove debugging * 3 is a magic number * Revert "3 is a magic number" This reverts commit 36b91ccf9f03a4b34230cd69ceca482f7d8428c1. * match what Appveyor runs exactly * Revert "match what Appveyor runs exactly" This reverts commit 7260dd432216c62696e4bc864930f17c857eabbe. * chore: sort files alphabetically * find out what spec is leaving stuff open * chore: Checkout PR HEAD commit instead of merge commit * try using app.exit instead of process.exit * test: cleanup BrowserWindows and webContents * Revert "chore: sort files alphabetically" This reverts commit d9e217ffb1522076e150fce9e43a31bf56716acb. * chore: use win32 to match process.platform Needed for build-tools to download from PRs * chore: cache yarn dir * fixup cache yarn * fixup use win32 to match process.platform * fixup use win32 to match process.platform * fixup cache yarn * Add debugging for WOA hang * Add debugging for failing keyboard lock test * Revert "Add debugging for WOA hang" This reverts commit 8df03d568d15a269e4026140d1158e8cdf551dec. * try using process.kill * add more debugging to keyboard.lock test * Revert "Add debugging for failing keyboard lock test" * remove debugging * test: disable keyboard.lock on Windows * test: disable fullscreen tests on Windows * test: only force test suite exit on WOA * fixup test: only force test suite exit on WOA * cleanup tests * extract yarn caching/install to action * try using bash to run windows tests * remove left over debugging * standardize on 'win' for Windows builds * use 'x86' for arch for manifest files * fixup try using bash to run windows tests * fixup use 'x86' for arch for manifest files * standardize on 'win' for Windows builds * fixup use 'x86' for arch for manifest files * fixup try using bash to run windows tests --------- Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org> Co-authored-by: Charles Kerr <charles@charleskerr.com>
2024-12-12 08:51:24 -08:00
after(() => w.close());
it('resolves the returned promise with the result', async () => {
2020-03-20 13:28:31 -07:00
await w.webContents.executeJavaScriptInIsolatedWorld(999, [{ code: 'window.X = 123' }]);
const isolatedResult = await w.webContents.executeJavaScriptInIsolatedWorld(999, [{ code: 'window.X' }]);
const mainWorldResult = await w.webContents.executeJavaScript('window.X');
expect(isolatedResult).to.equal(123);
expect(mainWorldResult).to.equal(undefined);
});
});
describe('loadURL() promise API', () => {
2020-03-20 13:28:31 -07:00
let w: BrowserWindow;
build: use github actions for windows (#44136) * build: test windows runner * build: try build windows on windows? * build: take win/cross changes * build: use bash as default shell always * build: configure git for windows build tools * build: bash as default * build: configure windows correctly * build: use sha1sum * build: force windows cipd init and python3 existence * just pain * build: restore cache on windows * build: use build-tools gclient * build: sync gclient vars to build windows job * build: output depshash for debugging * build: past sam was a silly goose * build: depshash logging * build: force lf endings for lock and DEPS * build: platform strings are hard * build: checkout on windows host * sup * no check * idk * sigh * ... * no double checkout * build: yolo some stuff * build: run gn-check for windows on linux hosts for speed * use container... * cry ? * build: e d * e d * no log * fix toolchain on windows cross check * build: use powershell to add mksnapshot_args * build: enable x86 and arm64 windows builds too * clean up * maybe not needed * build: keep action around for post step * build: configure git global on win * build: ia32 zip manifest * build: no patch depot_tools for tests * build: get arm64 windows closer to working * build: windows tar is ass * 32 bit on 32 bit * maybe bash * build: set up nodejs * correct windows sharding * fix some spec runner stuff * fix windows tests * overwrite -Force * sigh * screen res * wat * logs * ... more logs * line endings will be the death of me * remove 1080p force thing * vsctools + logging * disable some fullscreen tests on GHA * no progress * run all CI * install visual studio on arm64 * windows hax for non windows * maybe arm sdk * clean up depshash logic * build: use single check per platform * ensure clean args * fix loop * remove debug * update default build image sha for dispatch * plzzzz * one more try * arm64 vctools * sad * build: fix non-dispatch windows gn check * chore: debug datadog-ci location * chore: update build-tools for newer toolchain * chore: set path for datadog-ci * try this * chore: fixup gn check * fixup gn-check some more * fixup windows gn check * chore: fixup windows gn check * test: use cmd for Windows testing * fixup use cmd for testing on Windows * fixup windows GN check * fixup npm config arch for x86 * Can we set test files via powershell * fixup to set test files via powershell * fixup set test files via powershell * Don't check cross instance cache disk space on Windows * Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing (AGAIN) * use powershell if in powershell * fixup use powershell if in powershell * chore: remove no longer needed changes to depot_tools xref: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/5669094 and https://chromium-review.googlesource.com/c/chromium/src/+/5844046 * chore: try using 7zip on Windows to extract tarball * Revert "chore: try using 7zip on Windows to extract tarball" This reverts commit c7432b6a37857fd0746b8f1776fbd1103dba0b85. * test: debug failing tests on GHA windows * fix: ftbfs when including simdjson in Node.js (cherry picked from commit 48e44c40d61b7aa843a990d4e0c8dec676b4ce8f) * chore: try to track down Windows testing hang * use correct timeout * try this * see if this helps * try to figure out why node is running * shard tests to try to narrow down WOA lockup * try to narrow down problem test * Narrow down blocking test more * do we need a combo to repro * see if this cleans up the tests * fixup navigator.usb test * remove logging from problematic tests * Revert "shard tests to try to narrow down WOA lockup" This reverts commit a1806583769678491814cb8b008131c32be4e8fb. * remove logging * debug keyboard test * add timeout for Windows since arm64 sometimes hangs * see if this helps * put back original timeout * try to use screenCapture to get screenshots of what is going on on WOA * try using electron screencapture to debug WOA hang * chore: turn off privacy experience * run screenshot on both shards * fixup screencap * try to narrow down hanging spec * chore: cleanup servers left open * cleanup tests * Revert "try to narrow down hanging spec" This reverts commit a0f959f5382f4012a9919ac535d42c5333eb7d5f. * cleanup test debugging * fixup extensions spec * cleanup unneeded items * run wtf with 2 shards instead of 6 * Revert "run wtf with 2 shards instead of 6" This reverts commit ca2d282129ee42c535d80f9876d6fa0dc6c08344. * debug windows version on woa * dump more info * Get detailed CPU info * revert debugging * use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * try to track down which tests trigger hang * one or more of these combinations should hang * break up web contents spec to find hang * further break down api-web-contents to find hang * test: ensure all webContents are closed * test: fix require is not defined error * see if api-web-contents spec is now good * test: ensure all webContents are closed * Revert "try to track down which tests trigger hang" This reverts commit 07298d6ffeb4873ef7615a8ec3d1a6696e354ff4. * chore: use alternate location for windows toolchain * Reapply "try to track down which tests trigger hang" This reverts commit 0321f76d01069ef325339b6fe6ed39700eae2b6b. * try to narrow down problem test * fix TEST_SHARD env var * no, really fix TEST_SHARD env var * see if this fixes it * test: cleanup any remaining windows and webcontents * see if new cleanup helps * dont destroy webcontents for now * fixup dont destroy webcontents for now * Only cleanup right before process.exit * see if this fixes the hang * actually destroy webcontents * Revert "Reapply "try to track down which tests trigger hang"" This reverts commit cdee7de049ce6bb5f67bbcc64882c56aa2c73027. * see if this helps * Revert "see if this helps" This reverts commit 9a15a69cf7dbc456db7a61efa5b6870535bae993. * Is it all about the web contents? * it is all about the webcontents but which one? * Narrow down problem webcontents test * try to speed up git install on WOA * disable problematic test on WOA * remove debugging * remove debugging from choco installs * Revert "disable problematic test on WOA" This reverts commit e060fb0839b73d53cfde1f8acdca634f8e267937. * Revert "remove debugging" This reverts commit f18dd8b1a555f56bb06d0ea996a6eff31b424bf1. * run against all the tests in the failing shard * don't run visibility tests first * remove debugging * 3 is a magic number * Revert "3 is a magic number" This reverts commit 36b91ccf9f03a4b34230cd69ceca482f7d8428c1. * match what Appveyor runs exactly * Revert "match what Appveyor runs exactly" This reverts commit 7260dd432216c62696e4bc864930f17c857eabbe. * chore: sort files alphabetically * find out what spec is leaving stuff open * chore: Checkout PR HEAD commit instead of merge commit * try using app.exit instead of process.exit * test: cleanup BrowserWindows and webContents * Revert "chore: sort files alphabetically" This reverts commit d9e217ffb1522076e150fce9e43a31bf56716acb. * chore: use win32 to match process.platform Needed for build-tools to download from PRs * chore: cache yarn dir * fixup cache yarn * fixup use win32 to match process.platform * fixup use win32 to match process.platform * fixup cache yarn * Add debugging for WOA hang * Add debugging for failing keyboard lock test * Revert "Add debugging for WOA hang" This reverts commit 8df03d568d15a269e4026140d1158e8cdf551dec. * try using process.kill * add more debugging to keyboard.lock test * Revert "Add debugging for failing keyboard lock test" * remove debugging * test: disable keyboard.lock on Windows * test: disable fullscreen tests on Windows * test: only force test suite exit on WOA * fixup test: only force test suite exit on WOA * cleanup tests * extract yarn caching/install to action * try using bash to run windows tests * remove left over debugging * standardize on 'win' for Windows builds * use 'x86' for arch for manifest files * fixup try using bash to run windows tests * fixup use 'x86' for arch for manifest files * standardize on 'win' for Windows builds * fixup use 'x86' for arch for manifest files * fixup try using bash to run windows tests --------- Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org> Co-authored-by: Charles Kerr <charles@charleskerr.com>
2024-12-12 08:51:24 -08:00
let s: http.Server;
chore: bump chromium to 141.0.7361.0 (main) (#48054) * chore: bump chromium in DEPS to 141.0.7352.0 * chore: update patches * 6830573: Revert 'Migrate WrappableWithNamedPropertyInterceptor to gin::Wrappable' | https://chromium-review.googlesource.com/c/chromium/src/+/6830573 * chore: bump chromium in DEPS to 141.0.7354.0 * chore: bump chromium in DEPS to 141.0.7356.0 * chore: bump chromium in DEPS to 141.0.7357.0 * chore: bump chromium in DEPS to 141.0.7359.0 * chore: bump chromium in DEPS to 141.0.7361.0 * 6838518: [Mac] Correctly deallocate sandbox error buffers and prevent crash resulting from nullptr assignment | https://chromium-review.googlesource.com/c/chromium/src/+/6838518 * 6850973: Reland "Use base::ByteCount in base::SysInfo." | https://chromium-review.googlesource.com/c/chromium/src/+/6850973 * 6506565: [FPF-CI] Create initial NoiseHash in the browser. | https://chromium-review.googlesource.com/c/chromium/src/+/6506565 * chore: update patches * fixup! 6850973: Reland "Use base::ByteCount in base::SysInfo." | https://chromium-review.googlesource.com/c/chromium/src/+/6850973 * fixup! 6506565: [FPF-CI] Create initial NoiseHash in the browser. | https://chromium-review.googlesource.com/c/chromium/src/+/6506565 * fix: unsafe buffer warning in fix_properly_honor_printing_page_ranges.patch * fix: FTBFS in src_remove_dependency_on_wrapper-descriptor-based_cppheap.patch This change should be upstreamed. Fixes this error: ../../third_party/electron_node/src/env.cc:606:3: error: no matching function for call to 'Wrap' 606 | v8::Object::Wrap<v8::CppHeapPointerTag::kDefaultTag>( | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../v8/include/v8-object.h:1076:14: note: candidate function template not viable: cannot convert argument of incomplete type 'void *' to 'v8::Object::Wrappable *' for 3rd argument 1076 | void Object::Wrap(v8::Isolate* isolate, const v8::Local<v8::Object>& wrapper, | ^ 1077 | v8::Object::Wrappable* wrappable) { | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../v8/include/v8-object.h:1084:14: note: candidate function template not viable: no known conversion from 'Local<Object>' to 'const PersistentBase<Object>' for 2nd argument 1084 | void Object::Wrap(v8::Isolate* isolate, const PersistentBase<Object>& wrapper, | ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../v8/include/v8-object.h:1093:14: note: candidate function template not viable: no known conversion from 'Local<Object>' to 'const BasicTracedReference<Object>' for 2nd argument 1093 | void Object::Wrap(v8::Isolate* isolate, | ^ 1094 | const BasicTracedReference<Object>& wrapper, | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 error generated. * [v8-init] Access crash key only from main thread | https://chromium-review.googlesource.com/c/chromium/src/+/6827167 * chore: e patches all * chore: remove chore_restore_some_deprecated_wrapper_utility_in_gin.patch from patches this remove line got re-added when rebasing roller/chromium/main * chore: e patches all * fix: include base/time/time.h when using base::Time * chore: update patches * Make --host-rules an alias for --host-resolver-rules. Refs https://chromium-review.googlesource.com/c/chromium/src/+/4867872 * ci: update BUILD_TOOLS_SHA Refs https://github.com/electron/build-tools/pull/746 * [Fontations] Remove Fontations suffix from font names Refs https://chromium-review.googlesource.com/c/chromium/src/+/6835930 * temp: debug macOS addon build failure * Revert "temp: debug macOS addon build failure" This reverts commit 40bc8abab65dc83e17c4ab97cb6e7522a193fb44. * test: run tests with Xcode 16.4 * ci: fix tccdb update for macOS 15 * spec: disable opening external application for loadURL on macOS opening unknown external application will bring up dialog to choose apps from application store which will break our other test suites that want to capture screen for pixel matching. The loadURL spec that tests bad-scheme://foo is sufficient that we hit the permission handler for openExternal since at that point we already know the runtime gave up on handling the scheme. * chore: rebase patches * chore: disable codesiging tests * ci: update ScreenCaptureApprovals.plist for /bin/bash * ci: try updating tcc permissions * ci: update TCC permissions Refs https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive * chore: test with 1st quadrant of the window * chore: adjust for macOS 15 menubar height --------- Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> Co-authored-by: Keeley Hammond <khammond@slack-corp.com> Co-authored-by: Keeley Hammond <vertedinde@electronjs.org> Co-authored-by: Charles Kerr <charles@charleskerr.com> Co-authored-by: deepak1556 <hop2deep@gmail.com> Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2025-08-29 12:31:47 +09:00
before(function () {
session.fromPartition('loadurl-webcontents-spec').setPermissionRequestHandler((webContents, permission, callback) => {
if (permission === 'openExternal') {
return callback(false);
}
callback(true);
});
});
build: use github actions for windows (#44136) * build: test windows runner * build: try build windows on windows? * build: take win/cross changes * build: use bash as default shell always * build: configure git for windows build tools * build: bash as default * build: configure windows correctly * build: use sha1sum * build: force windows cipd init and python3 existence * just pain * build: restore cache on windows * build: use build-tools gclient * build: sync gclient vars to build windows job * build: output depshash for debugging * build: past sam was a silly goose * build: depshash logging * build: force lf endings for lock and DEPS * build: platform strings are hard * build: checkout on windows host * sup * no check * idk * sigh * ... * no double checkout * build: yolo some stuff * build: run gn-check for windows on linux hosts for speed * use container... * cry ? * build: e d * e d * no log * fix toolchain on windows cross check * build: use powershell to add mksnapshot_args * build: enable x86 and arm64 windows builds too * clean up * maybe not needed * build: keep action around for post step * build: configure git global on win * build: ia32 zip manifest * build: no patch depot_tools for tests * build: get arm64 windows closer to working * build: windows tar is ass * 32 bit on 32 bit * maybe bash * build: set up nodejs * correct windows sharding * fix some spec runner stuff * fix windows tests * overwrite -Force * sigh * screen res * wat * logs * ... more logs * line endings will be the death of me * remove 1080p force thing * vsctools + logging * disable some fullscreen tests on GHA * no progress * run all CI * install visual studio on arm64 * windows hax for non windows * maybe arm sdk * clean up depshash logic * build: use single check per platform * ensure clean args * fix loop * remove debug * update default build image sha for dispatch * plzzzz * one more try * arm64 vctools * sad * build: fix non-dispatch windows gn check * chore: debug datadog-ci location * chore: update build-tools for newer toolchain * chore: set path for datadog-ci * try this * chore: fixup gn check * fixup gn-check some more * fixup windows gn check * chore: fixup windows gn check * test: use cmd for Windows testing * fixup use cmd for testing on Windows * fixup windows GN check * fixup npm config arch for x86 * Can we set test files via powershell * fixup to set test files via powershell * fixup set test files via powershell * Don't check cross instance cache disk space on Windows * Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing (AGAIN) * use powershell if in powershell * fixup use powershell if in powershell * chore: remove no longer needed changes to depot_tools xref: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/5669094 and https://chromium-review.googlesource.com/c/chromium/src/+/5844046 * chore: try using 7zip on Windows to extract tarball * Revert "chore: try using 7zip on Windows to extract tarball" This reverts commit c7432b6a37857fd0746b8f1776fbd1103dba0b85. * test: debug failing tests on GHA windows * fix: ftbfs when including simdjson in Node.js (cherry picked from commit 48e44c40d61b7aa843a990d4e0c8dec676b4ce8f) * chore: try to track down Windows testing hang * use correct timeout * try this * see if this helps * try to figure out why node is running * shard tests to try to narrow down WOA lockup * try to narrow down problem test * Narrow down blocking test more * do we need a combo to repro * see if this cleans up the tests * fixup navigator.usb test * remove logging from problematic tests * Revert "shard tests to try to narrow down WOA lockup" This reverts commit a1806583769678491814cb8b008131c32be4e8fb. * remove logging * debug keyboard test * add timeout for Windows since arm64 sometimes hangs * see if this helps * put back original timeout * try to use screenCapture to get screenshots of what is going on on WOA * try using electron screencapture to debug WOA hang * chore: turn off privacy experience * run screenshot on both shards * fixup screencap * try to narrow down hanging spec * chore: cleanup servers left open * cleanup tests * Revert "try to narrow down hanging spec" This reverts commit a0f959f5382f4012a9919ac535d42c5333eb7d5f. * cleanup test debugging * fixup extensions spec * cleanup unneeded items * run wtf with 2 shards instead of 6 * Revert "run wtf with 2 shards instead of 6" This reverts commit ca2d282129ee42c535d80f9876d6fa0dc6c08344. * debug windows version on woa * dump more info * Get detailed CPU info * revert debugging * use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * try to track down which tests trigger hang * one or more of these combinations should hang * break up web contents spec to find hang * further break down api-web-contents to find hang * test: ensure all webContents are closed * test: fix require is not defined error * see if api-web-contents spec is now good * test: ensure all webContents are closed * Revert "try to track down which tests trigger hang" This reverts commit 07298d6ffeb4873ef7615a8ec3d1a6696e354ff4. * chore: use alternate location for windows toolchain * Reapply "try to track down which tests trigger hang" This reverts commit 0321f76d01069ef325339b6fe6ed39700eae2b6b. * try to narrow down problem test * fix TEST_SHARD env var * no, really fix TEST_SHARD env var * see if this fixes it * test: cleanup any remaining windows and webcontents * see if new cleanup helps * dont destroy webcontents for now * fixup dont destroy webcontents for now * Only cleanup right before process.exit * see if this fixes the hang * actually destroy webcontents * Revert "Reapply "try to track down which tests trigger hang"" This reverts commit cdee7de049ce6bb5f67bbcc64882c56aa2c73027. * see if this helps * Revert "see if this helps" This reverts commit 9a15a69cf7dbc456db7a61efa5b6870535bae993. * Is it all about the web contents? * it is all about the webcontents but which one? * Narrow down problem webcontents test * try to speed up git install on WOA * disable problematic test on WOA * remove debugging * remove debugging from choco installs * Revert "disable problematic test on WOA" This reverts commit e060fb0839b73d53cfde1f8acdca634f8e267937. * Revert "remove debugging" This reverts commit f18dd8b1a555f56bb06d0ea996a6eff31b424bf1. * run against all the tests in the failing shard * don't run visibility tests first * remove debugging * 3 is a magic number * Revert "3 is a magic number" This reverts commit 36b91ccf9f03a4b34230cd69ceca482f7d8428c1. * match what Appveyor runs exactly * Revert "match what Appveyor runs exactly" This reverts commit 7260dd432216c62696e4bc864930f17c857eabbe. * chore: sort files alphabetically * find out what spec is leaving stuff open * chore: Checkout PR HEAD commit instead of merge commit * try using app.exit instead of process.exit * test: cleanup BrowserWindows and webContents * Revert "chore: sort files alphabetically" This reverts commit d9e217ffb1522076e150fce9e43a31bf56716acb. * chore: use win32 to match process.platform Needed for build-tools to download from PRs * chore: cache yarn dir * fixup cache yarn * fixup use win32 to match process.platform * fixup use win32 to match process.platform * fixup cache yarn * Add debugging for WOA hang * Add debugging for failing keyboard lock test * Revert "Add debugging for WOA hang" This reverts commit 8df03d568d15a269e4026140d1158e8cdf551dec. * try using process.kill * add more debugging to keyboard.lock test * Revert "Add debugging for failing keyboard lock test" * remove debugging * test: disable keyboard.lock on Windows * test: disable fullscreen tests on Windows * test: only force test suite exit on WOA * fixup test: only force test suite exit on WOA * cleanup tests * extract yarn caching/install to action * try using bash to run windows tests * remove left over debugging * standardize on 'win' for Windows builds * use 'x86' for arch for manifest files * fixup try using bash to run windows tests * fixup use 'x86' for arch for manifest files * standardize on 'win' for Windows builds * fixup use 'x86' for arch for manifest files * fixup try using bash to run windows tests --------- Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org> Co-authored-by: Charles Kerr <charles@charleskerr.com>
2024-12-12 08:51:24 -08:00
afterEach(() => {
if (s) {
s.close();
s = null as unknown as http.Server;
}
});
beforeEach(async () => {
chore: bump chromium to 141.0.7361.0 (main) (#48054) * chore: bump chromium in DEPS to 141.0.7352.0 * chore: update patches * 6830573: Revert 'Migrate WrappableWithNamedPropertyInterceptor to gin::Wrappable' | https://chromium-review.googlesource.com/c/chromium/src/+/6830573 * chore: bump chromium in DEPS to 141.0.7354.0 * chore: bump chromium in DEPS to 141.0.7356.0 * chore: bump chromium in DEPS to 141.0.7357.0 * chore: bump chromium in DEPS to 141.0.7359.0 * chore: bump chromium in DEPS to 141.0.7361.0 * 6838518: [Mac] Correctly deallocate sandbox error buffers and prevent crash resulting from nullptr assignment | https://chromium-review.googlesource.com/c/chromium/src/+/6838518 * 6850973: Reland "Use base::ByteCount in base::SysInfo." | https://chromium-review.googlesource.com/c/chromium/src/+/6850973 * 6506565: [FPF-CI] Create initial NoiseHash in the browser. | https://chromium-review.googlesource.com/c/chromium/src/+/6506565 * chore: update patches * fixup! 6850973: Reland "Use base::ByteCount in base::SysInfo." | https://chromium-review.googlesource.com/c/chromium/src/+/6850973 * fixup! 6506565: [FPF-CI] Create initial NoiseHash in the browser. | https://chromium-review.googlesource.com/c/chromium/src/+/6506565 * fix: unsafe buffer warning in fix_properly_honor_printing_page_ranges.patch * fix: FTBFS in src_remove_dependency_on_wrapper-descriptor-based_cppheap.patch This change should be upstreamed. Fixes this error: ../../third_party/electron_node/src/env.cc:606:3: error: no matching function for call to 'Wrap' 606 | v8::Object::Wrap<v8::CppHeapPointerTag::kDefaultTag>( | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../v8/include/v8-object.h:1076:14: note: candidate function template not viable: cannot convert argument of incomplete type 'void *' to 'v8::Object::Wrappable *' for 3rd argument 1076 | void Object::Wrap(v8::Isolate* isolate, const v8::Local<v8::Object>& wrapper, | ^ 1077 | v8::Object::Wrappable* wrappable) { | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../v8/include/v8-object.h:1084:14: note: candidate function template not viable: no known conversion from 'Local<Object>' to 'const PersistentBase<Object>' for 2nd argument 1084 | void Object::Wrap(v8::Isolate* isolate, const PersistentBase<Object>& wrapper, | ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../v8/include/v8-object.h:1093:14: note: candidate function template not viable: no known conversion from 'Local<Object>' to 'const BasicTracedReference<Object>' for 2nd argument 1093 | void Object::Wrap(v8::Isolate* isolate, | ^ 1094 | const BasicTracedReference<Object>& wrapper, | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 error generated. * [v8-init] Access crash key only from main thread | https://chromium-review.googlesource.com/c/chromium/src/+/6827167 * chore: e patches all * chore: remove chore_restore_some_deprecated_wrapper_utility_in_gin.patch from patches this remove line got re-added when rebasing roller/chromium/main * chore: e patches all * fix: include base/time/time.h when using base::Time * chore: update patches * Make --host-rules an alias for --host-resolver-rules. Refs https://chromium-review.googlesource.com/c/chromium/src/+/4867872 * ci: update BUILD_TOOLS_SHA Refs https://github.com/electron/build-tools/pull/746 * [Fontations] Remove Fontations suffix from font names Refs https://chromium-review.googlesource.com/c/chromium/src/+/6835930 * temp: debug macOS addon build failure * Revert "temp: debug macOS addon build failure" This reverts commit 40bc8abab65dc83e17c4ab97cb6e7522a193fb44. * test: run tests with Xcode 16.4 * ci: fix tccdb update for macOS 15 * spec: disable opening external application for loadURL on macOS opening unknown external application will bring up dialog to choose apps from application store which will break our other test suites that want to capture screen for pixel matching. The loadURL spec that tests bad-scheme://foo is sufficient that we hit the permission handler for openExternal since at that point we already know the runtime gave up on handling the scheme. * chore: rebase patches * chore: disable codesiging tests * ci: update ScreenCaptureApprovals.plist for /bin/bash * ci: try updating tcc permissions * ci: update TCC permissions Refs https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive * chore: test with 1st quadrant of the window * chore: adjust for macOS 15 menubar height --------- Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> Co-authored-by: Keeley Hammond <khammond@slack-corp.com> Co-authored-by: Keeley Hammond <vertedinde@electronjs.org> Co-authored-by: Charles Kerr <charles@charleskerr.com> Co-authored-by: deepak1556 <hop2deep@gmail.com> Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2025-08-29 12:31:47 +09:00
w = new BrowserWindow({
show: false,
webPreferences: {
partition: 'loadurl-webcontents-spec'
}
});
2020-03-20 13:28:31 -07:00
});
afterEach(closeAllWindows);
chore: bump chromium to 141.0.7361.0 (main) (#48054) * chore: bump chromium in DEPS to 141.0.7352.0 * chore: update patches * 6830573: Revert 'Migrate WrappableWithNamedPropertyInterceptor to gin::Wrappable' | https://chromium-review.googlesource.com/c/chromium/src/+/6830573 * chore: bump chromium in DEPS to 141.0.7354.0 * chore: bump chromium in DEPS to 141.0.7356.0 * chore: bump chromium in DEPS to 141.0.7357.0 * chore: bump chromium in DEPS to 141.0.7359.0 * chore: bump chromium in DEPS to 141.0.7361.0 * 6838518: [Mac] Correctly deallocate sandbox error buffers and prevent crash resulting from nullptr assignment | https://chromium-review.googlesource.com/c/chromium/src/+/6838518 * 6850973: Reland "Use base::ByteCount in base::SysInfo." | https://chromium-review.googlesource.com/c/chromium/src/+/6850973 * 6506565: [FPF-CI] Create initial NoiseHash in the browser. | https://chromium-review.googlesource.com/c/chromium/src/+/6506565 * chore: update patches * fixup! 6850973: Reland "Use base::ByteCount in base::SysInfo." | https://chromium-review.googlesource.com/c/chromium/src/+/6850973 * fixup! 6506565: [FPF-CI] Create initial NoiseHash in the browser. | https://chromium-review.googlesource.com/c/chromium/src/+/6506565 * fix: unsafe buffer warning in fix_properly_honor_printing_page_ranges.patch * fix: FTBFS in src_remove_dependency_on_wrapper-descriptor-based_cppheap.patch This change should be upstreamed. Fixes this error: ../../third_party/electron_node/src/env.cc:606:3: error: no matching function for call to 'Wrap' 606 | v8::Object::Wrap<v8::CppHeapPointerTag::kDefaultTag>( | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../v8/include/v8-object.h:1076:14: note: candidate function template not viable: cannot convert argument of incomplete type 'void *' to 'v8::Object::Wrappable *' for 3rd argument 1076 | void Object::Wrap(v8::Isolate* isolate, const v8::Local<v8::Object>& wrapper, | ^ 1077 | v8::Object::Wrappable* wrappable) { | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../v8/include/v8-object.h:1084:14: note: candidate function template not viable: no known conversion from 'Local<Object>' to 'const PersistentBase<Object>' for 2nd argument 1084 | void Object::Wrap(v8::Isolate* isolate, const PersistentBase<Object>& wrapper, | ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../v8/include/v8-object.h:1093:14: note: candidate function template not viable: no known conversion from 'Local<Object>' to 'const BasicTracedReference<Object>' for 2nd argument 1093 | void Object::Wrap(v8::Isolate* isolate, | ^ 1094 | const BasicTracedReference<Object>& wrapper, | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 error generated. * [v8-init] Access crash key only from main thread | https://chromium-review.googlesource.com/c/chromium/src/+/6827167 * chore: e patches all * chore: remove chore_restore_some_deprecated_wrapper_utility_in_gin.patch from patches this remove line got re-added when rebasing roller/chromium/main * chore: e patches all * fix: include base/time/time.h when using base::Time * chore: update patches * Make --host-rules an alias for --host-resolver-rules. Refs https://chromium-review.googlesource.com/c/chromium/src/+/4867872 * ci: update BUILD_TOOLS_SHA Refs https://github.com/electron/build-tools/pull/746 * [Fontations] Remove Fontations suffix from font names Refs https://chromium-review.googlesource.com/c/chromium/src/+/6835930 * temp: debug macOS addon build failure * Revert "temp: debug macOS addon build failure" This reverts commit 40bc8abab65dc83e17c4ab97cb6e7522a193fb44. * test: run tests with Xcode 16.4 * ci: fix tccdb update for macOS 15 * spec: disable opening external application for loadURL on macOS opening unknown external application will bring up dialog to choose apps from application store which will break our other test suites that want to capture screen for pixel matching. The loadURL spec that tests bad-scheme://foo is sufficient that we hit the permission handler for openExternal since at that point we already know the runtime gave up on handling the scheme. * chore: rebase patches * chore: disable codesiging tests * ci: update ScreenCaptureApprovals.plist for /bin/bash * ci: try updating tcc permissions * ci: update TCC permissions Refs https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive * chore: test with 1st quadrant of the window * chore: adjust for macOS 15 menubar height --------- Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> Co-authored-by: Keeley Hammond <khammond@slack-corp.com> Co-authored-by: Keeley Hammond <vertedinde@electronjs.org> Co-authored-by: Charles Kerr <charles@charleskerr.com> Co-authored-by: deepak1556 <hop2deep@gmail.com> Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2025-08-29 12:31:47 +09:00
after(async () => {
session.fromPartition('loadurl-webcontents-spec').setPermissionRequestHandler(null);
});
it('resolves when done loading', async () => {
2020-03-20 13:28:31 -07:00
await expect(w.loadURL('about:blank')).to.eventually.be.fulfilled();
});
it('resolves when done loading a file URL', async () => {
2020-03-20 13:28:31 -07:00
await expect(w.loadFile(path.join(fixturesPath, 'pages', 'base-page.html'))).to.eventually.be.fulfilled();
});
it('resolves when navigating within the page', async () => {
await w.loadFile(path.join(fixturesPath, 'pages', 'base-page.html'));
await setTimeout();
await expect(w.loadURL(w.getURL() + '#foo')).to.eventually.be.fulfilled();
});
it('resolves after browser initiated navigation', async () => {
let finishedLoading = false;
w.webContents.on('did-finish-load', function () {
finishedLoading = true;
});
await w.loadFile(path.join(fixturesPath, 'pages', 'navigate_in_page_and_wait.html'));
expect(finishedLoading).to.be.true();
});
it('rejects when failing to load a file URL', async () => {
await expect(w.loadURL('file:non-existent')).to.eventually.be.rejected()
2020-03-20 13:28:31 -07:00
.and.have.property('code', 'ERR_FILE_NOT_FOUND');
});
// FIXME: Temporarily disable on WOA until
// https://github.com/electron/electron/issues/20008 is resolved
ifit(!(process.platform === 'win32' && process.arch === 'arm64'))('rejects when loading fails due to DNS not resolved', async () => {
await expect(w.loadURL('https://err.name.not.resolved')).to.eventually.be.rejected()
2020-03-20 13:28:31 -07:00
.and.have.property('code', 'ERR_NAME_NOT_RESOLVED');
});
it('rejects when navigation is cancelled due to a bad scheme', async () => {
await expect(w.loadURL('bad-scheme://foo')).to.eventually.be.rejected()
2020-03-20 13:28:31 -07:00
.and.have.property('code', 'ERR_FAILED');
});
it('does not crash when loading a new URL with emulation settings set', async () => {
const setEmulation = async () => {
if (w.webContents) {
w.webContents.debugger.attach('1.3');
const deviceMetrics = {
width: 700,
height: 600,
deviceScaleFactor: 2,
mobile: true,
dontSetVisibleSize: true
};
await w.webContents.debugger.sendCommand(
'Emulation.setDeviceMetricsOverride',
deviceMetrics
);
}
};
try {
await w.loadURL(`file://${fixturesPath}/pages/blank.html`);
await setEmulation();
await w.loadURL('data:text/html,<h1>HELLO</h1>');
await setEmulation();
} catch (e) {
expect((e as Error).message).to.match(/Debugger is already attached to the target/);
}
});
it('fails if loadURL is called inside did-start-loading', (done) => {
w.webContents.once('did-fail-load', (_event, _errorCode, _errorDescription, validatedURL) => {
expect(validatedURL).to.contain('blank.html');
done();
});
w.webContents.once('did-start-loading', () => {
w.loadURL(`file://${fixturesPath}/pages/blank.html`);
});
w.loadURL('data:text/html,<h1>HELLO</h1>');
});
it('fails if loadurl is called after the navigation is ready to commit', () => {
w.webContents.once('did-fail-load', (_event, _errorCode, _errorDescription, validatedURL) => {
expect(validatedURL).to.contain('blank.html');
});
// @ts-expect-error internal-only event.
w.webContents.once('-ready-to-commit-navigation', () => {
w.loadURL(`file://${fixturesPath}/pages/blank.html`);
});
w.loadURL('data:text/html,<h1>HELLO</h1>');
});
it('fails if loadURL is called inside did-redirect-navigation', (done) => {
const server = http.createServer((req, res) => {
if (req.url === '/302') {
res.statusCode = 302;
res.setHeader('Location', '/200');
res.end();
} else if (req.url === '/200') {
res.end('ok');
} else {
res.end();
}
});
w.webContents.once('did-fail-load', (_event, _errorCode, _errorDescription, validatedURL) => {
expect(validatedURL).to.contain('blank.html');
server.close();
done();
});
listen(server).then(({ url }) => {
w.webContents.once('did-redirect-navigation', () => {
w.loadURL(`file://${fixturesPath}/pages/blank.html`);
});
w.loadURL(`${url}/302`);
}).catch(e => {
server.close();
done(e);
});
});
it('sets appropriate error information on rejection', async () => {
let err: any;
try {
2020-03-20 13:28:31 -07:00
await w.loadURL('file:non-existent');
} catch (e) {
2020-03-20 13:28:31 -07:00
err = e;
}
2020-03-20 13:28:31 -07:00
expect(err).not.to.be.null();
expect(err.code).to.eql('ERR_FILE_NOT_FOUND');
expect(err.errno).to.eql(-6);
expect(err.url).to.eql(process.platform === 'win32' ? 'file://non-existent/' : 'file:///non-existent');
});
it('rejects if the load is aborted', async () => {
build: use github actions for windows (#44136) * build: test windows runner * build: try build windows on windows? * build: take win/cross changes * build: use bash as default shell always * build: configure git for windows build tools * build: bash as default * build: configure windows correctly * build: use sha1sum * build: force windows cipd init and python3 existence * just pain * build: restore cache on windows * build: use build-tools gclient * build: sync gclient vars to build windows job * build: output depshash for debugging * build: past sam was a silly goose * build: depshash logging * build: force lf endings for lock and DEPS * build: platform strings are hard * build: checkout on windows host * sup * no check * idk * sigh * ... * no double checkout * build: yolo some stuff * build: run gn-check for windows on linux hosts for speed * use container... * cry ? * build: e d * e d * no log * fix toolchain on windows cross check * build: use powershell to add mksnapshot_args * build: enable x86 and arm64 windows builds too * clean up * maybe not needed * build: keep action around for post step * build: configure git global on win * build: ia32 zip manifest * build: no patch depot_tools for tests * build: get arm64 windows closer to working * build: windows tar is ass * 32 bit on 32 bit * maybe bash * build: set up nodejs * correct windows sharding * fix some spec runner stuff * fix windows tests * overwrite -Force * sigh * screen res * wat * logs * ... more logs * line endings will be the death of me * remove 1080p force thing * vsctools + logging * disable some fullscreen tests on GHA * no progress * run all CI * install visual studio on arm64 * windows hax for non windows * maybe arm sdk * clean up depshash logic * build: use single check per platform * ensure clean args * fix loop * remove debug * update default build image sha for dispatch * plzzzz * one more try * arm64 vctools * sad * build: fix non-dispatch windows gn check * chore: debug datadog-ci location * chore: update build-tools for newer toolchain * chore: set path for datadog-ci * try this * chore: fixup gn check * fixup gn-check some more * fixup windows gn check * chore: fixup windows gn check * test: use cmd for Windows testing * fixup use cmd for testing on Windows * fixup windows GN check * fixup npm config arch for x86 * Can we set test files via powershell * fixup to set test files via powershell * fixup set test files via powershell * Don't check cross instance cache disk space on Windows * Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing (AGAIN) * use powershell if in powershell * fixup use powershell if in powershell * chore: remove no longer needed changes to depot_tools xref: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/5669094 and https://chromium-review.googlesource.com/c/chromium/src/+/5844046 * chore: try using 7zip on Windows to extract tarball * Revert "chore: try using 7zip on Windows to extract tarball" This reverts commit c7432b6a37857fd0746b8f1776fbd1103dba0b85. * test: debug failing tests on GHA windows * fix: ftbfs when including simdjson in Node.js (cherry picked from commit 48e44c40d61b7aa843a990d4e0c8dec676b4ce8f) * chore: try to track down Windows testing hang * use correct timeout * try this * see if this helps * try to figure out why node is running * shard tests to try to narrow down WOA lockup * try to narrow down problem test * Narrow down blocking test more * do we need a combo to repro * see if this cleans up the tests * fixup navigator.usb test * remove logging from problematic tests * Revert "shard tests to try to narrow down WOA lockup" This reverts commit a1806583769678491814cb8b008131c32be4e8fb. * remove logging * debug keyboard test * add timeout for Windows since arm64 sometimes hangs * see if this helps * put back original timeout * try to use screenCapture to get screenshots of what is going on on WOA * try using electron screencapture to debug WOA hang * chore: turn off privacy experience * run screenshot on both shards * fixup screencap * try to narrow down hanging spec * chore: cleanup servers left open * cleanup tests * Revert "try to narrow down hanging spec" This reverts commit a0f959f5382f4012a9919ac535d42c5333eb7d5f. * cleanup test debugging * fixup extensions spec * cleanup unneeded items * run wtf with 2 shards instead of 6 * Revert "run wtf with 2 shards instead of 6" This reverts commit ca2d282129ee42c535d80f9876d6fa0dc6c08344. * debug windows version on woa * dump more info * Get detailed CPU info * revert debugging * use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * try to track down which tests trigger hang * one or more of these combinations should hang * break up web contents spec to find hang * further break down api-web-contents to find hang * test: ensure all webContents are closed * test: fix require is not defined error * see if api-web-contents spec is now good * test: ensure all webContents are closed * Revert "try to track down which tests trigger hang" This reverts commit 07298d6ffeb4873ef7615a8ec3d1a6696e354ff4. * chore: use alternate location for windows toolchain * Reapply "try to track down which tests trigger hang" This reverts commit 0321f76d01069ef325339b6fe6ed39700eae2b6b. * try to narrow down problem test * fix TEST_SHARD env var * no, really fix TEST_SHARD env var * see if this fixes it * test: cleanup any remaining windows and webcontents * see if new cleanup helps * dont destroy webcontents for now * fixup dont destroy webcontents for now * Only cleanup right before process.exit * see if this fixes the hang * actually destroy webcontents * Revert "Reapply "try to track down which tests trigger hang"" This reverts commit cdee7de049ce6bb5f67bbcc64882c56aa2c73027. * see if this helps * Revert "see if this helps" This reverts commit 9a15a69cf7dbc456db7a61efa5b6870535bae993. * Is it all about the web contents? * it is all about the webcontents but which one? * Narrow down problem webcontents test * try to speed up git install on WOA * disable problematic test on WOA * remove debugging * remove debugging from choco installs * Revert "disable problematic test on WOA" This reverts commit e060fb0839b73d53cfde1f8acdca634f8e267937. * Revert "remove debugging" This reverts commit f18dd8b1a555f56bb06d0ea996a6eff31b424bf1. * run against all the tests in the failing shard * don't run visibility tests first * remove debugging * 3 is a magic number * Revert "3 is a magic number" This reverts commit 36b91ccf9f03a4b34230cd69ceca482f7d8428c1. * match what Appveyor runs exactly * Revert "match what Appveyor runs exactly" This reverts commit 7260dd432216c62696e4bc864930f17c857eabbe. * chore: sort files alphabetically * find out what spec is leaving stuff open * chore: Checkout PR HEAD commit instead of merge commit * try using app.exit instead of process.exit * test: cleanup BrowserWindows and webContents * Revert "chore: sort files alphabetically" This reverts commit d9e217ffb1522076e150fce9e43a31bf56716acb. * chore: use win32 to match process.platform Needed for build-tools to download from PRs * chore: cache yarn dir * fixup cache yarn * fixup use win32 to match process.platform * fixup use win32 to match process.platform * fixup cache yarn * Add debugging for WOA hang * Add debugging for failing keyboard lock test * Revert "Add debugging for WOA hang" This reverts commit 8df03d568d15a269e4026140d1158e8cdf551dec. * try using process.kill * add more debugging to keyboard.lock test * Revert "Add debugging for failing keyboard lock test" * remove debugging * test: disable keyboard.lock on Windows * test: disable fullscreen tests on Windows * test: only force test suite exit on WOA * fixup test: only force test suite exit on WOA * cleanup tests * extract yarn caching/install to action * try using bash to run windows tests * remove left over debugging * standardize on 'win' for Windows builds * use 'x86' for arch for manifest files * fixup try using bash to run windows tests * fixup use 'x86' for arch for manifest files * standardize on 'win' for Windows builds * fixup use 'x86' for arch for manifest files * fixup try using bash to run windows tests --------- Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org> Co-authored-by: Charles Kerr <charles@charleskerr.com>
2024-12-12 08:51:24 -08:00
s = http.createServer(() => { /* never complete the request */ });
const { port } = await listen(s);
2020-03-20 13:28:31 -07:00
const p = expect(w.loadURL(`http://127.0.0.1:${port}`)).to.eventually.be.rejectedWith(Error, /ERR_ABORTED/);
// load a different file before the first load completes, causing the
// first load to be aborted.
2020-03-20 13:28:31 -07:00
await w.loadFile(path.join(fixturesPath, 'pages', 'base-page.html'));
await p;
});
it("doesn't reject when a subframe fails to load", async () => {
2020-03-20 13:28:31 -07:00
let resp = null as unknown as http.ServerResponse;
build: use github actions for windows (#44136) * build: test windows runner * build: try build windows on windows? * build: take win/cross changes * build: use bash as default shell always * build: configure git for windows build tools * build: bash as default * build: configure windows correctly * build: use sha1sum * build: force windows cipd init and python3 existence * just pain * build: restore cache on windows * build: use build-tools gclient * build: sync gclient vars to build windows job * build: output depshash for debugging * build: past sam was a silly goose * build: depshash logging * build: force lf endings for lock and DEPS * build: platform strings are hard * build: checkout on windows host * sup * no check * idk * sigh * ... * no double checkout * build: yolo some stuff * build: run gn-check for windows on linux hosts for speed * use container... * cry ? * build: e d * e d * no log * fix toolchain on windows cross check * build: use powershell to add mksnapshot_args * build: enable x86 and arm64 windows builds too * clean up * maybe not needed * build: keep action around for post step * build: configure git global on win * build: ia32 zip manifest * build: no patch depot_tools for tests * build: get arm64 windows closer to working * build: windows tar is ass * 32 bit on 32 bit * maybe bash * build: set up nodejs * correct windows sharding * fix some spec runner stuff * fix windows tests * overwrite -Force * sigh * screen res * wat * logs * ... more logs * line endings will be the death of me * remove 1080p force thing * vsctools + logging * disable some fullscreen tests on GHA * no progress * run all CI * install visual studio on arm64 * windows hax for non windows * maybe arm sdk * clean up depshash logic * build: use single check per platform * ensure clean args * fix loop * remove debug * update default build image sha for dispatch * plzzzz * one more try * arm64 vctools * sad * build: fix non-dispatch windows gn check * chore: debug datadog-ci location * chore: update build-tools for newer toolchain * chore: set path for datadog-ci * try this * chore: fixup gn check * fixup gn-check some more * fixup windows gn check * chore: fixup windows gn check * test: use cmd for Windows testing * fixup use cmd for testing on Windows * fixup windows GN check * fixup npm config arch for x86 * Can we set test files via powershell * fixup to set test files via powershell * fixup set test files via powershell * Don't check cross instance cache disk space on Windows * Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing (AGAIN) * use powershell if in powershell * fixup use powershell if in powershell * chore: remove no longer needed changes to depot_tools xref: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/5669094 and https://chromium-review.googlesource.com/c/chromium/src/+/5844046 * chore: try using 7zip on Windows to extract tarball * Revert "chore: try using 7zip on Windows to extract tarball" This reverts commit c7432b6a37857fd0746b8f1776fbd1103dba0b85. * test: debug failing tests on GHA windows * fix: ftbfs when including simdjson in Node.js (cherry picked from commit 48e44c40d61b7aa843a990d4e0c8dec676b4ce8f) * chore: try to track down Windows testing hang * use correct timeout * try this * see if this helps * try to figure out why node is running * shard tests to try to narrow down WOA lockup * try to narrow down problem test * Narrow down blocking test more * do we need a combo to repro * see if this cleans up the tests * fixup navigator.usb test * remove logging from problematic tests * Revert "shard tests to try to narrow down WOA lockup" This reverts commit a1806583769678491814cb8b008131c32be4e8fb. * remove logging * debug keyboard test * add timeout for Windows since arm64 sometimes hangs * see if this helps * put back original timeout * try to use screenCapture to get screenshots of what is going on on WOA * try using electron screencapture to debug WOA hang * chore: turn off privacy experience * run screenshot on both shards * fixup screencap * try to narrow down hanging spec * chore: cleanup servers left open * cleanup tests * Revert "try to narrow down hanging spec" This reverts commit a0f959f5382f4012a9919ac535d42c5333eb7d5f. * cleanup test debugging * fixup extensions spec * cleanup unneeded items * run wtf with 2 shards instead of 6 * Revert "run wtf with 2 shards instead of 6" This reverts commit ca2d282129ee42c535d80f9876d6fa0dc6c08344. * debug windows version on woa * dump more info * Get detailed CPU info * revert debugging * use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * try to track down which tests trigger hang * one or more of these combinations should hang * break up web contents spec to find hang * further break down api-web-contents to find hang * test: ensure all webContents are closed * test: fix require is not defined error * see if api-web-contents spec is now good * test: ensure all webContents are closed * Revert "try to track down which tests trigger hang" This reverts commit 07298d6ffeb4873ef7615a8ec3d1a6696e354ff4. * chore: use alternate location for windows toolchain * Reapply "try to track down which tests trigger hang" This reverts commit 0321f76d01069ef325339b6fe6ed39700eae2b6b. * try to narrow down problem test * fix TEST_SHARD env var * no, really fix TEST_SHARD env var * see if this fixes it * test: cleanup any remaining windows and webcontents * see if new cleanup helps * dont destroy webcontents for now * fixup dont destroy webcontents for now * Only cleanup right before process.exit * see if this fixes the hang * actually destroy webcontents * Revert "Reapply "try to track down which tests trigger hang"" This reverts commit cdee7de049ce6bb5f67bbcc64882c56aa2c73027. * see if this helps * Revert "see if this helps" This reverts commit 9a15a69cf7dbc456db7a61efa5b6870535bae993. * Is it all about the web contents? * it is all about the webcontents but which one? * Narrow down problem webcontents test * try to speed up git install on WOA * disable problematic test on WOA * remove debugging * remove debugging from choco installs * Revert "disable problematic test on WOA" This reverts commit e060fb0839b73d53cfde1f8acdca634f8e267937. * Revert "remove debugging" This reverts commit f18dd8b1a555f56bb06d0ea996a6eff31b424bf1. * run against all the tests in the failing shard * don't run visibility tests first * remove debugging * 3 is a magic number * Revert "3 is a magic number" This reverts commit 36b91ccf9f03a4b34230cd69ceca482f7d8428c1. * match what Appveyor runs exactly * Revert "match what Appveyor runs exactly" This reverts commit 7260dd432216c62696e4bc864930f17c857eabbe. * chore: sort files alphabetically * find out what spec is leaving stuff open * chore: Checkout PR HEAD commit instead of merge commit * try using app.exit instead of process.exit * test: cleanup BrowserWindows and webContents * Revert "chore: sort files alphabetically" This reverts commit d9e217ffb1522076e150fce9e43a31bf56716acb. * chore: use win32 to match process.platform Needed for build-tools to download from PRs * chore: cache yarn dir * fixup cache yarn * fixup use win32 to match process.platform * fixup use win32 to match process.platform * fixup cache yarn * Add debugging for WOA hang * Add debugging for failing keyboard lock test * Revert "Add debugging for WOA hang" This reverts commit 8df03d568d15a269e4026140d1158e8cdf551dec. * try using process.kill * add more debugging to keyboard.lock test * Revert "Add debugging for failing keyboard lock test" * remove debugging * test: disable keyboard.lock on Windows * test: disable fullscreen tests on Windows * test: only force test suite exit on WOA * fixup test: only force test suite exit on WOA * cleanup tests * extract yarn caching/install to action * try using bash to run windows tests * remove left over debugging * standardize on 'win' for Windows builds * use 'x86' for arch for manifest files * fixup try using bash to run windows tests * fixup use 'x86' for arch for manifest files * standardize on 'win' for Windows builds * fixup use 'x86' for arch for manifest files * fixup try using bash to run windows tests --------- Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org> Co-authored-by: Charles Kerr <charles@charleskerr.com>
2024-12-12 08:51:24 -08:00
s = http.createServer((req, res) => {
2020-03-20 13:28:31 -07:00
res.writeHead(200, { 'Content-Type': 'text/html' });
res.write('<iframe src="http://err.name.not.resolved"></iframe>');
resp = res;
// don't end the response yet
2020-03-20 13:28:31 -07:00
});
const { port } = await listen(s);
const p = new Promise<void>(resolve => {
2019-11-01 13:37:02 -07:00
w.webContents.on('did-fail-load', (event, errorCode, errorDescription, validatedURL, isMainFrame) => {
if (!isMainFrame) {
2020-03-20 13:28:31 -07:00
resolve();
}
2020-03-20 13:28:31 -07:00
});
});
const main = w.loadURL(`http://127.0.0.1:${port}`);
await p;
resp.end();
await main;
});
it("doesn't resolve when a subframe loads", async () => {
2020-03-20 13:28:31 -07:00
let resp = null as unknown as http.ServerResponse;
build: use github actions for windows (#44136) * build: test windows runner * build: try build windows on windows? * build: take win/cross changes * build: use bash as default shell always * build: configure git for windows build tools * build: bash as default * build: configure windows correctly * build: use sha1sum * build: force windows cipd init and python3 existence * just pain * build: restore cache on windows * build: use build-tools gclient * build: sync gclient vars to build windows job * build: output depshash for debugging * build: past sam was a silly goose * build: depshash logging * build: force lf endings for lock and DEPS * build: platform strings are hard * build: checkout on windows host * sup * no check * idk * sigh * ... * no double checkout * build: yolo some stuff * build: run gn-check for windows on linux hosts for speed * use container... * cry ? * build: e d * e d * no log * fix toolchain on windows cross check * build: use powershell to add mksnapshot_args * build: enable x86 and arm64 windows builds too * clean up * maybe not needed * build: keep action around for post step * build: configure git global on win * build: ia32 zip manifest * build: no patch depot_tools for tests * build: get arm64 windows closer to working * build: windows tar is ass * 32 bit on 32 bit * maybe bash * build: set up nodejs * correct windows sharding * fix some spec runner stuff * fix windows tests * overwrite -Force * sigh * screen res * wat * logs * ... more logs * line endings will be the death of me * remove 1080p force thing * vsctools + logging * disable some fullscreen tests on GHA * no progress * run all CI * install visual studio on arm64 * windows hax for non windows * maybe arm sdk * clean up depshash logic * build: use single check per platform * ensure clean args * fix loop * remove debug * update default build image sha for dispatch * plzzzz * one more try * arm64 vctools * sad * build: fix non-dispatch windows gn check * chore: debug datadog-ci location * chore: update build-tools for newer toolchain * chore: set path for datadog-ci * try this * chore: fixup gn check * fixup gn-check some more * fixup windows gn check * chore: fixup windows gn check * test: use cmd for Windows testing * fixup use cmd for testing on Windows * fixup windows GN check * fixup npm config arch for x86 * Can we set test files via powershell * fixup to set test files via powershell * fixup set test files via powershell * Don't check cross instance cache disk space on Windows * Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing (AGAIN) * use powershell if in powershell * fixup use powershell if in powershell * chore: remove no longer needed changes to depot_tools xref: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/5669094 and https://chromium-review.googlesource.com/c/chromium/src/+/5844046 * chore: try using 7zip on Windows to extract tarball * Revert "chore: try using 7zip on Windows to extract tarball" This reverts commit c7432b6a37857fd0746b8f1776fbd1103dba0b85. * test: debug failing tests on GHA windows * fix: ftbfs when including simdjson in Node.js (cherry picked from commit 48e44c40d61b7aa843a990d4e0c8dec676b4ce8f) * chore: try to track down Windows testing hang * use correct timeout * try this * see if this helps * try to figure out why node is running * shard tests to try to narrow down WOA lockup * try to narrow down problem test * Narrow down blocking test more * do we need a combo to repro * see if this cleans up the tests * fixup navigator.usb test * remove logging from problematic tests * Revert "shard tests to try to narrow down WOA lockup" This reverts commit a1806583769678491814cb8b008131c32be4e8fb. * remove logging * debug keyboard test * add timeout for Windows since arm64 sometimes hangs * see if this helps * put back original timeout * try to use screenCapture to get screenshots of what is going on on WOA * try using electron screencapture to debug WOA hang * chore: turn off privacy experience * run screenshot on both shards * fixup screencap * try to narrow down hanging spec * chore: cleanup servers left open * cleanup tests * Revert "try to narrow down hanging spec" This reverts commit a0f959f5382f4012a9919ac535d42c5333eb7d5f. * cleanup test debugging * fixup extensions spec * cleanup unneeded items * run wtf with 2 shards instead of 6 * Revert "run wtf with 2 shards instead of 6" This reverts commit ca2d282129ee42c535d80f9876d6fa0dc6c08344. * debug windows version on woa * dump more info * Get detailed CPU info * revert debugging * use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * try to track down which tests trigger hang * one or more of these combinations should hang * break up web contents spec to find hang * further break down api-web-contents to find hang * test: ensure all webContents are closed * test: fix require is not defined error * see if api-web-contents spec is now good * test: ensure all webContents are closed * Revert "try to track down which tests trigger hang" This reverts commit 07298d6ffeb4873ef7615a8ec3d1a6696e354ff4. * chore: use alternate location for windows toolchain * Reapply "try to track down which tests trigger hang" This reverts commit 0321f76d01069ef325339b6fe6ed39700eae2b6b. * try to narrow down problem test * fix TEST_SHARD env var * no, really fix TEST_SHARD env var * see if this fixes it * test: cleanup any remaining windows and webcontents * see if new cleanup helps * dont destroy webcontents for now * fixup dont destroy webcontents for now * Only cleanup right before process.exit * see if this fixes the hang * actually destroy webcontents * Revert "Reapply "try to track down which tests trigger hang"" This reverts commit cdee7de049ce6bb5f67bbcc64882c56aa2c73027. * see if this helps * Revert "see if this helps" This reverts commit 9a15a69cf7dbc456db7a61efa5b6870535bae993. * Is it all about the web contents? * it is all about the webcontents but which one? * Narrow down problem webcontents test * try to speed up git install on WOA * disable problematic test on WOA * remove debugging * remove debugging from choco installs * Revert "disable problematic test on WOA" This reverts commit e060fb0839b73d53cfde1f8acdca634f8e267937. * Revert "remove debugging" This reverts commit f18dd8b1a555f56bb06d0ea996a6eff31b424bf1. * run against all the tests in the failing shard * don't run visibility tests first * remove debugging * 3 is a magic number * Revert "3 is a magic number" This reverts commit 36b91ccf9f03a4b34230cd69ceca482f7d8428c1. * match what Appveyor runs exactly * Revert "match what Appveyor runs exactly" This reverts commit 7260dd432216c62696e4bc864930f17c857eabbe. * chore: sort files alphabetically * find out what spec is leaving stuff open * chore: Checkout PR HEAD commit instead of merge commit * try using app.exit instead of process.exit * test: cleanup BrowserWindows and webContents * Revert "chore: sort files alphabetically" This reverts commit d9e217ffb1522076e150fce9e43a31bf56716acb. * chore: use win32 to match process.platform Needed for build-tools to download from PRs * chore: cache yarn dir * fixup cache yarn * fixup use win32 to match process.platform * fixup use win32 to match process.platform * fixup cache yarn * Add debugging for WOA hang * Add debugging for failing keyboard lock test * Revert "Add debugging for WOA hang" This reverts commit 8df03d568d15a269e4026140d1158e8cdf551dec. * try using process.kill * add more debugging to keyboard.lock test * Revert "Add debugging for failing keyboard lock test" * remove debugging * test: disable keyboard.lock on Windows * test: disable fullscreen tests on Windows * test: only force test suite exit on WOA * fixup test: only force test suite exit on WOA * cleanup tests * extract yarn caching/install to action * try using bash to run windows tests * remove left over debugging * standardize on 'win' for Windows builds * use 'x86' for arch for manifest files * fixup try using bash to run windows tests * fixup use 'x86' for arch for manifest files * standardize on 'win' for Windows builds * fixup use 'x86' for arch for manifest files * fixup try using bash to run windows tests --------- Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org> Co-authored-by: Charles Kerr <charles@charleskerr.com>
2024-12-12 08:51:24 -08:00
s = http.createServer((req, res) => {
2020-03-20 13:28:31 -07:00
res.writeHead(200, { 'Content-Type': 'text/html' });
chore: bump chromium to ec5bc1743792d64724693eb357083 (master) (#24984) * chore: bump chromium in DEPS to cbdeef954dfc34e94c8ca9cf72ad326b4a121158 * chore: bump chromium in DEPS to 29723f905baeab1d4228eef2c31cdb341ebeffe0 * chore: bump chromium in DEPS to 44d6d78e852137fff58c14ed26ab1e803e5bf822 * update patches * chore: bump chromium in DEPS to 8a3a0fccb39d6b8334c9a0496c0d5056e50cdb3f * chore: update patches * refactor: fix PrintBackend::CreateInstance() calls Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2354541 * chore: bump chromium in DEPS to b9ebec3bcb1cabdd1426f367636f54cc98e0500e * chore: remove patches to code that was deleted upstream CL: https://chromium-review.googlesource.com/c/chromium/src/+/2360314 * Remove uses of kCGColorSpaceITUR_2020_PQ_EOTF/HLG CL: https://chromium-review.googlesource.com/c/chromium/src/+/2363950 just garden variety code shear * chore: update patch indices * Move ColorModel to //printing/mojom/print.mojom https://chromium-review.googlesource.com/c/chromium/src/+/2355083 sync with printing ColorModel changes: moved to mojo, different naming scheme * chore: bump chromium in DEPS to 56c4b4d2ce5ba941acd2e0fdb5100e8a48847134 * chore: bump chromium in DEPS to 130501f220b684a79dc82c17e236e63ac1f2a093 * Convert PrintHostMsg_DidGetPrintedPagesCount to Mojo https://chromium-review.googlesource.com/c/chromium/src/+/2326857 Update argument list to Print() * chore: update patch indices * DumpAccTree: convert utf16 to utf8 in PropertyFilter https://chromium-review.googlesource.com/c/chromium/src/+/2360218 * chore: bump chromium in DEPS to 3058368c6646e0dc8be6f8ea838b0343428b7998 * chore: bump chromium in DEPS to f51b4e6555364363c61438dac7afd988c8347bfc * chore: bump chromium in DEPS to 2dcc6f8fc23ac41b2499eb69dee0b4017e9d1046 * update patches * chore: bump chromium in DEPS to 2d8e98ecedc7e4905540b053bc1c87e964715be5 * update patches * 2345900: Move content::RecordContentToVisibleTimeRequest struct to mojo https://chromium-review.googlesource.com/c/chromium/src/+/2345900 * update patches * 2345900: Move content::RecordContentToVisibleTimeRequest struct to mojo https://chromium-review.googlesource.com/c/chromium/src/+/2345900 * 2367394: Remove net::LOAD_DO_NOT_SEND_COOKIES and net::LOAD_DO_NOT_SEND_AUTH_DATA. https://chromium-review.googlesource.com/c/chromium/src/+/2367394 * 2373227: [XProto] Consolidate all <X11/*> includes to //ui/gfx/x/x11.h https://chromium-review.googlesource.com/c/chromium/src/+/2373227 * fixup! 2373227: [XProto] Consolidate all <X11/*> includes to //ui/gfx/x/x11.h * chore: bump chromium in DEPS to c090e3f960520cbd2328608b97f87238c76d6143 * update patches * chore: bump chromium in DEPS to 13a25e0a755de9a14271022c595f3d2e29829e1a * chore: bump chromium in DEPS to 6adbb767b012c41efaeab0d1bdbb3eefed0977bc * chore: bump chromium in DEPS to 339ec5455c5932ef1322ea9953a6349b0732199e * chore: bump chromium in DEPS to 20291807c33f7ef4ef4f57d62075e099b027bfe6 * chore: bump chromium in DEPS to 226fbd1b8b17d4ac84fdb9548ef3a1c646878d47 * update patches * fixup disable_color_correct_rendering patch * chore: bump chromium in DEPS to 577c45979cad4359f2e206d68efd9317d3d79315 * update patches * viz: Rename RenderPass to CompositorRenderPass (and related types). https://chromium-review.googlesource.com/c/chromium/src/+/2380730 * chore: bump chromium in DEPS to 37e2ad5303f2c03a1b5d8eda65341bf2561196cd * update patches * add kOmitCookies_Electron * update patch * chore: bump chromium in DEPS to 256e42409ea63a7e71016de07818a983a97db463 * update patches * fix worker script ready hook https://chromium-review.googlesource.com/c/chromium/src/+/2335713 * Fixup printing page ranges patch * [printing] Move PrintMsg_PrintPages_Params to print.mojom https://chromium-review.googlesource.com/c/chromium/src/+/2340854 * Add MIME sniffer overloads that take base::StringPieces https://chromium-review.googlesource.com/c/chromium/src/+/2382896 * [printing] Move PrintHostMsg_PreviewIds to print.mojom https://chromium-review.googlesource.com/c/chromium/src/+/2379455 * fixup test due to new DCHECK https://chromium-review.googlesource.com/c/chromium/src/+/2333750 * stop sending cookies when useSessionCookies is false * chore: bump chromium in DEPS to dd429dbc556449951ee8160d8a4d61fd95a139d5 * update patches * chore: bump chromium in DEPS to 5202bde3f9f44c2065f5dacf27e7000dd19e4e4d * chore: bump chromium in DEPS to 099e8e07b89da65932431bb0fd51b6f7f5344c19 * chore: bump chromium in DEPS to 104e5da2a43b759732d5b94bfc750b3a9a639653 * chore: bump chromium in DEPS to a4519ce657af25834e355315fd7fefa77b13426a * update patches * Make FileURLLoaderFactory always owned by its |receivers_|. https://chromium-review.googlesource.com/c/chromium/src/+/2337411 * Make FileURLLoaderFactory always owned by its |receivers_|. https://chromium-review.googlesource.com/c/chromium/src/+/2337411 * chore: bump chromium in DEPS to 1b62e9e8c8eaf6b8e3a9c77ee67a4c1bfa6a4d6b * chore: update patches * fixup! Make FileURLLoaderFactory always owned by its |receivers_|. * chore: update patches - mac: Disable CoreServices _CSCheckFix. https://chromium-review.googlesource.com/c/chromium/src/+/2401334 - [XProto] Remove bad DCHECK in x11_error_tracker.cc https://chromium-review.googlesource.com/c/chromium/src/+/2402304 - Move content/browser/frame_host/* over to content/browser/renderer_host/ https://chromium-review.googlesource.com/c/chromium/src/+/2401303 * Refactor WebContentSettingsClient to dedupe AllowXYZ methods https://chromium-review.googlesource.com/c/chromium/src/+/2353552 * Introduce NonNetworkURLLoaderFactoryBase class. https://chromium-review.googlesource.com/c/chromium/src/+/2357559 * [XProto] Remove usage of all Xlib headers https://chromium-review.googlesource.com/c/chromium/src/+/2392140 * fixup! chore: update patches * chore: bump chromium in DEPS to c1df55fbeb8207d036a604f59e4ea4e8ee79930a * chore: update patches * Move content::WebPreferences struct to Blink https://chromium-review.googlesource.com/c/chromium/src/+/2397670 * chore: bump chromium in DEPS to 57a23ec4884fff6c2f8d9b8536131cdc9b551ec2 * Set appid on Pip windows. https://chromium-review.googlesource.com/c/chromium/src/+/2388274 * fixup! Set appid on Pip windows. * fix: add a patch to remove deprecated factory * chore: bump chromium in DEPS to 1a9ddb7ea43955877823d5c4dcbf241b64228635 * fix compilation on windows * chore: bump chromium in DEPS to 234e6c6a77f61ffad9335099d9b13892cf88fd44 * chore: update patches * chore: bump chromium in DEPS to 7631eb0a9f57a8a47d3c28e1d265961b3a4d6b2b * chore: update patches * chore: bump chromium in DEPS to f9c34cd485845b95c2d17a7f55fdf92cda9a1b3a * chore: update patches * chore: implement GetSurveyAPIKey Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2362182 * chore: replace CreateWebUIURLLoader with CreateWebUIURLLoaderFactory Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2358309 * chore: bump chromium in DEPS to 5bdbd2373da884adf41c087be1465fcc344d168c * chore: update node patches for common.gypi * chore: update patches * chore: non_network_url_loader_factory_base was moved Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2357431 * 2415752: Reland "Reland "OOR-CORS: Remove BlinkCORS supporting code outside Blink"" Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2415752 * chore: bump chromium in DEPS to b943d006a33ec5bc1743792d64724693eb357083 * fix: replace x11::None with x11::Window::None * chore: update patches * chore: update patches * fix: cast x11::Window to int * 2402123: Use end date when deleting http auth cache Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2402123 * 2320268: Migrate DragHostMsg_StartDragging to Mojo Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2320268 * 2401303: Move content/browser/frame_host/* over to content/browser/renderer_host/ https://chromium-review.googlesource.com/c/chromium/src/+/2401303 * chore: fix lint * chore: fix build * Update config.yml Co-authored-by: Electron Bot <anonymous@electronjs.org> Co-authored-by: Charles Kerr <charles@charleskerr.com> Co-authored-by: Jeremy Rose <nornagon@nornagon.net> Co-authored-by: John Kleinschmidt <jkleinsc@github.com> Co-authored-by: deepak1556 <hop2deep@gmail.com> Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com> Co-authored-by: Samuel Attard <sattard@slack-corp.com>
2020-09-21 01:00:36 -07:00
res.write('<iframe src="about:blank"></iframe>');
2020-03-20 13:28:31 -07:00
resp = res;
// don't end the response yet
2020-03-20 13:28:31 -07:00
});
const { port } = await listen(s);
const p = new Promise<void>(resolve => {
2019-11-01 13:37:02 -07:00
w.webContents.on('did-frame-finish-load', (event, isMainFrame) => {
if (!isMainFrame) {
2020-03-20 13:28:31 -07:00
resolve();
}
2020-03-20 13:28:31 -07:00
});
});
const main = w.loadURL(`http://127.0.0.1:${port}`);
await p;
resp.destroy(); // cause the main request to fail
await expect(main).to.eventually.be.rejected()
2020-03-20 13:28:31 -07:00
.and.have.property('errno', -355); // ERR_INCOMPLETE_CHUNKED_ENCODING
});
it('subsequent load failures reject each time', async () => {
await expect(w.loadURL('file:non-existent')).to.eventually.be.rejected();
await expect(w.loadURL('file:non-existent')).to.eventually.be.rejected();
});
it('invalid URL load rejects', async () => {
await expect(w.loadURL('invalidURL')).to.eventually.be.rejected();
});
2020-03-20 13:28:31 -07:00
});
describe('navigationHistory', () => {
let w: BrowserWindow;
const urlPage1 = 'data:text/html,<html><head><script>document.title = "Page 1";</script></head><body></body></html>';
const urlPage2 = 'data:text/html,<html><head><script>document.title = "Page 2";</script></head><body></body></html>';
const urlPage3 = 'data:text/html,<html><head><script>document.title = "Page 3";</script></head><body></body></html>';
beforeEach(async () => {
w = new BrowserWindow({ show: false });
});
afterEach(closeAllWindows);
describe('navigationHistory.removeEntryAtIndex(index) API', () => {
it('should remove a navigation entry given a valid index', async () => {
await w.loadURL(urlPage1);
await w.loadURL(urlPage2);
await w.loadURL(urlPage3);
const initialLength = w.webContents.navigationHistory.length();
const wasRemoved = w.webContents.navigationHistory.removeEntryAtIndex(1); // Attempt to remove the second entry
const newLength = w.webContents.navigationHistory.length();
expect(wasRemoved).to.be.true();
expect(newLength).to.equal(initialLength - 1);
});
it('should not remove the current active navigation entry', async () => {
await w.loadURL(urlPage1);
await w.loadURL(urlPage2);
const activeIndex = w.webContents.navigationHistory.getActiveIndex();
const wasRemoved = w.webContents.navigationHistory.removeEntryAtIndex(activeIndex);
expect(wasRemoved).to.be.false();
});
it('should return false given an invalid index larger than history length', async () => {
await w.loadURL(urlPage1);
const wasRemoved = w.webContents.navigationHistory.removeEntryAtIndex(5); // Index larger than history length
expect(wasRemoved).to.be.false();
});
it('should return false given an invalid negative index', async () => {
await w.loadURL(urlPage1);
const wasRemoved = w.webContents.navigationHistory.removeEntryAtIndex(-1); // Negative index
expect(wasRemoved).to.be.false();
});
});
describe('navigationHistory.canGoBack and navigationHistory.goBack API', () => {
it('should not be able to go back if history is empty', async () => {
expect(w.webContents.navigationHistory.canGoBack()).to.be.false();
});
it('should be able to go back if history is not empty', async () => {
await w.loadURL(urlPage1);
await w.loadURL(urlPage2);
expect(w.webContents.navigationHistory.getActiveIndex()).to.equal(1);
expect(w.webContents.navigationHistory.canGoBack()).to.be.true();
w.webContents.navigationHistory.goBack();
expect(w.webContents.navigationHistory.getActiveIndex()).to.equal(0);
});
it('should have the same window title if navigating back within the page', async () => {
const title = 'Test';
w.webContents.on('did-finish-load', () => {
w.setTitle(title);
w.loadURL(`file://${fixturesPath}/pages/navigation-history-anchor-in-page.html#next`);
});
await w.loadURL(`file://${fixturesPath}/pages/navigation-history-anchor-in-page.html`);
w.webContents.navigationHistory.goBack();
expect(w.getTitle()).to.equal(title);
});
});
describe('navigationHistory.canGoForward and navigationHistory.goForward API', () => {
it('should not be able to go forward if history is empty', async () => {
expect(w.webContents.navigationHistory.canGoForward()).to.be.false();
});
it('should not be able to go forward if current index is same as history length', async () => {
await w.loadURL(urlPage1);
await w.loadURL(urlPage2);
expect(w.webContents.navigationHistory.canGoForward()).to.be.false();
});
it('should be able to go forward if history is not empty and active index is less than history length', async () => {
await w.loadURL(urlPage1);
await w.loadURL(urlPage2);
w.webContents.navigationHistory.goBack();
expect(w.webContents.navigationHistory.getActiveIndex()).to.equal(0);
expect(w.webContents.navigationHistory.canGoForward()).to.be.true();
w.webContents.navigationHistory.goForward();
expect(w.webContents.navigationHistory.getActiveIndex()).to.equal(1);
});
it('should have the same window title if navigating forward within the page', async () => {
const title = 'Test';
w.webContents.on('did-finish-load', () => {
w.setTitle(title);
w.loadURL(`file://${fixturesPath}/pages/navigation-history-anchor-in-page.html#next`);
});
await w.loadURL(`file://${fixturesPath}/pages/navigation-history-anchor-in-page.html`);
expect(w.getTitle()).to.equal(title);
});
});
describe('navigationHistory.canGoToOffset(index) and navigationHistory.goToOffset(index) API', () => {
it('should not be able to go to invalid offset', async () => {
expect(w.webContents.navigationHistory.canGoToOffset(-1)).to.be.false();
expect(w.webContents.navigationHistory.canGoToOffset(10)).to.be.false();
});
it('should be able to go to valid negative offset', async () => {
await w.loadURL(urlPage1);
await w.loadURL(urlPage2);
await w.loadURL(urlPage3);
expect(w.webContents.navigationHistory.canGoToOffset(-2)).to.be.true();
expect(w.webContents.navigationHistory.getActiveIndex()).to.equal(2);
w.webContents.navigationHistory.goToOffset(-2);
expect(w.webContents.navigationHistory.getActiveIndex()).to.equal(0);
});
it('should be able to go to valid positive offset', async () => {
await w.loadURL(urlPage1);
await w.loadURL(urlPage2);
await w.loadURL(urlPage3);
w.webContents.navigationHistory.goBack();
expect(w.webContents.navigationHistory.canGoToOffset(1)).to.be.true();
expect(w.webContents.navigationHistory.getActiveIndex()).to.equal(1);
w.webContents.navigationHistory.goToOffset(1);
expect(w.webContents.navigationHistory.getActiveIndex()).to.equal(2);
});
});
describe('navigationHistory.clear API', () => {
it('should be able clear history', async () => {
await w.loadURL(urlPage1);
await w.loadURL(urlPage2);
await w.loadURL(urlPage3);
expect(w.webContents.navigationHistory.length()).to.equal(3);
w.webContents.navigationHistory.clear();
expect(w.webContents.navigationHistory.length()).to.equal(1);
});
});
describe('navigationHistory.getEntryAtIndex(index) API ', () => {
it('should fetch default navigation entry when no urls are loaded', async () => {
const result = w.webContents.navigationHistory.getEntryAtIndex(0);
expect(result.url).to.equal('');
expect(result.title).to.equal('');
});
it('should fetch navigation entry given a valid index', async () => {
await w.loadURL(urlPage1);
const result = w.webContents.navigationHistory.getEntryAtIndex(0);
expect(result.url).to.equal(urlPage1);
expect(result.title).to.equal('Page 1');
});
it('should return null given an invalid index larger than history length', async () => {
await w.loadURL(urlPage1);
const result = w.webContents.navigationHistory.getEntryAtIndex(5);
expect(result).to.be.null();
});
it('should return null given an invalid negative index', async () => {
await w.loadURL(urlPage1);
const result = w.webContents.navigationHistory.getEntryAtIndex(-1);
expect(result).to.be.null();
});
});
describe('navigationHistory.getActiveIndex() API', () => {
it('should return valid active index after a single page visit', async () => {
2024-03-27 02:53:02 -07:00
await w.loadURL(urlPage1);
expect(w.webContents.navigationHistory.getActiveIndex()).to.equal(0);
});
it('should return valid active index after a multiple page visits', async () => {
await w.loadURL(urlPage1);
await w.loadURL(urlPage2);
await w.loadURL(urlPage3);
expect(w.webContents.navigationHistory.getActiveIndex()).to.equal(2);
});
it('should return valid active index given no page visits', async () => {
expect(w.webContents.navigationHistory.getActiveIndex()).to.equal(0);
});
});
describe('navigationHistory.length() API', () => {
it('should return valid history length after a single page visit', async () => {
await w.loadURL(urlPage1);
expect(w.webContents.navigationHistory.length()).to.equal(1);
});
it('should return valid history length after a multiple page visits', async () => {
await w.loadURL(urlPage1);
await w.loadURL(urlPage2);
await w.loadURL(urlPage3);
expect(w.webContents.navigationHistory.length()).to.equal(3);
});
it('should return valid history length given no page visits', async () => {
// Note: Even if no navigation has committed, the history list will always start with an initial navigation entry
// Ref: https://source.chromium.org/chromium/chromium/src/+/main:ceontent/public/browser/navigation_controller.h;l=381
expect(w.webContents.navigationHistory.length()).to.equal(1);
});
});
describe('navigationHistory.getAllEntries() API', () => {
it('should return all navigation entries as an array of NavigationEntry objects', async () => {
await w.loadURL(urlPage1);
await w.loadURL(urlPage2);
await w.loadURL(urlPage3);
const entries = w.webContents.navigationHistory.getAllEntries().map(entry => ({
url: entry.url,
title: entry.title
}));
expect(entries.length).to.equal(3);
expect(entries[0]).to.deep.equal({ url: urlPage1, title: 'Page 1' });
expect(entries[1]).to.deep.equal({ url: urlPage2, title: 'Page 2' });
expect(entries[2]).to.deep.equal({ url: urlPage3, title: 'Page 3' });
});
it('should return an empty array when there is no navigation history', async () => {
const entries = w.webContents.navigationHistory.getAllEntries();
expect(entries.length).to.equal(0);
});
it('should create a NavigationEntry with PageState that can be serialized/deserialized with JSON', async () => {
await w.loadURL(urlPage1);
await w.loadURL(urlPage2);
await w.loadURL(urlPage3);
const entries = w.webContents.navigationHistory.getAllEntries();
const serialized = JSON.stringify(entries);
const deserialized = JSON.parse(serialized);
expect(deserialized).to.deep.equal(entries);
});
});
describe('navigationHistory.restore({ index, entries }) API', () => {
let server: http.Server;
let serverUrl: string;
before(async () => {
server = http.createServer((req, res) => {
res.setHeader('Content-Type', 'text/html');
res.end('<html><head><title>Form</title></head><body><form><input type="text" value="value" /></form></body></html>');
});
serverUrl = (await listen(server)).url;
});
after(async () => {
if (server) await new Promise(resolve => server.close(resolve));
server = null as any;
});
it('should restore navigation history with PageState', async () => {
await w.loadURL(urlPage1);
await w.loadURL(urlPage2);
await w.loadURL(serverUrl);
// Fill out the form on the page
await w.webContents.executeJavaScript('document.querySelector("input").value = "Hi!";');
// PageState is committed:
// 1) When the page receives an unload event
// 2) During periodic serialization of page state
// To not wait randomly for the second option, we'll trigger another load
await w.loadURL(urlPage3);
// Save the navigation state
const entries = w.webContents.navigationHistory.getAllEntries();
// Close the window, make a new one
w.close();
w = new BrowserWindow();
const formValue = await new Promise<string>(resolve => {
w.webContents.once('dom-ready', () => resolve(w.webContents.executeJavaScript('document.querySelector("input").value')));
// Restore the navigation history
return w.webContents.navigationHistory.restore({ index: 2, entries });
});
expect(formValue).to.equal('Hi!');
});
it('should handle invalid base64 pageState', async () => {
await w.loadURL(urlPage1);
await w.loadURL(urlPage2);
await w.loadURL(urlPage3);
const brokenEntries = w.webContents.navigationHistory.getAllEntries().map(entry => ({
...entry,
pageState: 'invalid base64'
}));
// Close the window, make a new one
w.close();
w = new BrowserWindow();
await w.webContents.navigationHistory.restore({ index: 2, entries: brokenEntries });
const entries = w.webContents.navigationHistory.getAllEntries();
// Check that we used the original url and titles but threw away the broken
// pageState
entries.forEach((entry, index) => {
expect(entry.url).to.equal(brokenEntries[index].url);
expect(entry.title).to.equal(brokenEntries[index].title);
expect(entry.pageState?.length).to.be.greaterThanOrEqual(100);
});
});
});
it('should restore an overridden user agent', async () => {
const partition = 'persist:wcvtest';
const testUA = 'MyCustomUA';
const ses = session.fromPartition(partition);
ses.setUserAgent(testUA);
const wcv = new WebContentsView({
webPreferences: { partition }
});
wcv.webContents.navigationHistory.restore({
entries: [{
url: urlPage1,
title: 'url1'
}],
index: 0
});
const ua = wcv.webContents.getUserAgent();
const wcvua = await wcv.webContents.executeJavaScript('navigator.userAgent');
expect(ua).to.equal(wcvua);
});
});
describe('getFocusedWebContents() API', () => {
2020-03-20 13:28:31 -07:00
afterEach(closeAllWindows);
// FIXME
ifit(!(process.platform === 'win32' && process.arch === 'arm64'))('returns the focused web contents', async () => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: true });
await w.loadFile(path.join(__dirname, 'fixtures', 'blank.html'));
expect(webContents.getFocusedWebContents()?.id).to.equal(w.webContents.id);
2020-03-20 13:28:31 -07:00
const devToolsOpened = once(w.webContents, 'devtools-opened');
2020-03-20 13:28:31 -07:00
w.webContents.openDevTools();
await devToolsOpened;
expect(webContents.getFocusedWebContents()?.id).to.equal(w.webContents.devToolsWebContents!.id);
const devToolsClosed = once(w.webContents, 'devtools-closed');
2020-03-20 13:28:31 -07:00
w.webContents.closeDevTools();
await devToolsClosed;
expect(webContents.getFocusedWebContents()?.id).to.equal(w.webContents.id);
2020-03-20 13:28:31 -07:00
});
it('does not crash when called on a detached dev tools window', async () => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: true });
2020-03-20 13:28:31 -07:00
w.webContents.openDevTools({ mode: 'detach' });
w.webContents.inspectElement(100, 100);
// For some reason we have to wait for two focused events...?
await once(w.webContents, 'devtools-focused');
2020-03-20 13:28:31 -07:00
expect(() => { webContents.getFocusedWebContents(); }).to.not.throw();
// Work around https://github.com/electron/electron/issues/19985
await setTimeout();
const devToolsClosed = once(w.webContents, 'devtools-closed');
2020-03-20 13:28:31 -07:00
w.webContents.closeDevTools();
await devToolsClosed;
expect(() => { webContents.getFocusedWebContents(); }).to.not.throw();
});
});
describe('setDevToolsWebContents() API', () => {
2020-03-20 13:28:31 -07:00
afterEach(closeAllWindows);
it('sets arbitrary webContents as devtools', async () => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false });
const devtools = new BrowserWindow({ show: false });
const promise = once(devtools.webContents, 'dom-ready');
2020-03-20 13:28:31 -07:00
w.webContents.setDevToolsWebContents(devtools.webContents);
w.webContents.openDevTools();
await promise;
expect(devtools.webContents.getURL().startsWith('devtools://devtools')).to.be.true();
const result = await devtools.webContents.executeJavaScript('InspectorFrontendHost.constructor.name');
expect(result).to.equal('InspectorFrontendHostImpl');
devtools.destroy();
});
});
describe('isFocused() API', () => {
build: use github actions for windows (#44136) * build: test windows runner * build: try build windows on windows? * build: take win/cross changes * build: use bash as default shell always * build: configure git for windows build tools * build: bash as default * build: configure windows correctly * build: use sha1sum * build: force windows cipd init and python3 existence * just pain * build: restore cache on windows * build: use build-tools gclient * build: sync gclient vars to build windows job * build: output depshash for debugging * build: past sam was a silly goose * build: depshash logging * build: force lf endings for lock and DEPS * build: platform strings are hard * build: checkout on windows host * sup * no check * idk * sigh * ... * no double checkout * build: yolo some stuff * build: run gn-check for windows on linux hosts for speed * use container... * cry ? * build: e d * e d * no log * fix toolchain on windows cross check * build: use powershell to add mksnapshot_args * build: enable x86 and arm64 windows builds too * clean up * maybe not needed * build: keep action around for post step * build: configure git global on win * build: ia32 zip manifest * build: no patch depot_tools for tests * build: get arm64 windows closer to working * build: windows tar is ass * 32 bit on 32 bit * maybe bash * build: set up nodejs * correct windows sharding * fix some spec runner stuff * fix windows tests * overwrite -Force * sigh * screen res * wat * logs * ... more logs * line endings will be the death of me * remove 1080p force thing * vsctools + logging * disable some fullscreen tests on GHA * no progress * run all CI * install visual studio on arm64 * windows hax for non windows * maybe arm sdk * clean up depshash logic * build: use single check per platform * ensure clean args * fix loop * remove debug * update default build image sha for dispatch * plzzzz * one more try * arm64 vctools * sad * build: fix non-dispatch windows gn check * chore: debug datadog-ci location * chore: update build-tools for newer toolchain * chore: set path for datadog-ci * try this * chore: fixup gn check * fixup gn-check some more * fixup windows gn check * chore: fixup windows gn check * test: use cmd for Windows testing * fixup use cmd for testing on Windows * fixup windows GN check * fixup npm config arch for x86 * Can we set test files via powershell * fixup to set test files via powershell * fixup set test files via powershell * Don't check cross instance cache disk space on Windows * Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing (AGAIN) * use powershell if in powershell * fixup use powershell if in powershell * chore: remove no longer needed changes to depot_tools xref: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/5669094 and https://chromium-review.googlesource.com/c/chromium/src/+/5844046 * chore: try using 7zip on Windows to extract tarball * Revert "chore: try using 7zip on Windows to extract tarball" This reverts commit c7432b6a37857fd0746b8f1776fbd1103dba0b85. * test: debug failing tests on GHA windows * fix: ftbfs when including simdjson in Node.js (cherry picked from commit 48e44c40d61b7aa843a990d4e0c8dec676b4ce8f) * chore: try to track down Windows testing hang * use correct timeout * try this * see if this helps * try to figure out why node is running * shard tests to try to narrow down WOA lockup * try to narrow down problem test * Narrow down blocking test more * do we need a combo to repro * see if this cleans up the tests * fixup navigator.usb test * remove logging from problematic tests * Revert "shard tests to try to narrow down WOA lockup" This reverts commit a1806583769678491814cb8b008131c32be4e8fb. * remove logging * debug keyboard test * add timeout for Windows since arm64 sometimes hangs * see if this helps * put back original timeout * try to use screenCapture to get screenshots of what is going on on WOA * try using electron screencapture to debug WOA hang * chore: turn off privacy experience * run screenshot on both shards * fixup screencap * try to narrow down hanging spec * chore: cleanup servers left open * cleanup tests * Revert "try to narrow down hanging spec" This reverts commit a0f959f5382f4012a9919ac535d42c5333eb7d5f. * cleanup test debugging * fixup extensions spec * cleanup unneeded items * run wtf with 2 shards instead of 6 * Revert "run wtf with 2 shards instead of 6" This reverts commit ca2d282129ee42c535d80f9876d6fa0dc6c08344. * debug windows version on woa * dump more info * Get detailed CPU info * revert debugging * use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * try to track down which tests trigger hang * one or more of these combinations should hang * break up web contents spec to find hang * further break down api-web-contents to find hang * test: ensure all webContents are closed * test: fix require is not defined error * see if api-web-contents spec is now good * test: ensure all webContents are closed * Revert "try to track down which tests trigger hang" This reverts commit 07298d6ffeb4873ef7615a8ec3d1a6696e354ff4. * chore: use alternate location for windows toolchain * Reapply "try to track down which tests trigger hang" This reverts commit 0321f76d01069ef325339b6fe6ed39700eae2b6b. * try to narrow down problem test * fix TEST_SHARD env var * no, really fix TEST_SHARD env var * see if this fixes it * test: cleanup any remaining windows and webcontents * see if new cleanup helps * dont destroy webcontents for now * fixup dont destroy webcontents for now * Only cleanup right before process.exit * see if this fixes the hang * actually destroy webcontents * Revert "Reapply "try to track down which tests trigger hang"" This reverts commit cdee7de049ce6bb5f67bbcc64882c56aa2c73027. * see if this helps * Revert "see if this helps" This reverts commit 9a15a69cf7dbc456db7a61efa5b6870535bae993. * Is it all about the web contents? * it is all about the webcontents but which one? * Narrow down problem webcontents test * try to speed up git install on WOA * disable problematic test on WOA * remove debugging * remove debugging from choco installs * Revert "disable problematic test on WOA" This reverts commit e060fb0839b73d53cfde1f8acdca634f8e267937. * Revert "remove debugging" This reverts commit f18dd8b1a555f56bb06d0ea996a6eff31b424bf1. * run against all the tests in the failing shard * don't run visibility tests first * remove debugging * 3 is a magic number * Revert "3 is a magic number" This reverts commit 36b91ccf9f03a4b34230cd69ceca482f7d8428c1. * match what Appveyor runs exactly * Revert "match what Appveyor runs exactly" This reverts commit 7260dd432216c62696e4bc864930f17c857eabbe. * chore: sort files alphabetically * find out what spec is leaving stuff open * chore: Checkout PR HEAD commit instead of merge commit * try using app.exit instead of process.exit * test: cleanup BrowserWindows and webContents * Revert "chore: sort files alphabetically" This reverts commit d9e217ffb1522076e150fce9e43a31bf56716acb. * chore: use win32 to match process.platform Needed for build-tools to download from PRs * chore: cache yarn dir * fixup cache yarn * fixup use win32 to match process.platform * fixup use win32 to match process.platform * fixup cache yarn * Add debugging for WOA hang * Add debugging for failing keyboard lock test * Revert "Add debugging for WOA hang" This reverts commit 8df03d568d15a269e4026140d1158e8cdf551dec. * try using process.kill * add more debugging to keyboard.lock test * Revert "Add debugging for failing keyboard lock test" * remove debugging * test: disable keyboard.lock on Windows * test: disable fullscreen tests on Windows * test: only force test suite exit on WOA * fixup test: only force test suite exit on WOA * cleanup tests * extract yarn caching/install to action * try using bash to run windows tests * remove left over debugging * standardize on 'win' for Windows builds * use 'x86' for arch for manifest files * fixup try using bash to run windows tests * fixup use 'x86' for arch for manifest files * standardize on 'win' for Windows builds * fixup use 'x86' for arch for manifest files * fixup try using bash to run windows tests --------- Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org> Co-authored-by: Charles Kerr <charles@charleskerr.com>
2024-12-12 08:51:24 -08:00
afterEach(closeAllWindows);
it('returns false when the window is hidden', async () => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false });
await w.loadURL('about:blank');
expect(w.isVisible()).to.be.false();
expect(w.webContents.isFocused()).to.be.false();
});
});
describe('isCurrentlyAudible() API', () => {
2020-03-20 13:28:31 -07:00
afterEach(closeAllWindows);
it('returns whether audio is playing', async () => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false });
await w.loadURL('about:blank');
await w.webContents.executeJavaScript(`
window.context = new AudioContext
// Start in suspended state, because of the
// new web audio api policy.
context.suspend()
window.oscillator = context.createOscillator()
oscillator.connect(context.destination)
oscillator.start()
2020-03-20 13:28:31 -07:00
`);
let p = once(w.webContents, 'audio-state-changed');
2020-03-20 13:28:31 -07:00
w.webContents.executeJavaScript('context.resume()');
await p;
expect(w.webContents.isCurrentlyAudible()).to.be.true();
p = once(w.webContents, 'audio-state-changed');
2020-03-20 13:28:31 -07:00
w.webContents.executeJavaScript('oscillator.stop()');
await p;
expect(w.webContents.isCurrentlyAudible()).to.be.false();
});
});
describe('openDevTools() API', () => {
2020-03-20 13:28:31 -07:00
afterEach(closeAllWindows);
it('can show window with activation', async () => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false });
const focused = once(w, 'focus');
2020-03-20 13:28:31 -07:00
w.show();
await focused;
expect(w.isFocused()).to.be.true();
const blurred = once(w, 'blur');
2020-03-20 13:28:31 -07:00
w.webContents.openDevTools({ mode: 'detach', activate: true });
await Promise.all([
once(w.webContents, 'devtools-opened'),
once(w.webContents, 'devtools-focused')
2020-03-20 13:28:31 -07:00
]);
chore: bump chromium to 93.0.4530.0 (master) (#29256) * chore: bump chromium in DEPS to 92.0.4512.6 * 2887336: [CaptureHandle][#2] Propagate CaptureHandleConfig in browser process https://chromium-review.googlesource.com/c/chromium/src/+/2887336 * refactor: base::Optional -> absl::optional * chore: fixup patch indices * chore: bump chromium in DEPS to 92.0.4514.0 * 2899417: Make build work when enable_pdf is set to false. https://chromium-review.googlesource.com/c/chromium/src/+/2899417 * 2904731: use BrowserContext instead of Profile in PreconnectManager https://chromium-review.googlesource.com/c/chromium/src/+/2904731 * 2295749: fix: check IsSecureEventInputEnabled in constructor before setting SetPasswordInputEnabled to true https://chromium-review.googlesource.com/c/chromium/src/+/2295749 * 2893803: Add a GetWebView to RenderFrame. https://chromium-review.googlesource.com/c/chromium/src/+/2893803 * 2892345: Implement WebContents::ForEachRenderFrameHost https://chromium-review.googlesource.com/c/chromium/src/+/2892345 * chore: fixup patch indices * 2892048: Real instance methods for BrowserContext: remaining 5 methods. https://chromium-review.googlesource.com/c/chromium/src/+/2892048 * 2902821: [mojo] Don't require full header includes for referenced interfaces https://chromium-review.googlesource.com/c/chromium/src/+/2902821 * 2496500: Remove last deprecated extension Event ctor. https://chromium-review.googlesource.com/c/chromium/src/+/2496500 * chore: fixup malformed pepper support patch * chore: bump chromium in DEPS to 92.0.4515.0 * 2908461: Add CreateEmptyPrintPagesParamsPtr() inside print_view_manager_base.cc. https://chromium-review.googlesource.com/c/chromium/src/+/2908461 * 2880838: viz: add optional HDRMetadata to TransferableResource https://chromium-review.googlesource.com/c/chromium/src/+/2880838 * chore: fixup patch indices * chore: bump chromium in DEPS to 92.0.4515.5 * chore: update patches * chore: bump chromium in DEPS to 92.0.4515.7 * chore: bump chromium in DEPS to 92.0.4515.9 * chore: bump chromium in DEPS to 93.0.4522.0 * chore: bump chromium in DEPS to 93.0.4523.0 * chore: bump chromium in DEPS to 93.0.4524.0 * chore: update patches * chore: enable_pak_file_integrity_checks was reverted * chore: update patches * refactor: base/optional was replaced with absl::optional Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2910202 * refactor: replace all usages of base::nullopt with absl::nullopt Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2910202 * chore: add missing base::Contains include Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2910202 * refactor: replace all usages of base::make_optional with absl::make_optional Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2910202 * refactor: replace WorldScriptContext() with GetScriptContextFromWorldId Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2893213 * chore: clean up left over opening namespace Refs: https://github.com/electron/electron/commit/95bfe6d08f65471394fb3005dbfa177cdf71210a * chore: add missing base::Contains include Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2910202 * refactor: replace GetCurrentDisplayIterator with the hard checker GetCurrentDisplay This code looks suspicious but if the iterator was invalid before it will also be invalid now. Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2893191 * refactor: headers are now passed directly in extensions client Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2918906 * refactor: base::DictionaryValue::empty() has been removed Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2912424 * chore: add missing includes for network URLLoaderFactory Refs: unknown, probably a side effect of header changes * refactor: make convenience wrapper around AppendArg There is no converter FromV8 for base::StringPiece (apparently its not possible). So we now take in an std::string and use the construct for StringPiece to do implicit conversion. Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2905544 * chore: add patch * chore: bump chromium in DEPS to 93.0.4525.0 * chore: update patches * refactor: CanResize has been de-virtualized Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2485774 * chore: update resource integrity patch * chore: add character encoding idl patch * chore: bump chromium in DEPS to 93.0.4526.0 * chore: update patches * chore: bump chromium in DEPS to 93.0.4527.0 * chore: bump chromium in DEPS to 93.0.4528.0 * chore: update patches * chore: update idl encoding patch * chore: bump chromium in DEPS to 93.0.4529.0 * chore: update patches * chore: bump chromium in DEPS to 93.0.4530.0 * chore: update patches * fix: only SetCanResize after the widget has been initialized * chore: add patch for vr on windows gn gen * spec: fix focus related tests on linux due to delay in focus swap * chore: remove new usages of base::Optional from main Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com> Co-authored-by: Samuel Attard <sattard@slack-corp.com> Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
2021-06-03 01:05:04 -07:00
await blurred;
2020-03-20 13:28:31 -07:00
expect(w.isFocused()).to.be.false();
});
it('can show window without activation', async () => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false });
const devtoolsOpened = once(w.webContents, 'devtools-opened');
2020-03-20 13:28:31 -07:00
w.webContents.openDevTools({ mode: 'detach', activate: false });
await devtoolsOpened;
expect(w.webContents.isDevToolsOpened()).to.be.true();
});
it('can show a DevTools window with custom title', async () => {
const w = new BrowserWindow({ show: false });
const devtoolsOpened = once(w.webContents, 'devtools-opened');
w.webContents.openDevTools({ mode: 'detach', activate: false, title: 'myTitle' });
await devtoolsOpened;
expect(w.webContents.getDevToolsTitle()).to.equal('myTitle');
});
it('can re-open devtools', async () => {
const w = new BrowserWindow({ show: false });
const devtoolsOpened = once(w.webContents, 'devtools-opened');
w.webContents.openDevTools({ mode: 'detach', activate: true });
await devtoolsOpened;
expect(w.webContents.isDevToolsOpened()).to.be.true();
const devtoolsClosed = once(w.webContents, 'devtools-closed');
w.webContents.closeDevTools();
await devtoolsClosed;
expect(w.webContents.isDevToolsOpened()).to.be.false();
const devtoolsOpened2 = once(w.webContents, 'devtools-opened');
w.webContents.openDevTools({ mode: 'detach', activate: true });
await devtoolsOpened2;
expect(w.webContents.isDevToolsOpened()).to.be.true();
});
});
describe('setDevToolsTitle() API', () => {
afterEach(closeAllWindows);
it('can set devtools title with function', async () => {
const w = new BrowserWindow({ show: false });
const devtoolsOpened = once(w.webContents, 'devtools-opened');
w.webContents.openDevTools({ mode: 'detach', activate: false });
await devtoolsOpened;
expect(w.webContents.isDevToolsOpened()).to.be.true();
w.webContents.setDevToolsTitle('newTitle');
expect(w.webContents.getDevToolsTitle()).to.equal('newTitle');
});
2020-03-20 13:28:31 -07:00
});
describe('before-mouse-event event', () => {
afterEach(closeAllWindows);
it('can prevent document mouse events', async () => {
const w = new BrowserWindow({ show: false, webPreferences: { nodeIntegration: true, contextIsolation: false } });
await w.loadFile(path.join(fixturesPath, 'pages', 'mouse-events.html'));
const mouseDown = new Promise(resolve => {
ipcMain.once('mousedown', (event, button) => resolve(button));
});
w.webContents.once('before-mouse-event', (event, input) => {
if (input.button === 'left') event.preventDefault();
});
w.webContents.sendInputEvent({ type: 'mouseDown', button: 'left', x: 100, y: 100 });
w.webContents.sendInputEvent({ type: 'mouseDown', button: 'right', x: 100, y: 100 });
expect(await mouseDown).to.equal(2); // Right button is 2
});
it('has the correct properties', async () => {
const w = new BrowserWindow({ show: false });
await w.loadFile(path.join(fixturesPath, 'pages', 'base-page.html'));
const testBeforeMouse = async (opts: Electron.MouseInputEvent) => {
const p = once(w.webContents, 'before-mouse-event');
w.webContents.sendInputEvent({
type: opts.type,
button: opts.button,
x: opts.x,
y: opts.y,
globalX: opts.globalX,
globalY: opts.globalY,
clickCount: opts.clickCount
});
const [, input] = await p;
expect(input.type).to.equal(opts.type);
expect(input.button).to.equal(opts.button);
expect(input.x).to.equal(opts.x);
expect(input.y).to.equal(opts.y);
expect(input.globalX).to.equal(opts.globalX);
expect(input.globalY).to.equal(opts.globalY);
expect(input.clickCount).to.equal(opts.clickCount);
};
await testBeforeMouse({
type: 'mouseDown',
button: 'left',
x: 100,
y: 100,
globalX: 200,
globalY: 200,
clickCount: 1
});
await testBeforeMouse({
type: 'mouseUp',
button: 'right',
x: 150,
y: 150,
globalX: 250,
globalY: 250,
clickCount: 2
});
await testBeforeMouse({
type: 'mouseMove',
button: 'middle',
x: 200,
y: 200,
globalX: 300,
globalY: 300,
clickCount: 0
});
});
});
describe('before-input-event event', () => {
2020-03-20 13:28:31 -07:00
afterEach(closeAllWindows);
it('can prevent document keyboard events', async () => {
const w = new BrowserWindow({ show: false, webPreferences: { nodeIntegration: true, contextIsolation: false } });
2020-03-20 13:28:31 -07:00
await w.loadFile(path.join(fixturesPath, 'pages', 'key-events.html'));
const keyDown = new Promise(resolve => {
2020-03-20 13:28:31 -07:00
ipcMain.once('keydown', (event, key) => resolve(key));
});
w.webContents.once('before-input-event', (event, input) => {
2020-03-20 13:28:31 -07:00
if (input.key === 'a') event.preventDefault();
});
w.webContents.sendInputEvent({ type: 'keyDown', keyCode: 'a' });
w.webContents.sendInputEvent({ type: 'keyDown', keyCode: 'b' });
expect(await keyDown).to.equal('b');
});
it('has the correct properties', async () => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false });
await w.loadFile(path.join(fixturesPath, 'pages', 'base-page.html'));
const testBeforeInput = async (opts: any) => {
2020-03-20 13:28:31 -07:00
const modifiers = [];
if (opts.shift) modifiers.push('shift');
if (opts.control) modifiers.push('control');
if (opts.alt) modifiers.push('alt');
if (opts.meta) modifiers.push('meta');
if (opts.isAutoRepeat) modifiers.push('isAutoRepeat');
const p = once(w.webContents, 'before-input-event') as Promise<[any, Electron.Input]>;
w.webContents.sendInputEvent({
type: opts.type,
keyCode: opts.keyCode,
modifiers: modifiers as any
2020-03-20 13:28:31 -07:00
});
const [, input] = await p;
expect(input.type).to.equal(opts.type);
expect(input.key).to.equal(opts.key);
expect(input.code).to.equal(opts.code);
expect(input.isAutoRepeat).to.equal(opts.isAutoRepeat);
expect(input.shift).to.equal(opts.shift);
expect(input.control).to.equal(opts.control);
expect(input.alt).to.equal(opts.alt);
expect(input.meta).to.equal(opts.meta);
};
await testBeforeInput({
type: 'keyDown',
key: 'A',
code: 'KeyA',
keyCode: 'a',
shift: true,
control: true,
alt: true,
meta: true,
isAutoRepeat: true
2020-03-20 13:28:31 -07:00
});
await testBeforeInput({
type: 'keyUp',
key: '.',
code: 'Period',
keyCode: '.',
shift: false,
control: true,
alt: true,
meta: false,
isAutoRepeat: false
2020-03-20 13:28:31 -07:00
});
await testBeforeInput({
type: 'keyUp',
key: '!',
code: 'Digit1',
keyCode: '1',
shift: true,
control: false,
alt: false,
meta: true,
isAutoRepeat: false
2020-03-20 13:28:31 -07:00
});
await testBeforeInput({
type: 'keyUp',
key: 'Tab',
code: 'Tab',
keyCode: 'Tab',
shift: false,
control: true,
alt: false,
meta: false,
isAutoRepeat: true
2020-03-20 13:28:31 -07:00
});
});
});
// On Mac, zooming isn't done with the mouse wheel.
ifdescribe(process.platform !== 'darwin')('zoom-changed', () => {
2020-03-20 13:28:31 -07:00
afterEach(closeAllWindows);
it('is emitted with the correct zoom-in info', async () => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false });
await w.loadFile(path.join(fixturesPath, 'pages', 'base-page.html'));
const testZoomChanged = async () => {
w.webContents.sendInputEvent({
type: 'mouseWheel',
x: 300,
y: 300,
deltaX: 0,
deltaY: 1,
wheelTicksX: 0,
wheelTicksY: 1,
modifiers: ['control', 'meta']
2020-03-20 13:28:31 -07:00
});
const [, zoomDirection] = await once(w.webContents, 'zoom-changed') as [any, string];
expect(zoomDirection).to.equal('in');
2020-03-20 13:28:31 -07:00
};
await testZoomChanged();
});
it('is emitted with the correct zoom-out info', async () => {
const w = new BrowserWindow({ show: false });
await w.loadFile(path.join(fixturesPath, 'pages', 'base-page.html'));
const testZoomChanged = async () => {
w.webContents.sendInputEvent({
type: 'mouseWheel',
x: 300,
y: 300,
deltaX: 0,
deltaY: -1,
wheelTicksX: 0,
wheelTicksY: -1,
modifiers: ['control', 'meta']
});
const [, zoomDirection] = await once(w.webContents, 'zoom-changed') as [any, string];
expect(zoomDirection).to.equal('out');
};
await testZoomChanged();
2020-03-20 13:28:31 -07:00
});
});
describe('sendInputEvent(event)', () => {
2020-03-20 13:28:31 -07:00
let w: BrowserWindow;
beforeEach(async () => {
w = new BrowserWindow({ show: false, webPreferences: { nodeIntegration: true, contextIsolation: false } });
2020-03-20 13:28:31 -07:00
await w.loadFile(path.join(fixturesPath, 'pages', 'key-events.html'));
});
afterEach(closeAllWindows);
it('can send keydown events', async () => {
const keydown = once(ipcMain, 'keydown');
2020-03-20 13:28:31 -07:00
w.webContents.sendInputEvent({ type: 'keyDown', keyCode: 'A' });
const [, key, code, keyCode, shiftKey, ctrlKey, altKey] = await keydown;
expect(key).to.equal('a');
expect(code).to.equal('KeyA');
expect(keyCode).to.equal(65);
expect(shiftKey).to.be.false();
expect(ctrlKey).to.be.false();
expect(altKey).to.be.false();
2020-03-20 13:28:31 -07:00
});
it('can send keydown events with modifiers', async () => {
const keydown = once(ipcMain, 'keydown');
2020-03-20 13:28:31 -07:00
w.webContents.sendInputEvent({ type: 'keyDown', keyCode: 'Z', modifiers: ['shift', 'ctrl'] });
const [, key, code, keyCode, shiftKey, ctrlKey, altKey] = await keydown;
expect(key).to.equal('Z');
expect(code).to.equal('KeyZ');
expect(keyCode).to.equal(90);
expect(shiftKey).to.be.true();
expect(ctrlKey).to.be.true();
expect(altKey).to.be.false();
2020-03-20 13:28:31 -07:00
});
it('can send keydown events with special keys', async () => {
const keydown = once(ipcMain, 'keydown');
2020-03-20 13:28:31 -07:00
w.webContents.sendInputEvent({ type: 'keyDown', keyCode: 'Tab', modifiers: ['alt'] });
const [, key, code, keyCode, shiftKey, ctrlKey, altKey] = await keydown;
expect(key).to.equal('Tab');
expect(code).to.equal('Tab');
expect(keyCode).to.equal(9);
expect(shiftKey).to.be.false();
expect(ctrlKey).to.be.false();
expect(altKey).to.be.true();
2020-03-20 13:28:31 -07:00
});
it('can send char events', async () => {
const keypress = once(ipcMain, 'keypress');
2020-03-20 13:28:31 -07:00
w.webContents.sendInputEvent({ type: 'keyDown', keyCode: 'A' });
w.webContents.sendInputEvent({ type: 'char', keyCode: 'A' });
const [, key, code, keyCode, shiftKey, ctrlKey, altKey] = await keypress;
expect(key).to.equal('a');
expect(code).to.equal('KeyA');
expect(keyCode).to.equal(65);
expect(shiftKey).to.be.false();
expect(ctrlKey).to.be.false();
expect(altKey).to.be.false();
2020-03-20 13:28:31 -07:00
});
it('can correctly convert accelerators to key codes', async () => {
const keyup = once(ipcMain, 'keyup');
w.webContents.sendInputEvent({ keyCode: 'Plus', type: 'char' });
w.webContents.sendInputEvent({ keyCode: 'Space', type: 'char' });
w.webContents.sendInputEvent({ keyCode: 'Plus', type: 'char' });
w.webContents.sendInputEvent({ keyCode: 'Space', type: 'char' });
w.webContents.sendInputEvent({ keyCode: 'Plus', type: 'char' });
w.webContents.sendInputEvent({ keyCode: 'Plus', type: 'keyUp' });
await keyup;
const inputText = await w.webContents.executeJavaScript('document.getElementById("input").value');
expect(inputText).to.equal('+ + +');
});
it('can send char events with modifiers', async () => {
const keypress = once(ipcMain, 'keypress');
2020-03-20 13:28:31 -07:00
w.webContents.sendInputEvent({ type: 'keyDown', keyCode: 'Z' });
w.webContents.sendInputEvent({ type: 'char', keyCode: 'Z', modifiers: ['shift', 'ctrl'] });
const [, key, code, keyCode, shiftKey, ctrlKey, altKey] = await keypress;
expect(key).to.equal('Z');
expect(code).to.equal('KeyZ');
expect(keyCode).to.equal(90);
expect(shiftKey).to.be.true();
expect(ctrlKey).to.be.true();
expect(altKey).to.be.false();
2020-03-20 13:28:31 -07:00
});
});
describe('insertCSS', () => {
2020-03-20 13:28:31 -07:00
afterEach(closeAllWindows);
it('supports inserting CSS', async () => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false });
w.loadURL('about:blank');
await w.webContents.insertCSS('body { background-repeat: round; }');
const result = await w.webContents.executeJavaScript('window.getComputedStyle(document.body).getPropertyValue("background-repeat")');
expect(result).to.equal('round');
});
it('supports removing inserted CSS', async () => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false });
w.loadURL('about:blank');
const key = await w.webContents.insertCSS('body { background-repeat: round; }');
await w.webContents.removeInsertedCSS(key);
const result = await w.webContents.executeJavaScript('window.getComputedStyle(document.body).getPropertyValue("background-repeat")');
expect(result).to.equal('repeat');
});
});
describe('inspectElement()', () => {
2020-03-20 13:28:31 -07:00
afterEach(closeAllWindows);
it('supports inspecting an element in the devtools', async () => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false });
w.loadURL('about:blank');
const event = once(w.webContents, 'devtools-opened');
2020-03-20 13:28:31 -07:00
w.webContents.inspectElement(10, 10);
await event;
2020-03-20 13:28:31 -07:00
});
});
describe('startDrag({file, icon})', () => {
build: use github actions for windows (#44136) * build: test windows runner * build: try build windows on windows? * build: take win/cross changes * build: use bash as default shell always * build: configure git for windows build tools * build: bash as default * build: configure windows correctly * build: use sha1sum * build: force windows cipd init and python3 existence * just pain * build: restore cache on windows * build: use build-tools gclient * build: sync gclient vars to build windows job * build: output depshash for debugging * build: past sam was a silly goose * build: depshash logging * build: force lf endings for lock and DEPS * build: platform strings are hard * build: checkout on windows host * sup * no check * idk * sigh * ... * no double checkout * build: yolo some stuff * build: run gn-check for windows on linux hosts for speed * use container... * cry ? * build: e d * e d * no log * fix toolchain on windows cross check * build: use powershell to add mksnapshot_args * build: enable x86 and arm64 windows builds too * clean up * maybe not needed * build: keep action around for post step * build: configure git global on win * build: ia32 zip manifest * build: no patch depot_tools for tests * build: get arm64 windows closer to working * build: windows tar is ass * 32 bit on 32 bit * maybe bash * build: set up nodejs * correct windows sharding * fix some spec runner stuff * fix windows tests * overwrite -Force * sigh * screen res * wat * logs * ... more logs * line endings will be the death of me * remove 1080p force thing * vsctools + logging * disable some fullscreen tests on GHA * no progress * run all CI * install visual studio on arm64 * windows hax for non windows * maybe arm sdk * clean up depshash logic * build: use single check per platform * ensure clean args * fix loop * remove debug * update default build image sha for dispatch * plzzzz * one more try * arm64 vctools * sad * build: fix non-dispatch windows gn check * chore: debug datadog-ci location * chore: update build-tools for newer toolchain * chore: set path for datadog-ci * try this * chore: fixup gn check * fixup gn-check some more * fixup windows gn check * chore: fixup windows gn check * test: use cmd for Windows testing * fixup use cmd for testing on Windows * fixup windows GN check * fixup npm config arch for x86 * Can we set test files via powershell * fixup to set test files via powershell * fixup set test files via powershell * Don't check cross instance cache disk space on Windows * Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing (AGAIN) * use powershell if in powershell * fixup use powershell if in powershell * chore: remove no longer needed changes to depot_tools xref: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/5669094 and https://chromium-review.googlesource.com/c/chromium/src/+/5844046 * chore: try using 7zip on Windows to extract tarball * Revert "chore: try using 7zip on Windows to extract tarball" This reverts commit c7432b6a37857fd0746b8f1776fbd1103dba0b85. * test: debug failing tests on GHA windows * fix: ftbfs when including simdjson in Node.js (cherry picked from commit 48e44c40d61b7aa843a990d4e0c8dec676b4ce8f) * chore: try to track down Windows testing hang * use correct timeout * try this * see if this helps * try to figure out why node is running * shard tests to try to narrow down WOA lockup * try to narrow down problem test * Narrow down blocking test more * do we need a combo to repro * see if this cleans up the tests * fixup navigator.usb test * remove logging from problematic tests * Revert "shard tests to try to narrow down WOA lockup" This reverts commit a1806583769678491814cb8b008131c32be4e8fb. * remove logging * debug keyboard test * add timeout for Windows since arm64 sometimes hangs * see if this helps * put back original timeout * try to use screenCapture to get screenshots of what is going on on WOA * try using electron screencapture to debug WOA hang * chore: turn off privacy experience * run screenshot on both shards * fixup screencap * try to narrow down hanging spec * chore: cleanup servers left open * cleanup tests * Revert "try to narrow down hanging spec" This reverts commit a0f959f5382f4012a9919ac535d42c5333eb7d5f. * cleanup test debugging * fixup extensions spec * cleanup unneeded items * run wtf with 2 shards instead of 6 * Revert "run wtf with 2 shards instead of 6" This reverts commit ca2d282129ee42c535d80f9876d6fa0dc6c08344. * debug windows version on woa * dump more info * Get detailed CPU info * revert debugging * use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * try to track down which tests trigger hang * one or more of these combinations should hang * break up web contents spec to find hang * further break down api-web-contents to find hang * test: ensure all webContents are closed * test: fix require is not defined error * see if api-web-contents spec is now good * test: ensure all webContents are closed * Revert "try to track down which tests trigger hang" This reverts commit 07298d6ffeb4873ef7615a8ec3d1a6696e354ff4. * chore: use alternate location for windows toolchain * Reapply "try to track down which tests trigger hang" This reverts commit 0321f76d01069ef325339b6fe6ed39700eae2b6b. * try to narrow down problem test * fix TEST_SHARD env var * no, really fix TEST_SHARD env var * see if this fixes it * test: cleanup any remaining windows and webcontents * see if new cleanup helps * dont destroy webcontents for now * fixup dont destroy webcontents for now * Only cleanup right before process.exit * see if this fixes the hang * actually destroy webcontents * Revert "Reapply "try to track down which tests trigger hang"" This reverts commit cdee7de049ce6bb5f67bbcc64882c56aa2c73027. * see if this helps * Revert "see if this helps" This reverts commit 9a15a69cf7dbc456db7a61efa5b6870535bae993. * Is it all about the web contents? * it is all about the webcontents but which one? * Narrow down problem webcontents test * try to speed up git install on WOA * disable problematic test on WOA * remove debugging * remove debugging from choco installs * Revert "disable problematic test on WOA" This reverts commit e060fb0839b73d53cfde1f8acdca634f8e267937. * Revert "remove debugging" This reverts commit f18dd8b1a555f56bb06d0ea996a6eff31b424bf1. * run against all the tests in the failing shard * don't run visibility tests first * remove debugging * 3 is a magic number * Revert "3 is a magic number" This reverts commit 36b91ccf9f03a4b34230cd69ceca482f7d8428c1. * match what Appveyor runs exactly * Revert "match what Appveyor runs exactly" This reverts commit 7260dd432216c62696e4bc864930f17c857eabbe. * chore: sort files alphabetically * find out what spec is leaving stuff open * chore: Checkout PR HEAD commit instead of merge commit * try using app.exit instead of process.exit * test: cleanup BrowserWindows and webContents * Revert "chore: sort files alphabetically" This reverts commit d9e217ffb1522076e150fce9e43a31bf56716acb. * chore: use win32 to match process.platform Needed for build-tools to download from PRs * chore: cache yarn dir * fixup cache yarn * fixup use win32 to match process.platform * fixup use win32 to match process.platform * fixup cache yarn * Add debugging for WOA hang * Add debugging for failing keyboard lock test * Revert "Add debugging for WOA hang" This reverts commit 8df03d568d15a269e4026140d1158e8cdf551dec. * try using process.kill * add more debugging to keyboard.lock test * Revert "Add debugging for failing keyboard lock test" * remove debugging * test: disable keyboard.lock on Windows * test: disable fullscreen tests on Windows * test: only force test suite exit on WOA * fixup test: only force test suite exit on WOA * cleanup tests * extract yarn caching/install to action * try using bash to run windows tests * remove left over debugging * standardize on 'win' for Windows builds * use 'x86' for arch for manifest files * fixup try using bash to run windows tests * fixup use 'x86' for arch for manifest files * standardize on 'win' for Windows builds * fixup use 'x86' for arch for manifest files * fixup try using bash to run windows tests --------- Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org> Co-authored-by: Charles Kerr <charles@charleskerr.com>
2024-12-12 08:51:24 -08:00
afterEach(closeAllWindows);
it('throws errors for a missing file or a missing/empty icon', () => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false });
expect(() => {
2020-03-20 13:28:31 -07:00
w.webContents.startDrag({ icon: path.join(fixturesPath, 'assets', 'logo.png') } as any);
}).to.throw('Must specify either \'file\' or \'files\' option');
expect(() => {
2020-03-20 13:28:31 -07:00
w.webContents.startDrag({ file: __filename } as any);
}).to.throw('\'icon\' parameter is required');
expect(() => {
w.webContents.startDrag({ file: __filename, icon: path.join(fixturesPath, 'blank.png') });
}).to.throw(/Failed to load image from path (.+)/);
2020-03-20 13:28:31 -07:00
});
});
describe('focus APIs', () => {
describe('focus()', () => {
2020-03-20 13:28:31 -07:00
afterEach(closeAllWindows);
it('does not blur the focused window when the web contents is hidden', async () => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false, webPreferences: { nodeIntegration: true } });
w.show();
await w.loadURL('about:blank');
w.focus();
const child = new BrowserWindow({ show: false });
child.loadURL('about:blank');
child.webContents.focus();
const currentFocused = w.isFocused();
const childFocused = child.isFocused();
child.close();
expect(currentFocused).to.be.true();
expect(childFocused).to.be.false();
});
it('does not crash when focusing a WebView webContents', async () => {
const w = new BrowserWindow({
show: false,
webPreferences: {
nodeIntegration: true,
webviewTag: true
}
});
w.show();
await w.loadURL('data:text/html,<webview src="data:text/html,hi"></webview>');
const wc = webContents.getAllWebContents().find((wc) => wc.getType() === 'webview')!;
expect(() => wc.focus()).to.not.throw();
});
2020-03-20 13:28:31 -07:00
});
const moveFocusToDevTools = async (win: BrowserWindow) => {
const devToolsOpened = once(win.webContents, 'devtools-opened');
win.webContents.openDevTools({ mode: 'right' });
await devToolsOpened;
win.webContents.devToolsWebContents!.focus();
};
describe('focus event', () => {
afterEach(closeAllWindows);
it('is triggered when web contents is focused', async () => {
const w = new BrowserWindow({ show: false });
await w.loadURL('about:blank');
await moveFocusToDevTools(w);
const focusPromise = once(w.webContents, 'focus');
w.webContents.focus();
await expect(focusPromise).to.eventually.be.fulfilled();
});
});
describe('blur event', () => {
afterEach(closeAllWindows);
it('is triggered when web contents is blurred', async () => {
const w = new BrowserWindow({ show: true });
await w.loadURL('about:blank');
w.webContents.focus();
const blurPromise = once(w.webContents, 'blur');
await moveFocusToDevTools(w);
await expect(blurPromise).to.eventually.be.fulfilled();
});
});
2020-03-20 13:28:31 -07:00
});
describe('getOSProcessId()', () => {
2020-03-20 13:28:31 -07:00
afterEach(closeAllWindows);
it('returns a valid process id', async () => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false });
expect(w.webContents.getOSProcessId()).to.equal(0);
2020-03-20 13:28:31 -07:00
await w.loadURL('about:blank');
expect(w.webContents.getOSProcessId()).to.be.above(0);
});
});
describe('getMediaSourceId()', () => {
afterEach(closeAllWindows);
it('returns a valid stream id', () => {
const w = new BrowserWindow({ show: false });
expect(w.webContents.getMediaSourceId(w.webContents)).to.be.a('string').that.is.not.empty();
});
});
describe('userAgent APIs', () => {
build: use github actions for windows (#44136) * build: test windows runner * build: try build windows on windows? * build: take win/cross changes * build: use bash as default shell always * build: configure git for windows build tools * build: bash as default * build: configure windows correctly * build: use sha1sum * build: force windows cipd init and python3 existence * just pain * build: restore cache on windows * build: use build-tools gclient * build: sync gclient vars to build windows job * build: output depshash for debugging * build: past sam was a silly goose * build: depshash logging * build: force lf endings for lock and DEPS * build: platform strings are hard * build: checkout on windows host * sup * no check * idk * sigh * ... * no double checkout * build: yolo some stuff * build: run gn-check for windows on linux hosts for speed * use container... * cry ? * build: e d * e d * no log * fix toolchain on windows cross check * build: use powershell to add mksnapshot_args * build: enable x86 and arm64 windows builds too * clean up * maybe not needed * build: keep action around for post step * build: configure git global on win * build: ia32 zip manifest * build: no patch depot_tools for tests * build: get arm64 windows closer to working * build: windows tar is ass * 32 bit on 32 bit * maybe bash * build: set up nodejs * correct windows sharding * fix some spec runner stuff * fix windows tests * overwrite -Force * sigh * screen res * wat * logs * ... more logs * line endings will be the death of me * remove 1080p force thing * vsctools + logging * disable some fullscreen tests on GHA * no progress * run all CI * install visual studio on arm64 * windows hax for non windows * maybe arm sdk * clean up depshash logic * build: use single check per platform * ensure clean args * fix loop * remove debug * update default build image sha for dispatch * plzzzz * one more try * arm64 vctools * sad * build: fix non-dispatch windows gn check * chore: debug datadog-ci location * chore: update build-tools for newer toolchain * chore: set path for datadog-ci * try this * chore: fixup gn check * fixup gn-check some more * fixup windows gn check * chore: fixup windows gn check * test: use cmd for Windows testing * fixup use cmd for testing on Windows * fixup windows GN check * fixup npm config arch for x86 * Can we set test files via powershell * fixup to set test files via powershell * fixup set test files via powershell * Don't check cross instance cache disk space on Windows * Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing (AGAIN) * use powershell if in powershell * fixup use powershell if in powershell * chore: remove no longer needed changes to depot_tools xref: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/5669094 and https://chromium-review.googlesource.com/c/chromium/src/+/5844046 * chore: try using 7zip on Windows to extract tarball * Revert "chore: try using 7zip on Windows to extract tarball" This reverts commit c7432b6a37857fd0746b8f1776fbd1103dba0b85. * test: debug failing tests on GHA windows * fix: ftbfs when including simdjson in Node.js (cherry picked from commit 48e44c40d61b7aa843a990d4e0c8dec676b4ce8f) * chore: try to track down Windows testing hang * use correct timeout * try this * see if this helps * try to figure out why node is running * shard tests to try to narrow down WOA lockup * try to narrow down problem test * Narrow down blocking test more * do we need a combo to repro * see if this cleans up the tests * fixup navigator.usb test * remove logging from problematic tests * Revert "shard tests to try to narrow down WOA lockup" This reverts commit a1806583769678491814cb8b008131c32be4e8fb. * remove logging * debug keyboard test * add timeout for Windows since arm64 sometimes hangs * see if this helps * put back original timeout * try to use screenCapture to get screenshots of what is going on on WOA * try using electron screencapture to debug WOA hang * chore: turn off privacy experience * run screenshot on both shards * fixup screencap * try to narrow down hanging spec * chore: cleanup servers left open * cleanup tests * Revert "try to narrow down hanging spec" This reverts commit a0f959f5382f4012a9919ac535d42c5333eb7d5f. * cleanup test debugging * fixup extensions spec * cleanup unneeded items * run wtf with 2 shards instead of 6 * Revert "run wtf with 2 shards instead of 6" This reverts commit ca2d282129ee42c535d80f9876d6fa0dc6c08344. * debug windows version on woa * dump more info * Get detailed CPU info * revert debugging * use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * try to track down which tests trigger hang * one or more of these combinations should hang * break up web contents spec to find hang * further break down api-web-contents to find hang * test: ensure all webContents are closed * test: fix require is not defined error * see if api-web-contents spec is now good * test: ensure all webContents are closed * Revert "try to track down which tests trigger hang" This reverts commit 07298d6ffeb4873ef7615a8ec3d1a6696e354ff4. * chore: use alternate location for windows toolchain * Reapply "try to track down which tests trigger hang" This reverts commit 0321f76d01069ef325339b6fe6ed39700eae2b6b. * try to narrow down problem test * fix TEST_SHARD env var * no, really fix TEST_SHARD env var * see if this fixes it * test: cleanup any remaining windows and webcontents * see if new cleanup helps * dont destroy webcontents for now * fixup dont destroy webcontents for now * Only cleanup right before process.exit * see if this fixes the hang * actually destroy webcontents * Revert "Reapply "try to track down which tests trigger hang"" This reverts commit cdee7de049ce6bb5f67bbcc64882c56aa2c73027. * see if this helps * Revert "see if this helps" This reverts commit 9a15a69cf7dbc456db7a61efa5b6870535bae993. * Is it all about the web contents? * it is all about the webcontents but which one? * Narrow down problem webcontents test * try to speed up git install on WOA * disable problematic test on WOA * remove debugging * remove debugging from choco installs * Revert "disable problematic test on WOA" This reverts commit e060fb0839b73d53cfde1f8acdca634f8e267937. * Revert "remove debugging" This reverts commit f18dd8b1a555f56bb06d0ea996a6eff31b424bf1. * run against all the tests in the failing shard * don't run visibility tests first * remove debugging * 3 is a magic number * Revert "3 is a magic number" This reverts commit 36b91ccf9f03a4b34230cd69ceca482f7d8428c1. * match what Appveyor runs exactly * Revert "match what Appveyor runs exactly" This reverts commit 7260dd432216c62696e4bc864930f17c857eabbe. * chore: sort files alphabetically * find out what spec is leaving stuff open * chore: Checkout PR HEAD commit instead of merge commit * try using app.exit instead of process.exit * test: cleanup BrowserWindows and webContents * Revert "chore: sort files alphabetically" This reverts commit d9e217ffb1522076e150fce9e43a31bf56716acb. * chore: use win32 to match process.platform Needed for build-tools to download from PRs * chore: cache yarn dir * fixup cache yarn * fixup use win32 to match process.platform * fixup use win32 to match process.platform * fixup cache yarn * Add debugging for WOA hang * Add debugging for failing keyboard lock test * Revert "Add debugging for WOA hang" This reverts commit 8df03d568d15a269e4026140d1158e8cdf551dec. * try using process.kill * add more debugging to keyboard.lock test * Revert "Add debugging for failing keyboard lock test" * remove debugging * test: disable keyboard.lock on Windows * test: disable fullscreen tests on Windows * test: only force test suite exit on WOA * fixup test: only force test suite exit on WOA * cleanup tests * extract yarn caching/install to action * try using bash to run windows tests * remove left over debugging * standardize on 'win' for Windows builds * use 'x86' for arch for manifest files * fixup try using bash to run windows tests * fixup use 'x86' for arch for manifest files * standardize on 'win' for Windows builds * fixup use 'x86' for arch for manifest files * fixup try using bash to run windows tests --------- Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org> Co-authored-by: Charles Kerr <charles@charleskerr.com>
2024-12-12 08:51:24 -08:00
afterEach(closeAllWindows);
it('is not empty by default', () => {
const w = new BrowserWindow({ show: false });
const userAgent = w.webContents.getUserAgent();
expect(userAgent).to.be.a('string').that.is.not.empty();
});
it('can set the user agent (functions)', () => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false });
const userAgent = w.webContents.getUserAgent();
2020-03-20 13:28:31 -07:00
w.webContents.setUserAgent('my-user-agent');
expect(w.webContents.getUserAgent()).to.equal('my-user-agent');
2020-03-20 13:28:31 -07:00
w.webContents.setUserAgent(userAgent);
expect(w.webContents.getUserAgent()).to.equal(userAgent);
});
it('can set the user agent (properties)', () => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false });
const userAgent = w.webContents.userAgent;
2020-03-20 13:28:31 -07:00
w.webContents.userAgent = 'my-user-agent';
expect(w.webContents.userAgent).to.equal('my-user-agent');
2020-03-20 13:28:31 -07:00
w.webContents.userAgent = userAgent;
expect(w.webContents.userAgent).to.equal(userAgent);
});
});
describe('audioMuted APIs', () => {
build: use github actions for windows (#44136) * build: test windows runner * build: try build windows on windows? * build: take win/cross changes * build: use bash as default shell always * build: configure git for windows build tools * build: bash as default * build: configure windows correctly * build: use sha1sum * build: force windows cipd init and python3 existence * just pain * build: restore cache on windows * build: use build-tools gclient * build: sync gclient vars to build windows job * build: output depshash for debugging * build: past sam was a silly goose * build: depshash logging * build: force lf endings for lock and DEPS * build: platform strings are hard * build: checkout on windows host * sup * no check * idk * sigh * ... * no double checkout * build: yolo some stuff * build: run gn-check for windows on linux hosts for speed * use container... * cry ? * build: e d * e d * no log * fix toolchain on windows cross check * build: use powershell to add mksnapshot_args * build: enable x86 and arm64 windows builds too * clean up * maybe not needed * build: keep action around for post step * build: configure git global on win * build: ia32 zip manifest * build: no patch depot_tools for tests * build: get arm64 windows closer to working * build: windows tar is ass * 32 bit on 32 bit * maybe bash * build: set up nodejs * correct windows sharding * fix some spec runner stuff * fix windows tests * overwrite -Force * sigh * screen res * wat * logs * ... more logs * line endings will be the death of me * remove 1080p force thing * vsctools + logging * disable some fullscreen tests on GHA * no progress * run all CI * install visual studio on arm64 * windows hax for non windows * maybe arm sdk * clean up depshash logic * build: use single check per platform * ensure clean args * fix loop * remove debug * update default build image sha for dispatch * plzzzz * one more try * arm64 vctools * sad * build: fix non-dispatch windows gn check * chore: debug datadog-ci location * chore: update build-tools for newer toolchain * chore: set path for datadog-ci * try this * chore: fixup gn check * fixup gn-check some more * fixup windows gn check * chore: fixup windows gn check * test: use cmd for Windows testing * fixup use cmd for testing on Windows * fixup windows GN check * fixup npm config arch for x86 * Can we set test files via powershell * fixup to set test files via powershell * fixup set test files via powershell * Don't check cross instance cache disk space on Windows * Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing (AGAIN) * use powershell if in powershell * fixup use powershell if in powershell * chore: remove no longer needed changes to depot_tools xref: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/5669094 and https://chromium-review.googlesource.com/c/chromium/src/+/5844046 * chore: try using 7zip on Windows to extract tarball * Revert "chore: try using 7zip on Windows to extract tarball" This reverts commit c7432b6a37857fd0746b8f1776fbd1103dba0b85. * test: debug failing tests on GHA windows * fix: ftbfs when including simdjson in Node.js (cherry picked from commit 48e44c40d61b7aa843a990d4e0c8dec676b4ce8f) * chore: try to track down Windows testing hang * use correct timeout * try this * see if this helps * try to figure out why node is running * shard tests to try to narrow down WOA lockup * try to narrow down problem test * Narrow down blocking test more * do we need a combo to repro * see if this cleans up the tests * fixup navigator.usb test * remove logging from problematic tests * Revert "shard tests to try to narrow down WOA lockup" This reverts commit a1806583769678491814cb8b008131c32be4e8fb. * remove logging * debug keyboard test * add timeout for Windows since arm64 sometimes hangs * see if this helps * put back original timeout * try to use screenCapture to get screenshots of what is going on on WOA * try using electron screencapture to debug WOA hang * chore: turn off privacy experience * run screenshot on both shards * fixup screencap * try to narrow down hanging spec * chore: cleanup servers left open * cleanup tests * Revert "try to narrow down hanging spec" This reverts commit a0f959f5382f4012a9919ac535d42c5333eb7d5f. * cleanup test debugging * fixup extensions spec * cleanup unneeded items * run wtf with 2 shards instead of 6 * Revert "run wtf with 2 shards instead of 6" This reverts commit ca2d282129ee42c535d80f9876d6fa0dc6c08344. * debug windows version on woa * dump more info * Get detailed CPU info * revert debugging * use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * try to track down which tests trigger hang * one or more of these combinations should hang * break up web contents spec to find hang * further break down api-web-contents to find hang * test: ensure all webContents are closed * test: fix require is not defined error * see if api-web-contents spec is now good * test: ensure all webContents are closed * Revert "try to track down which tests trigger hang" This reverts commit 07298d6ffeb4873ef7615a8ec3d1a6696e354ff4. * chore: use alternate location for windows toolchain * Reapply "try to track down which tests trigger hang" This reverts commit 0321f76d01069ef325339b6fe6ed39700eae2b6b. * try to narrow down problem test * fix TEST_SHARD env var * no, really fix TEST_SHARD env var * see if this fixes it * test: cleanup any remaining windows and webcontents * see if new cleanup helps * dont destroy webcontents for now * fixup dont destroy webcontents for now * Only cleanup right before process.exit * see if this fixes the hang * actually destroy webcontents * Revert "Reapply "try to track down which tests trigger hang"" This reverts commit cdee7de049ce6bb5f67bbcc64882c56aa2c73027. * see if this helps * Revert "see if this helps" This reverts commit 9a15a69cf7dbc456db7a61efa5b6870535bae993. * Is it all about the web contents? * it is all about the webcontents but which one? * Narrow down problem webcontents test * try to speed up git install on WOA * disable problematic test on WOA * remove debugging * remove debugging from choco installs * Revert "disable problematic test on WOA" This reverts commit e060fb0839b73d53cfde1f8acdca634f8e267937. * Revert "remove debugging" This reverts commit f18dd8b1a555f56bb06d0ea996a6eff31b424bf1. * run against all the tests in the failing shard * don't run visibility tests first * remove debugging * 3 is a magic number * Revert "3 is a magic number" This reverts commit 36b91ccf9f03a4b34230cd69ceca482f7d8428c1. * match what Appveyor runs exactly * Revert "match what Appveyor runs exactly" This reverts commit 7260dd432216c62696e4bc864930f17c857eabbe. * chore: sort files alphabetically * find out what spec is leaving stuff open * chore: Checkout PR HEAD commit instead of merge commit * try using app.exit instead of process.exit * test: cleanup BrowserWindows and webContents * Revert "chore: sort files alphabetically" This reverts commit d9e217ffb1522076e150fce9e43a31bf56716acb. * chore: use win32 to match process.platform Needed for build-tools to download from PRs * chore: cache yarn dir * fixup cache yarn * fixup use win32 to match process.platform * fixup use win32 to match process.platform * fixup cache yarn * Add debugging for WOA hang * Add debugging for failing keyboard lock test * Revert "Add debugging for WOA hang" This reverts commit 8df03d568d15a269e4026140d1158e8cdf551dec. * try using process.kill * add more debugging to keyboard.lock test * Revert "Add debugging for failing keyboard lock test" * remove debugging * test: disable keyboard.lock on Windows * test: disable fullscreen tests on Windows * test: only force test suite exit on WOA * fixup test: only force test suite exit on WOA * cleanup tests * extract yarn caching/install to action * try using bash to run windows tests * remove left over debugging * standardize on 'win' for Windows builds * use 'x86' for arch for manifest files * fixup try using bash to run windows tests * fixup use 'x86' for arch for manifest files * standardize on 'win' for Windows builds * fixup use 'x86' for arch for manifest files * fixup try using bash to run windows tests --------- Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org> Co-authored-by: Charles Kerr <charles@charleskerr.com>
2024-12-12 08:51:24 -08:00
afterEach(closeAllWindows);
it('can set the audio mute level (functions)', () => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false });
2020-03-20 13:28:31 -07:00
w.webContents.setAudioMuted(true);
expect(w.webContents.isAudioMuted()).to.be.true();
2020-03-20 13:28:31 -07:00
w.webContents.setAudioMuted(false);
expect(w.webContents.isAudioMuted()).to.be.false();
});
it('can set the audio mute level (functions)', () => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false });
2020-03-20 13:28:31 -07:00
w.webContents.audioMuted = true;
expect(w.webContents.audioMuted).to.be.true();
2020-03-20 13:28:31 -07:00
w.webContents.audioMuted = false;
expect(w.webContents.audioMuted).to.be.false();
});
});
describe('zoom api', () => {
const hostZoomMap: Record<string, number> = {
host1: 0.3,
host2: 0.7,
host3: 0.2
2020-03-20 13:28:31 -07:00
};
before(() => {
2020-03-20 13:28:31 -07:00
const protocol = session.defaultSession.protocol;
protocol.registerStringProtocol(standardScheme, (request, callback) => {
const response = `<script>
const {ipcRenderer} = require('electron')
ipcRenderer.send('set-zoom', window.location.hostname)
ipcRenderer.on(window.location.hostname + '-zoom-set', () => {
ipcRenderer.send(window.location.hostname + '-zoom-level')
})
2020-03-20 13:28:31 -07:00
</script>`;
callback({ data: response, mimeType: 'text/html' });
});
2020-03-20 13:28:31 -07:00
});
after(() => {
2020-03-20 13:28:31 -07:00
const protocol = session.defaultSession.protocol;
protocol.unregisterProtocol(standardScheme);
2020-03-20 13:28:31 -07:00
});
2020-03-20 13:28:31 -07:00
afterEach(closeAllWindows);
it('throws on an invalid zoomFactor', async () => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false });
await w.loadURL('about:blank');
expect(() => {
2020-03-20 13:28:31 -07:00
w.webContents.setZoomFactor(0.0);
}).to.throw(/'zoomFactor' must be a double greater than 0.0/);
expect(() => {
2020-03-20 13:28:31 -07:00
w.webContents.setZoomFactor(-2.0);
}).to.throw(/'zoomFactor' must be a double greater than 0.0/);
});
it('can set the correct zoom level (functions)', async () => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false });
try {
2020-03-20 13:28:31 -07:00
await w.loadURL('about:blank');
const zoomLevel = w.webContents.getZoomLevel();
expect(zoomLevel).to.eql(0.0);
w.webContents.setZoomLevel(0.5);
const newZoomLevel = w.webContents.getZoomLevel();
expect(newZoomLevel).to.eql(0.5);
} finally {
2020-03-20 13:28:31 -07:00
w.webContents.setZoomLevel(0);
}
2020-03-20 13:28:31 -07:00
});
it('can set the correct zoom level (properties)', async () => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false });
try {
2020-03-20 13:28:31 -07:00
await w.loadURL('about:blank');
const zoomLevel = w.webContents.zoomLevel;
expect(zoomLevel).to.eql(0.0);
w.webContents.zoomLevel = 0.5;
const newZoomLevel = w.webContents.zoomLevel;
expect(newZoomLevel).to.eql(0.5);
} finally {
2020-03-20 13:28:31 -07:00
w.webContents.zoomLevel = 0;
}
2020-03-20 13:28:31 -07:00
});
it('can set the correct zoom factor (functions)', async () => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false });
try {
2020-03-20 13:28:31 -07:00
await w.loadURL('about:blank');
const zoomFactor = w.webContents.getZoomFactor();
expect(zoomFactor).to.eql(1.0);
2020-03-20 13:28:31 -07:00
w.webContents.setZoomFactor(0.5);
const newZoomFactor = w.webContents.getZoomFactor();
expect(newZoomFactor).to.eql(0.5);
} finally {
2020-03-20 13:28:31 -07:00
w.webContents.setZoomFactor(1.0);
}
2020-03-20 13:28:31 -07:00
});
it('can set the correct zoom factor (properties)', async () => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false });
try {
2020-03-20 13:28:31 -07:00
await w.loadURL('about:blank');
const zoomFactor = w.webContents.zoomFactor;
expect(zoomFactor).to.eql(1.0);
2020-03-20 13:28:31 -07:00
w.webContents.zoomFactor = 0.5;
const newZoomFactor = w.webContents.zoomFactor;
expect(newZoomFactor).to.eql(0.5);
} finally {
2020-03-20 13:28:31 -07:00
w.webContents.zoomFactor = 1.0;
}
2020-03-20 13:28:31 -07:00
});
it('can persist zoom level across navigation', (done) => {
const w = new BrowserWindow({ show: false, webPreferences: { nodeIntegration: true, contextIsolation: false } });
2020-03-20 13:28:31 -07:00
let finalNavigation = false;
ipcMain.on('set-zoom', (e, host) => {
2020-03-20 13:28:31 -07:00
const zoomLevel = hostZoomMap[host];
if (!finalNavigation) w.webContents.zoomLevel = zoomLevel;
e.sender.send(`${host}-zoom-set`);
});
ipcMain.on('host1-zoom-level', (e) => {
try {
const zoomLevel = e.sender.getZoomLevel();
const expectedZoomLevel = hostZoomMap.host1;
expect(zoomLevel).to.equal(expectedZoomLevel);
if (finalNavigation) {
done();
} else {
w.loadURL(`${standardScheme}://host2`);
}
} catch (e) {
done(e);
}
2020-03-20 13:28:31 -07:00
});
ipcMain.once('host2-zoom-level', (e) => {
try {
const zoomLevel = e.sender.getZoomLevel();
const expectedZoomLevel = hostZoomMap.host2;
expect(zoomLevel).to.equal(expectedZoomLevel);
finalNavigation = true;
w.webContents.goBack();
} catch (e) {
done(e);
}
2020-03-20 13:28:31 -07:00
});
w.loadURL(`${standardScheme}://host1`);
2020-03-20 13:28:31 -07:00
});
it('can propagate zoom level across same session', async () => {
const w = new BrowserWindow({ show: false, webPreferences: { nodeIntegration: true } });
2020-03-20 13:28:31 -07:00
const w2 = new BrowserWindow({ show: false });
defer(() => {
2020-03-20 13:28:31 -07:00
w2.setClosable(true);
w2.close();
});
await w.loadURL(`${standardScheme}://host3`);
w.webContents.zoomLevel = hostZoomMap.host3;
await w2.loadURL(`${standardScheme}://host3`);
const zoomLevel1 = w.webContents.zoomLevel;
expect(zoomLevel1).to.equal(hostZoomMap.host3);
const zoomLevel2 = w2.webContents.zoomLevel;
expect(zoomLevel1).to.equal(zoomLevel2);
2020-03-20 13:28:31 -07:00
});
it('cannot propagate zoom level across different session', async () => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false, webPreferences: { nodeIntegration: true } });
const w2 = new BrowserWindow({
show: false,
webPreferences: {
partition: 'temp'
}
2020-03-20 13:28:31 -07:00
});
const protocol = w2.webContents.session.protocol;
protocol.registerStringProtocol(standardScheme, (request, callback) => {
2020-03-20 13:28:31 -07:00
callback('hello');
});
defer(() => {
w2.setClosable(true);
w2.close();
protocol.unregisterProtocol(standardScheme);
});
await w.loadURL(`${standardScheme}://host3`);
w.webContents.zoomLevel = hostZoomMap.host3;
await w2.loadURL(`${standardScheme}://host3`);
const zoomLevel1 = w.webContents.zoomLevel;
expect(zoomLevel1).to.equal(hostZoomMap.host3);
const zoomLevel2 = w2.webContents.zoomLevel;
expect(zoomLevel2).to.equal(0);
expect(zoomLevel1).to.not.equal(zoomLevel2);
2020-03-20 13:28:31 -07:00
});
it('can persist when it contains iframe', (done) => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false });
const server = http.createServer((req, res) => {
setTimeout(200).then(() => {
2020-03-20 13:28:31 -07:00
res.end();
});
2020-03-20 13:28:31 -07:00
});
build: use github actions for windows (#44136) * build: test windows runner * build: try build windows on windows? * build: take win/cross changes * build: use bash as default shell always * build: configure git for windows build tools * build: bash as default * build: configure windows correctly * build: use sha1sum * build: force windows cipd init and python3 existence * just pain * build: restore cache on windows * build: use build-tools gclient * build: sync gclient vars to build windows job * build: output depshash for debugging * build: past sam was a silly goose * build: depshash logging * build: force lf endings for lock and DEPS * build: platform strings are hard * build: checkout on windows host * sup * no check * idk * sigh * ... * no double checkout * build: yolo some stuff * build: run gn-check for windows on linux hosts for speed * use container... * cry ? * build: e d * e d * no log * fix toolchain on windows cross check * build: use powershell to add mksnapshot_args * build: enable x86 and arm64 windows builds too * clean up * maybe not needed * build: keep action around for post step * build: configure git global on win * build: ia32 zip manifest * build: no patch depot_tools for tests * build: get arm64 windows closer to working * build: windows tar is ass * 32 bit on 32 bit * maybe bash * build: set up nodejs * correct windows sharding * fix some spec runner stuff * fix windows tests * overwrite -Force * sigh * screen res * wat * logs * ... more logs * line endings will be the death of me * remove 1080p force thing * vsctools + logging * disable some fullscreen tests on GHA * no progress * run all CI * install visual studio on arm64 * windows hax for non windows * maybe arm sdk * clean up depshash logic * build: use single check per platform * ensure clean args * fix loop * remove debug * update default build image sha for dispatch * plzzzz * one more try * arm64 vctools * sad * build: fix non-dispatch windows gn check * chore: debug datadog-ci location * chore: update build-tools for newer toolchain * chore: set path for datadog-ci * try this * chore: fixup gn check * fixup gn-check some more * fixup windows gn check * chore: fixup windows gn check * test: use cmd for Windows testing * fixup use cmd for testing on Windows * fixup windows GN check * fixup npm config arch for x86 * Can we set test files via powershell * fixup to set test files via powershell * fixup set test files via powershell * Don't check cross instance cache disk space on Windows * Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing (AGAIN) * use powershell if in powershell * fixup use powershell if in powershell * chore: remove no longer needed changes to depot_tools xref: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/5669094 and https://chromium-review.googlesource.com/c/chromium/src/+/5844046 * chore: try using 7zip on Windows to extract tarball * Revert "chore: try using 7zip on Windows to extract tarball" This reverts commit c7432b6a37857fd0746b8f1776fbd1103dba0b85. * test: debug failing tests on GHA windows * fix: ftbfs when including simdjson in Node.js (cherry picked from commit 48e44c40d61b7aa843a990d4e0c8dec676b4ce8f) * chore: try to track down Windows testing hang * use correct timeout * try this * see if this helps * try to figure out why node is running * shard tests to try to narrow down WOA lockup * try to narrow down problem test * Narrow down blocking test more * do we need a combo to repro * see if this cleans up the tests * fixup navigator.usb test * remove logging from problematic tests * Revert "shard tests to try to narrow down WOA lockup" This reverts commit a1806583769678491814cb8b008131c32be4e8fb. * remove logging * debug keyboard test * add timeout for Windows since arm64 sometimes hangs * see if this helps * put back original timeout * try to use screenCapture to get screenshots of what is going on on WOA * try using electron screencapture to debug WOA hang * chore: turn off privacy experience * run screenshot on both shards * fixup screencap * try to narrow down hanging spec * chore: cleanup servers left open * cleanup tests * Revert "try to narrow down hanging spec" This reverts commit a0f959f5382f4012a9919ac535d42c5333eb7d5f. * cleanup test debugging * fixup extensions spec * cleanup unneeded items * run wtf with 2 shards instead of 6 * Revert "run wtf with 2 shards instead of 6" This reverts commit ca2d282129ee42c535d80f9876d6fa0dc6c08344. * debug windows version on woa * dump more info * Get detailed CPU info * revert debugging * use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * try to track down which tests trigger hang * one or more of these combinations should hang * break up web contents spec to find hang * further break down api-web-contents to find hang * test: ensure all webContents are closed * test: fix require is not defined error * see if api-web-contents spec is now good * test: ensure all webContents are closed * Revert "try to track down which tests trigger hang" This reverts commit 07298d6ffeb4873ef7615a8ec3d1a6696e354ff4. * chore: use alternate location for windows toolchain * Reapply "try to track down which tests trigger hang" This reverts commit 0321f76d01069ef325339b6fe6ed39700eae2b6b. * try to narrow down problem test * fix TEST_SHARD env var * no, really fix TEST_SHARD env var * see if this fixes it * test: cleanup any remaining windows and webcontents * see if new cleanup helps * dont destroy webcontents for now * fixup dont destroy webcontents for now * Only cleanup right before process.exit * see if this fixes the hang * actually destroy webcontents * Revert "Reapply "try to track down which tests trigger hang"" This reverts commit cdee7de049ce6bb5f67bbcc64882c56aa2c73027. * see if this helps * Revert "see if this helps" This reverts commit 9a15a69cf7dbc456db7a61efa5b6870535bae993. * Is it all about the web contents? * it is all about the webcontents but which one? * Narrow down problem webcontents test * try to speed up git install on WOA * disable problematic test on WOA * remove debugging * remove debugging from choco installs * Revert "disable problematic test on WOA" This reverts commit e060fb0839b73d53cfde1f8acdca634f8e267937. * Revert "remove debugging" This reverts commit f18dd8b1a555f56bb06d0ea996a6eff31b424bf1. * run against all the tests in the failing shard * don't run visibility tests first * remove debugging * 3 is a magic number * Revert "3 is a magic number" This reverts commit 36b91ccf9f03a4b34230cd69ceca482f7d8428c1. * match what Appveyor runs exactly * Revert "match what Appveyor runs exactly" This reverts commit 7260dd432216c62696e4bc864930f17c857eabbe. * chore: sort files alphabetically * find out what spec is leaving stuff open * chore: Checkout PR HEAD commit instead of merge commit * try using app.exit instead of process.exit * test: cleanup BrowserWindows and webContents * Revert "chore: sort files alphabetically" This reverts commit d9e217ffb1522076e150fce9e43a31bf56716acb. * chore: use win32 to match process.platform Needed for build-tools to download from PRs * chore: cache yarn dir * fixup cache yarn * fixup use win32 to match process.platform * fixup use win32 to match process.platform * fixup cache yarn * Add debugging for WOA hang * Add debugging for failing keyboard lock test * Revert "Add debugging for WOA hang" This reverts commit 8df03d568d15a269e4026140d1158e8cdf551dec. * try using process.kill * add more debugging to keyboard.lock test * Revert "Add debugging for failing keyboard lock test" * remove debugging * test: disable keyboard.lock on Windows * test: disable fullscreen tests on Windows * test: only force test suite exit on WOA * fixup test: only force test suite exit on WOA * cleanup tests * extract yarn caching/install to action * try using bash to run windows tests * remove left over debugging * standardize on 'win' for Windows builds * use 'x86' for arch for manifest files * fixup try using bash to run windows tests * fixup use 'x86' for arch for manifest files * standardize on 'win' for Windows builds * fixup use 'x86' for arch for manifest files * fixup try using bash to run windows tests --------- Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org> Co-authored-by: Charles Kerr <charles@charleskerr.com>
2024-12-12 08:51:24 -08:00
defer(() => {
server.close();
});
listen(server).then(({ url }) => {
2020-03-20 13:28:31 -07:00
const content = `<iframe src=${url}></iframe>`;
w.webContents.on('did-frame-finish-load', (e, isMainFrame) => {
if (!isMainFrame) {
try {
const zoomLevel = w.webContents.zoomLevel;
expect(zoomLevel).to.equal(2.0);
w.webContents.zoomLevel = 0;
done();
} catch (e) {
done(e);
}
}
2020-03-20 13:28:31 -07:00
});
w.webContents.on('dom-ready', () => {
2020-03-20 13:28:31 -07:00
w.webContents.zoomLevel = 2.0;
});
w.loadURL(`data:text/html,${content}`);
});
});
it('cannot propagate when used with webframe', async () => {
const w = new BrowserWindow({ show: false, webPreferences: { nodeIntegration: true, contextIsolation: false } });
const w2 = new BrowserWindow({ show: false });
const temporaryZoomSet = once(ipcMain, 'temporary-zoom-set');
2020-03-20 13:28:31 -07:00
w.loadFile(path.join(fixturesPath, 'pages', 'webframe-zoom.html'));
await temporaryZoomSet;
const finalZoomLevel = w.webContents.getZoomLevel();
await w2.loadFile(path.join(fixturesPath, 'pages', 'c.html'));
const zoomLevel1 = w.webContents.zoomLevel;
const zoomLevel2 = w2.webContents.zoomLevel;
w2.setClosable(true);
w2.close();
expect(zoomLevel1).to.equal(finalZoomLevel);
expect(zoomLevel2).to.equal(0);
expect(zoomLevel1).to.not.equal(zoomLevel2);
2020-03-20 13:28:31 -07:00
});
describe('with unique domains', () => {
2020-03-20 13:28:31 -07:00
let server: http.Server;
let serverUrl: string;
let crossSiteUrl: string;
before(async () => {
server = http.createServer((req, res) => {
setTimeout().then(() => res.end('hey'));
2020-03-20 13:28:31 -07:00
});
serverUrl = (await listen(server)).url;
crossSiteUrl = serverUrl.replace('127.0.0.1', 'localhost');
2020-03-20 13:28:31 -07:00
});
after(() => {
2020-03-20 13:28:31 -07:00
server.close();
});
it('cannot persist zoom level after navigation with webFrame', async () => {
const w = new BrowserWindow({ show: false, webPreferences: { nodeIntegration: true, contextIsolation: false } });
const source = `
const {ipcRenderer, webFrame} = require('electron')
webFrame.setZoomLevel(0.6)
ipcRenderer.send('zoom-level-set', webFrame.getZoomLevel())
2020-03-20 13:28:31 -07:00
`;
const zoomLevelPromise = once(ipcMain, 'zoom-level-set');
2020-03-20 13:28:31 -07:00
await w.loadURL(serverUrl);
await w.webContents.executeJavaScript(source);
let [, zoomLevel] = await zoomLevelPromise;
expect(zoomLevel).to.equal(0.6);
const loadPromise = once(w.webContents, 'did-finish-load');
2020-03-20 13:28:31 -07:00
await w.loadURL(crossSiteUrl);
await loadPromise;
zoomLevel = w.webContents.zoomLevel;
expect(zoomLevel).to.equal(0);
});
});
});
describe('webrtc ip policy api', () => {
2020-03-20 13:28:31 -07:00
afterEach(closeAllWindows);
it('can set and get webrtc ip policies', () => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false });
const policies = [
'default',
'default_public_interface_only',
'default_public_and_private_interfaces',
'disable_non_proxied_udp'
] as const;
for (const policy of policies) {
w.webContents.setWebRTCIPHandlingPolicy(policy);
2020-03-20 13:28:31 -07:00
expect(w.webContents.getWebRTCIPHandlingPolicy()).to.equal(policy);
}
2020-03-20 13:28:31 -07:00
});
});
describe('webrtc udp port range policy api', () => {
let w: BrowserWindow;
beforeEach(() => {
w = new BrowserWindow({ show: false });
});
afterEach(closeAllWindows);
it('check default webrtc udp port range is { min: 0, max: 0 }', () => {
const settings = w.webContents.getWebRTCUDPPortRange();
expect(settings).to.deep.equal({ min: 0, max: 0 });
});
it('can set and get webrtc udp port range policy with correct arguments', () => {
w.webContents.setWebRTCUDPPortRange({ min: 1, max: 65535 });
const settings = w.webContents.getWebRTCUDPPortRange();
expect(settings).to.deep.equal({ min: 1, max: 65535 });
});
it('can not set webrtc udp port range policy with invalid arguments', () => {
expect(() => {
w.webContents.setWebRTCUDPPortRange({ min: 0, max: 65535 });
}).to.throw("'min' and 'max' must be in the (0, 65535] range or [0, 0]");
expect(() => {
w.webContents.setWebRTCUDPPortRange({ min: 1, max: 65536 });
}).to.throw("'min' and 'max' must be in the (0, 65535] range or [0, 0]");
expect(() => {
w.webContents.setWebRTCUDPPortRange({ min: 60000, max: 56789 });
}).to.throw("'max' must be greater than or equal to 'min'");
});
it('can reset webrtc udp port range policy to default with { min: 0, max: 0 }', () => {
w.webContents.setWebRTCUDPPortRange({ min: 1, max: 65535 });
const settings = w.webContents.getWebRTCUDPPortRange();
expect(settings).to.deep.equal({ min: 1, max: 65535 });
w.webContents.setWebRTCUDPPortRange({ min: 0, max: 0 });
const defaultSetting = w.webContents.getWebRTCUDPPortRange();
expect(defaultSetting).to.deep.equal({ min: 0, max: 0 });
});
});
describe('opener api', () => {
afterEach(closeAllWindows);
it('can get opener with window.open()', async () => {
const w = new BrowserWindow({ show: false, webPreferences: { sandbox: true } });
await w.loadURL('about:blank');
const childPromise = once(w.webContents, 'did-create-window') as Promise<[BrowserWindow, Electron.DidCreateWindowDetails]>;
w.webContents.executeJavaScript('window.open("about:blank")', true);
const [childWindow] = await childPromise;
expect(childWindow.webContents.opener).to.equal(w.webContents.mainFrame);
});
it('has no opener when using "noopener"', async () => {
const w = new BrowserWindow({ show: false, webPreferences: { sandbox: true } });
await w.loadURL('about:blank');
const childPromise = once(w.webContents, 'did-create-window') as Promise<[BrowserWindow, Electron.DidCreateWindowDetails]>;
w.webContents.executeJavaScript('window.open("about:blank", undefined, "noopener")', true);
const [childWindow] = await childPromise;
expect(childWindow.webContents.opener).to.be.null();
});
it('can get opener with a[target=_blank][rel=opener]', async () => {
const w = new BrowserWindow({ show: false, webPreferences: { sandbox: true } });
await w.loadURL('about:blank');
const childPromise = once(w.webContents, 'did-create-window') as Promise<[BrowserWindow, Electron.DidCreateWindowDetails]>;
w.webContents.executeJavaScript(`(function() {
const a = document.createElement('a');
a.target = '_blank';
a.rel = 'opener';
a.href = 'about:blank';
a.click();
}())`, true);
const [childWindow] = await childPromise;
expect(childWindow.webContents.opener).to.equal(w.webContents.mainFrame);
});
it('has no opener with a[target=_blank][rel=noopener]', async () => {
const w = new BrowserWindow({ show: false, webPreferences: { sandbox: true } });
await w.loadURL('about:blank');
const childPromise = once(w.webContents, 'did-create-window') as Promise<[BrowserWindow, Electron.DidCreateWindowDetails]>;
w.webContents.executeJavaScript(`(function() {
const a = document.createElement('a');
a.target = '_blank';
a.rel = 'noopener';
a.href = 'about:blank';
a.click();
}())`, true);
const [childWindow] = await childPromise;
expect(childWindow.webContents.opener).to.be.null();
});
});
describe('focusedFrame api', () => {
const focusFrame = (frame: Electron.WebFrameMain) => {
// There has to be a better way to do this...
return frame.executeJavaScript(`(${() => {
const input = document.createElement('input');
document.body.appendChild(input);
input.onfocus = () => input.remove();
input.focus();
}})()`, true);
};
it('is null before a url is committed', () => {
const w = new BrowserWindow({ show: false });
expect(w.webContents.focusedFrame).to.be.null();
});
it('is set when main frame is focused', async () => {
const w = new BrowserWindow({ show: true });
await w.loadURL('about:blank');
w.webContents.focus();
await waitUntil(() => w.webContents.focusedFrame === w.webContents.mainFrame);
});
it('is set to child frame when focused', async () => {
const w = new BrowserWindow({ show: true });
await w.loadFile(path.join(fixturesPath, 'sub-frames', 'frame-with-frame-container.html'));
const childFrame = w.webContents.mainFrame.frames[0];
await focusFrame(childFrame);
await waitUntil(() => w.webContents.focusedFrame === childFrame);
});
});
describe('render view deleted events', () => {
2020-03-20 13:28:31 -07:00
let server: http.Server;
let serverUrl: string;
let crossSiteUrl: string;
before(async () => {
server = http.createServer((req, res) => {
const respond = () => {
if (req.url === '/redirect-cross-site') {
2020-03-20 13:28:31 -07:00
res.setHeader('Location', `${crossSiteUrl}/redirected`);
res.statusCode = 302;
res.end();
} else if (req.url === '/redirected') {
2020-03-20 13:28:31 -07:00
res.end('<html><script>window.localStorage</script></html>');
} else if (req.url === '/first-window-open') {
res.end(`<html><script>window.open('${serverUrl}/second-window-open', 'first child');</script></html>`);
} else if (req.url === '/second-window-open') {
res.end('<html><script>window.open(\'wrong://url\', \'second child\');</script></html>');
} else {
2020-03-20 13:28:31 -07:00
res.end();
}
2020-03-20 13:28:31 -07:00
};
setTimeout().then(respond);
2020-03-20 13:28:31 -07:00
});
serverUrl = (await listen(server)).url;
crossSiteUrl = serverUrl.replace('127.0.0.1', 'localhost');
2020-03-20 13:28:31 -07:00
});
after(() => {
2020-03-20 13:28:31 -07:00
server.close();
});
2020-03-20 13:28:31 -07:00
afterEach(closeAllWindows);
it('does not emit current-render-view-deleted when speculative RVHs are deleted', async () => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false });
let currentRenderViewDeletedEmitted = false;
const renderViewDeletedHandler = () => {
2020-03-20 13:28:31 -07:00
currentRenderViewDeletedEmitted = true;
};
w.webContents.on('current-render-view-deleted' as any, renderViewDeletedHandler);
w.webContents.on('did-finish-load', () => {
2020-03-20 13:28:31 -07:00
w.webContents.removeListener('current-render-view-deleted' as any, renderViewDeletedHandler);
w.close();
});
const destroyed = once(w.webContents, 'destroyed');
2020-03-20 13:28:31 -07:00
w.loadURL(`${serverUrl}/redirect-cross-site`);
await destroyed;
expect(currentRenderViewDeletedEmitted).to.be.false('current-render-view-deleted was emitted');
2020-03-20 13:28:31 -07:00
});
it('does not emit current-render-view-deleted when speculative RVHs are deleted', async () => {
const parentWindow = new BrowserWindow({ show: false });
let currentRenderViewDeletedEmitted = false;
let childWindow: BrowserWindow | null = null;
const destroyed = once(parentWindow.webContents, 'destroyed');
const renderViewDeletedHandler = () => {
currentRenderViewDeletedEmitted = true;
};
const childWindowCreated = new Promise<void>((resolve) => {
app.once('browser-window-created', (event, window) => {
childWindow = window;
window.webContents.on('current-render-view-deleted' as any, renderViewDeletedHandler);
resolve();
});
});
parentWindow.loadURL(`${serverUrl}/first-window-open`);
await childWindowCreated;
childWindow!.webContents.removeListener('current-render-view-deleted' as any, renderViewDeletedHandler);
parentWindow.close();
await destroyed;
expect(currentRenderViewDeletedEmitted).to.be.false('child window was destroyed');
});
it('emits current-render-view-deleted if the current RVHs are deleted', async () => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false });
let currentRenderViewDeletedEmitted = false;
w.webContents.on('current-render-view-deleted' as any, () => {
2020-03-20 13:28:31 -07:00
currentRenderViewDeletedEmitted = true;
});
w.webContents.on('did-finish-load', () => {
2020-03-20 13:28:31 -07:00
w.close();
});
const destroyed = once(w.webContents, 'destroyed');
2020-03-20 13:28:31 -07:00
w.loadURL(`${serverUrl}/redirect-cross-site`);
await destroyed;
expect(currentRenderViewDeletedEmitted).to.be.true('current-render-view-deleted wasn\'t emitted');
2020-03-20 13:28:31 -07:00
});
it('emits render-view-deleted if any RVHs are deleted', async () => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false });
let rvhDeletedCount = 0;
w.webContents.on('render-view-deleted' as any, () => {
2020-03-20 13:28:31 -07:00
rvhDeletedCount++;
});
w.webContents.on('did-finish-load', () => {
2020-03-20 13:28:31 -07:00
w.close();
});
const destroyed = once(w.webContents, 'destroyed');
2020-03-20 13:28:31 -07:00
w.loadURL(`${serverUrl}/redirect-cross-site`);
await destroyed;
const expectedRenderViewDeletedEventCount = 1;
expect(rvhDeletedCount).to.equal(expectedRenderViewDeletedEventCount, 'render-view-deleted wasn\'t emitted the expected nr. of times');
2020-03-20 13:28:31 -07:00
});
});
describe('setIgnoreMenuShortcuts(ignore)', () => {
2020-03-20 13:28:31 -07:00
afterEach(closeAllWindows);
it('does not throw', () => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false });
expect(() => {
2020-03-20 13:28:31 -07:00
w.webContents.setIgnoreMenuShortcuts(true);
w.webContents.setIgnoreMenuShortcuts(false);
}).to.not.throw();
});
});
const crashPrefs = [
{
nodeIntegration: true
},
{
sandbox: true
}
];
const nicePrefs = (o: any) => {
let s = '';
for (const key of Object.keys(o)) {
s += `${key}=${o[key]}, `;
}
return `(${s.slice(0, s.length - 2)})`;
};
for (const prefs of crashPrefs) {
describe(`crash with webPreferences ${nicePrefs(prefs)}`, () => {
let w: BrowserWindow;
beforeEach(async () => {
w = new BrowserWindow({ show: false, webPreferences: { nodeIntegration: true } });
await w.loadURL('about:blank');
});
afterEach(closeAllWindows);
it('isCrashed() is false by default', () => {
expect(w.webContents.isCrashed()).to.equal(false);
});
it('forcefullyCrashRenderer() crashes the process with reason=killed||crashed', async () => {
expect(w.webContents.isCrashed()).to.equal(false);
const crashEvent = once(w.webContents, 'render-process-gone') as Promise<[any, Electron.RenderProcessGoneDetails]>;
w.webContents.forcefullyCrashRenderer();
const [, details] = await crashEvent;
expect(details.reason === 'killed' || details.reason === 'crashed').to.equal(true, 'reason should be killed || crashed');
expect(w.webContents.isCrashed()).to.equal(true);
});
it('a crashed process is recoverable with reload()', async () => {
expect(w.webContents.isCrashed()).to.equal(false);
w.webContents.forcefullyCrashRenderer();
w.webContents.reload();
expect(w.webContents.isCrashed()).to.equal(false);
});
});
}
// Destroying webContents in its event listener is going to crash when
// Electron is built in Debug mode.
describe('destroy()', () => {
2020-03-20 13:28:31 -07:00
let server: http.Server;
let serverUrl: string;
before((done) => {
server = http.createServer((request, response) => {
switch (request.url) {
case '/net-error':
2020-03-20 13:28:31 -07:00
response.destroy();
break;
case '/200':
2020-03-20 13:28:31 -07:00
response.end();
break;
default:
done(new Error('unsupported endpoint'));
}
});
listen(server).then(({ url }) => {
serverUrl = url;
2020-03-20 13:28:31 -07:00
done();
});
});
after(() => {
2020-03-20 13:28:31 -07:00
server.close();
});
const events = [
{ name: 'did-start-loading', url: '/200' },
{ name: 'dom-ready', url: '/200' },
{ name: 'did-stop-loading', url: '/200' },
{ name: 'did-finish-load', url: '/200' },
// FIXME: Multiple Emit calls inside an observer assume that object
// will be alive till end of the observer. Synchronous `destroy` api
// violates this contract and crashes.
{ name: 'did-frame-finish-load', url: '/200' },
{ name: 'did-fail-load', url: '/net-error' }
2020-03-20 13:28:31 -07:00
];
for (const e of events) {
it(`should not crash when invoked synchronously inside ${e.name} handler`, async function () {
// This test is flaky on Windows CI and we don't know why, but the
// purpose of this test is to make sure Electron does not crash so it
// is fine to retry this test for a few times.
2020-03-20 13:28:31 -07:00
this.retries(3);
const contents = (webContents as typeof ElectronInternal.WebContents).create();
2020-03-20 13:28:31 -07:00
const originalEmit = contents.emit.bind(contents);
contents.emit = (...args) => { return originalEmit(...args); };
contents.once(e.name as any, () => contents.destroy());
const destroyed = once(contents, 'destroyed');
2020-03-20 13:28:31 -07:00
contents.loadURL(serverUrl + e.url);
await destroyed;
});
}
2020-03-20 13:28:31 -07:00
});
describe('did-change-theme-color event', () => {
2020-03-20 13:28:31 -07:00
afterEach(closeAllWindows);
it('is triggered with correct theme color', (done) => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: true });
let count = 0;
w.webContents.on('did-change-theme-color', (e, color) => {
try {
if (count === 0) {
count += 1;
expect(color).to.equal('#FFEEDD');
w.loadFile(path.join(fixturesPath, 'pages', 'base-page.html'));
} else if (count === 1) {
expect(color).to.be.null();
done();
}
} catch (e) {
done(e);
}
2020-03-20 13:28:31 -07:00
});
w.loadFile(path.join(fixturesPath, 'pages', 'theme-color.html'));
});
});
describe('console-message event', () => {
2020-03-20 13:28:31 -07:00
afterEach(closeAllWindows);
it('is triggered with correct log message', (done) => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: true });
w.webContents.on('console-message', (e) => {
// Don't just assert as Chromium might emit other logs that we should ignore.
if (e.message === 'a') {
2020-03-20 13:28:31 -07:00
done();
}
2020-03-20 13:28:31 -07:00
});
w.loadFile(path.join(fixturesPath, 'pages', 'a.html'));
});
});
describe('ipc-message event', () => {
2020-03-20 13:28:31 -07:00
afterEach(closeAllWindows);
it('emits when the renderer process sends an asynchronous message', async () => {
const w = new BrowserWindow({ show: true, webPreferences: { nodeIntegration: true, contextIsolation: false } });
2020-03-20 13:28:31 -07:00
await w.webContents.loadURL('about:blank');
w.webContents.executeJavaScript(`
require('electron').ipcRenderer.send('message', 'Hello World!')
2020-03-20 13:28:31 -07:00
`);
const [, channel, message] = await once(w.webContents, 'ipc-message');
2020-03-20 13:28:31 -07:00
expect(channel).to.equal('message');
expect(message).to.equal('Hello World!');
});
});
describe('ipc-message-sync event', () => {
2020-03-20 13:28:31 -07:00
afterEach(closeAllWindows);
it('emits when the renderer process sends a synchronous message', async () => {
const w = new BrowserWindow({ show: true, webPreferences: { nodeIntegration: true, contextIsolation: false } });
2020-03-20 13:28:31 -07:00
await w.webContents.loadURL('about:blank');
const promise: Promise<[string, string]> = new Promise(resolve => {
w.webContents.once('ipc-message-sync', (event, channel, arg) => {
2023-02-13 13:39:18 -08:00
event.returnValue = 'foobar';
2020-03-20 13:28:31 -07:00
resolve([channel, arg]);
});
});
const result = await w.webContents.executeJavaScript(`
require('electron').ipcRenderer.sendSync('message', 'Hello World!')
2020-03-20 13:28:31 -07:00
`);
2020-03-20 13:28:31 -07:00
const [channel, message] = await promise;
expect(channel).to.equal('message');
expect(message).to.equal('Hello World!');
expect(result).to.equal('foobar');
});
});
describe('referrer', () => {
2020-03-20 13:28:31 -07:00
afterEach(closeAllWindows);
it('propagates referrer information to new target=_blank windows', (done) => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false });
const server = http.createServer((req, res) => {
if (req.url === '/should_have_referrer') {
try {
expect(req.headers.referer).to.equal(`http://127.0.0.1:${(server.address() as AddressInfo).port}/`);
return done();
} catch (e) {
return done(e);
}
}
2020-03-20 13:28:31 -07:00
res.end('<a id="a" href="/should_have_referrer" target="_blank">link</a>');
});
build: use github actions for windows (#44136) * build: test windows runner * build: try build windows on windows? * build: take win/cross changes * build: use bash as default shell always * build: configure git for windows build tools * build: bash as default * build: configure windows correctly * build: use sha1sum * build: force windows cipd init and python3 existence * just pain * build: restore cache on windows * build: use build-tools gclient * build: sync gclient vars to build windows job * build: output depshash for debugging * build: past sam was a silly goose * build: depshash logging * build: force lf endings for lock and DEPS * build: platform strings are hard * build: checkout on windows host * sup * no check * idk * sigh * ... * no double checkout * build: yolo some stuff * build: run gn-check for windows on linux hosts for speed * use container... * cry ? * build: e d * e d * no log * fix toolchain on windows cross check * build: use powershell to add mksnapshot_args * build: enable x86 and arm64 windows builds too * clean up * maybe not needed * build: keep action around for post step * build: configure git global on win * build: ia32 zip manifest * build: no patch depot_tools for tests * build: get arm64 windows closer to working * build: windows tar is ass * 32 bit on 32 bit * maybe bash * build: set up nodejs * correct windows sharding * fix some spec runner stuff * fix windows tests * overwrite -Force * sigh * screen res * wat * logs * ... more logs * line endings will be the death of me * remove 1080p force thing * vsctools + logging * disable some fullscreen tests on GHA * no progress * run all CI * install visual studio on arm64 * windows hax for non windows * maybe arm sdk * clean up depshash logic * build: use single check per platform * ensure clean args * fix loop * remove debug * update default build image sha for dispatch * plzzzz * one more try * arm64 vctools * sad * build: fix non-dispatch windows gn check * chore: debug datadog-ci location * chore: update build-tools for newer toolchain * chore: set path for datadog-ci * try this * chore: fixup gn check * fixup gn-check some more * fixup windows gn check * chore: fixup windows gn check * test: use cmd for Windows testing * fixup use cmd for testing on Windows * fixup windows GN check * fixup npm config arch for x86 * Can we set test files via powershell * fixup to set test files via powershell * fixup set test files via powershell * Don't check cross instance cache disk space on Windows * Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing (AGAIN) * use powershell if in powershell * fixup use powershell if in powershell * chore: remove no longer needed changes to depot_tools xref: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/5669094 and https://chromium-review.googlesource.com/c/chromium/src/+/5844046 * chore: try using 7zip on Windows to extract tarball * Revert "chore: try using 7zip on Windows to extract tarball" This reverts commit c7432b6a37857fd0746b8f1776fbd1103dba0b85. * test: debug failing tests on GHA windows * fix: ftbfs when including simdjson in Node.js (cherry picked from commit 48e44c40d61b7aa843a990d4e0c8dec676b4ce8f) * chore: try to track down Windows testing hang * use correct timeout * try this * see if this helps * try to figure out why node is running * shard tests to try to narrow down WOA lockup * try to narrow down problem test * Narrow down blocking test more * do we need a combo to repro * see if this cleans up the tests * fixup navigator.usb test * remove logging from problematic tests * Revert "shard tests to try to narrow down WOA lockup" This reverts commit a1806583769678491814cb8b008131c32be4e8fb. * remove logging * debug keyboard test * add timeout for Windows since arm64 sometimes hangs * see if this helps * put back original timeout * try to use screenCapture to get screenshots of what is going on on WOA * try using electron screencapture to debug WOA hang * chore: turn off privacy experience * run screenshot on both shards * fixup screencap * try to narrow down hanging spec * chore: cleanup servers left open * cleanup tests * Revert "try to narrow down hanging spec" This reverts commit a0f959f5382f4012a9919ac535d42c5333eb7d5f. * cleanup test debugging * fixup extensions spec * cleanup unneeded items * run wtf with 2 shards instead of 6 * Revert "run wtf with 2 shards instead of 6" This reverts commit ca2d282129ee42c535d80f9876d6fa0dc6c08344. * debug windows version on woa * dump more info * Get detailed CPU info * revert debugging * use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * try to track down which tests trigger hang * one or more of these combinations should hang * break up web contents spec to find hang * further break down api-web-contents to find hang * test: ensure all webContents are closed * test: fix require is not defined error * see if api-web-contents spec is now good * test: ensure all webContents are closed * Revert "try to track down which tests trigger hang" This reverts commit 07298d6ffeb4873ef7615a8ec3d1a6696e354ff4. * chore: use alternate location for windows toolchain * Reapply "try to track down which tests trigger hang" This reverts commit 0321f76d01069ef325339b6fe6ed39700eae2b6b. * try to narrow down problem test * fix TEST_SHARD env var * no, really fix TEST_SHARD env var * see if this fixes it * test: cleanup any remaining windows and webcontents * see if new cleanup helps * dont destroy webcontents for now * fixup dont destroy webcontents for now * Only cleanup right before process.exit * see if this fixes the hang * actually destroy webcontents * Revert "Reapply "try to track down which tests trigger hang"" This reverts commit cdee7de049ce6bb5f67bbcc64882c56aa2c73027. * see if this helps * Revert "see if this helps" This reverts commit 9a15a69cf7dbc456db7a61efa5b6870535bae993. * Is it all about the web contents? * it is all about the webcontents but which one? * Narrow down problem webcontents test * try to speed up git install on WOA * disable problematic test on WOA * remove debugging * remove debugging from choco installs * Revert "disable problematic test on WOA" This reverts commit e060fb0839b73d53cfde1f8acdca634f8e267937. * Revert "remove debugging" This reverts commit f18dd8b1a555f56bb06d0ea996a6eff31b424bf1. * run against all the tests in the failing shard * don't run visibility tests first * remove debugging * 3 is a magic number * Revert "3 is a magic number" This reverts commit 36b91ccf9f03a4b34230cd69ceca482f7d8428c1. * match what Appveyor runs exactly * Revert "match what Appveyor runs exactly" This reverts commit 7260dd432216c62696e4bc864930f17c857eabbe. * chore: sort files alphabetically * find out what spec is leaving stuff open * chore: Checkout PR HEAD commit instead of merge commit * try using app.exit instead of process.exit * test: cleanup BrowserWindows and webContents * Revert "chore: sort files alphabetically" This reverts commit d9e217ffb1522076e150fce9e43a31bf56716acb. * chore: use win32 to match process.platform Needed for build-tools to download from PRs * chore: cache yarn dir * fixup cache yarn * fixup use win32 to match process.platform * fixup use win32 to match process.platform * fixup cache yarn * Add debugging for WOA hang * Add debugging for failing keyboard lock test * Revert "Add debugging for WOA hang" This reverts commit 8df03d568d15a269e4026140d1158e8cdf551dec. * try using process.kill * add more debugging to keyboard.lock test * Revert "Add debugging for failing keyboard lock test" * remove debugging * test: disable keyboard.lock on Windows * test: disable fullscreen tests on Windows * test: only force test suite exit on WOA * fixup test: only force test suite exit on WOA * cleanup tests * extract yarn caching/install to action * try using bash to run windows tests * remove left over debugging * standardize on 'win' for Windows builds * use 'x86' for arch for manifest files * fixup try using bash to run windows tests * fixup use 'x86' for arch for manifest files * standardize on 'win' for Windows builds * fixup use 'x86' for arch for manifest files * fixup try using bash to run windows tests --------- Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org> Co-authored-by: Charles Kerr <charles@charleskerr.com>
2024-12-12 08:51:24 -08:00
defer(() => {
server.close();
});
listen(server).then(({ url }) => {
w.webContents.once('did-finish-load', () => {
w.webContents.setWindowOpenHandler(details => {
expect(details.referrer.url).to.equal(url + '/');
expect(details.referrer.policy).to.equal('strict-origin-when-cross-origin');
return { action: 'allow' };
2020-03-20 13:28:31 -07:00
});
w.webContents.executeJavaScript('a.click()');
});
w.loadURL(url);
});
});
it('propagates referrer information to windows opened with window.open', (done) => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false });
const server = http.createServer((req, res) => {
if (req.url === '/should_have_referrer') {
try {
expect(req.headers.referer).to.equal(`http://127.0.0.1:${(server.address() as AddressInfo).port}/`);
return done();
} catch (e) {
return done(e);
}
}
2020-03-20 13:28:31 -07:00
res.end('');
});
build: use github actions for windows (#44136) * build: test windows runner * build: try build windows on windows? * build: take win/cross changes * build: use bash as default shell always * build: configure git for windows build tools * build: bash as default * build: configure windows correctly * build: use sha1sum * build: force windows cipd init and python3 existence * just pain * build: restore cache on windows * build: use build-tools gclient * build: sync gclient vars to build windows job * build: output depshash for debugging * build: past sam was a silly goose * build: depshash logging * build: force lf endings for lock and DEPS * build: platform strings are hard * build: checkout on windows host * sup * no check * idk * sigh * ... * no double checkout * build: yolo some stuff * build: run gn-check for windows on linux hosts for speed * use container... * cry ? * build: e d * e d * no log * fix toolchain on windows cross check * build: use powershell to add mksnapshot_args * build: enable x86 and arm64 windows builds too * clean up * maybe not needed * build: keep action around for post step * build: configure git global on win * build: ia32 zip manifest * build: no patch depot_tools for tests * build: get arm64 windows closer to working * build: windows tar is ass * 32 bit on 32 bit * maybe bash * build: set up nodejs * correct windows sharding * fix some spec runner stuff * fix windows tests * overwrite -Force * sigh * screen res * wat * logs * ... more logs * line endings will be the death of me * remove 1080p force thing * vsctools + logging * disable some fullscreen tests on GHA * no progress * run all CI * install visual studio on arm64 * windows hax for non windows * maybe arm sdk * clean up depshash logic * build: use single check per platform * ensure clean args * fix loop * remove debug * update default build image sha for dispatch * plzzzz * one more try * arm64 vctools * sad * build: fix non-dispatch windows gn check * chore: debug datadog-ci location * chore: update build-tools for newer toolchain * chore: set path for datadog-ci * try this * chore: fixup gn check * fixup gn-check some more * fixup windows gn check * chore: fixup windows gn check * test: use cmd for Windows testing * fixup use cmd for testing on Windows * fixup windows GN check * fixup npm config arch for x86 * Can we set test files via powershell * fixup to set test files via powershell * fixup set test files via powershell * Don't check cross instance cache disk space on Windows * Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing (AGAIN) * use powershell if in powershell * fixup use powershell if in powershell * chore: remove no longer needed changes to depot_tools xref: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/5669094 and https://chromium-review.googlesource.com/c/chromium/src/+/5844046 * chore: try using 7zip on Windows to extract tarball * Revert "chore: try using 7zip on Windows to extract tarball" This reverts commit c7432b6a37857fd0746b8f1776fbd1103dba0b85. * test: debug failing tests on GHA windows * fix: ftbfs when including simdjson in Node.js (cherry picked from commit 48e44c40d61b7aa843a990d4e0c8dec676b4ce8f) * chore: try to track down Windows testing hang * use correct timeout * try this * see if this helps * try to figure out why node is running * shard tests to try to narrow down WOA lockup * try to narrow down problem test * Narrow down blocking test more * do we need a combo to repro * see if this cleans up the tests * fixup navigator.usb test * remove logging from problematic tests * Revert "shard tests to try to narrow down WOA lockup" This reverts commit a1806583769678491814cb8b008131c32be4e8fb. * remove logging * debug keyboard test * add timeout for Windows since arm64 sometimes hangs * see if this helps * put back original timeout * try to use screenCapture to get screenshots of what is going on on WOA * try using electron screencapture to debug WOA hang * chore: turn off privacy experience * run screenshot on both shards * fixup screencap * try to narrow down hanging spec * chore: cleanup servers left open * cleanup tests * Revert "try to narrow down hanging spec" This reverts commit a0f959f5382f4012a9919ac535d42c5333eb7d5f. * cleanup test debugging * fixup extensions spec * cleanup unneeded items * run wtf with 2 shards instead of 6 * Revert "run wtf with 2 shards instead of 6" This reverts commit ca2d282129ee42c535d80f9876d6fa0dc6c08344. * debug windows version on woa * dump more info * Get detailed CPU info * revert debugging * use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * try to track down which tests trigger hang * one or more of these combinations should hang * break up web contents spec to find hang * further break down api-web-contents to find hang * test: ensure all webContents are closed * test: fix require is not defined error * see if api-web-contents spec is now good * test: ensure all webContents are closed * Revert "try to track down which tests trigger hang" This reverts commit 07298d6ffeb4873ef7615a8ec3d1a6696e354ff4. * chore: use alternate location for windows toolchain * Reapply "try to track down which tests trigger hang" This reverts commit 0321f76d01069ef325339b6fe6ed39700eae2b6b. * try to narrow down problem test * fix TEST_SHARD env var * no, really fix TEST_SHARD env var * see if this fixes it * test: cleanup any remaining windows and webcontents * see if new cleanup helps * dont destroy webcontents for now * fixup dont destroy webcontents for now * Only cleanup right before process.exit * see if this fixes the hang * actually destroy webcontents * Revert "Reapply "try to track down which tests trigger hang"" This reverts commit cdee7de049ce6bb5f67bbcc64882c56aa2c73027. * see if this helps * Revert "see if this helps" This reverts commit 9a15a69cf7dbc456db7a61efa5b6870535bae993. * Is it all about the web contents? * it is all about the webcontents but which one? * Narrow down problem webcontents test * try to speed up git install on WOA * disable problematic test on WOA * remove debugging * remove debugging from choco installs * Revert "disable problematic test on WOA" This reverts commit e060fb0839b73d53cfde1f8acdca634f8e267937. * Revert "remove debugging" This reverts commit f18dd8b1a555f56bb06d0ea996a6eff31b424bf1. * run against all the tests in the failing shard * don't run visibility tests first * remove debugging * 3 is a magic number * Revert "3 is a magic number" This reverts commit 36b91ccf9f03a4b34230cd69ceca482f7d8428c1. * match what Appveyor runs exactly * Revert "match what Appveyor runs exactly" This reverts commit 7260dd432216c62696e4bc864930f17c857eabbe. * chore: sort files alphabetically * find out what spec is leaving stuff open * chore: Checkout PR HEAD commit instead of merge commit * try using app.exit instead of process.exit * test: cleanup BrowserWindows and webContents * Revert "chore: sort files alphabetically" This reverts commit d9e217ffb1522076e150fce9e43a31bf56716acb. * chore: use win32 to match process.platform Needed for build-tools to download from PRs * chore: cache yarn dir * fixup cache yarn * fixup use win32 to match process.platform * fixup use win32 to match process.platform * fixup cache yarn * Add debugging for WOA hang * Add debugging for failing keyboard lock test * Revert "Add debugging for WOA hang" This reverts commit 8df03d568d15a269e4026140d1158e8cdf551dec. * try using process.kill * add more debugging to keyboard.lock test * Revert "Add debugging for failing keyboard lock test" * remove debugging * test: disable keyboard.lock on Windows * test: disable fullscreen tests on Windows * test: only force test suite exit on WOA * fixup test: only force test suite exit on WOA * cleanup tests * extract yarn caching/install to action * try using bash to run windows tests * remove left over debugging * standardize on 'win' for Windows builds * use 'x86' for arch for manifest files * fixup try using bash to run windows tests * fixup use 'x86' for arch for manifest files * standardize on 'win' for Windows builds * fixup use 'x86' for arch for manifest files * fixup try using bash to run windows tests --------- Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org> Co-authored-by: Charles Kerr <charles@charleskerr.com>
2024-12-12 08:51:24 -08:00
defer(() => {
server.close();
});
listen(server).then(({ url }) => {
w.webContents.once('did-finish-load', () => {
w.webContents.setWindowOpenHandler(details => {
expect(details.referrer.url).to.equal(url + '/');
expect(details.referrer.policy).to.equal('strict-origin-when-cross-origin');
return { action: 'allow' };
2020-03-20 13:28:31 -07:00
});
w.webContents.executeJavaScript('window.open(location.href + "should_have_referrer")');
});
w.loadURL(url);
});
});
});
describe('webframe messages in sandboxed contents', () => {
2020-03-20 13:28:31 -07:00
afterEach(closeAllWindows);
it('responds to executeJavaScript', async () => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false, webPreferences: { sandbox: true } });
await w.loadURL('about:blank');
const result = await w.webContents.executeJavaScript('37 + 5');
expect(result).to.equal(42);
});
});
describe('preload-error event', () => {
2020-03-20 13:28:31 -07:00
afterEach(closeAllWindows);
const generateSpecs = (description: string, sandbox: boolean) => {
describe(description, () => {
it('is triggered when unhandled exception is thrown', async () => {
2020-03-20 13:28:31 -07:00
const preload = path.join(fixturesPath, 'module', 'preload-error-exception.js');
const w = new BrowserWindow({
show: false,
webPreferences: {
sandbox,
preload
}
2020-03-20 13:28:31 -07:00
});
const promise = once(w.webContents, 'preload-error') as Promise<[any, string, Error]>;
2020-03-20 13:28:31 -07:00
w.loadURL('about:blank');
2020-03-20 13:28:31 -07:00
const [, preloadPath, error] = await promise;
expect(preloadPath).to.equal(preload);
expect(error.message).to.equal('Hello World!');
});
it('is triggered on syntax errors', async () => {
2020-03-20 13:28:31 -07:00
const preload = path.join(fixturesPath, 'module', 'preload-error-syntax.js');
const w = new BrowserWindow({
show: false,
webPreferences: {
sandbox,
preload
}
2020-03-20 13:28:31 -07:00
});
const promise = once(w.webContents, 'preload-error') as Promise<[any, string, Error]>;
2020-03-20 13:28:31 -07:00
w.loadURL('about:blank');
2020-03-20 13:28:31 -07:00
const [, preloadPath, error] = await promise;
expect(preloadPath).to.equal(preload);
expect(error.message).to.equal('foobar is not defined');
});
it('is triggered when preload script loading fails', async () => {
2020-03-20 13:28:31 -07:00
const preload = path.join(fixturesPath, 'module', 'preload-invalid.js');
const w = new BrowserWindow({
show: false,
webPreferences: {
sandbox,
preload
}
2020-03-20 13:28:31 -07:00
});
const promise = once(w.webContents, 'preload-error') as Promise<[any, string, Error]>;
2020-03-20 13:28:31 -07:00
w.loadURL('about:blank');
2020-03-20 13:28:31 -07:00
const [, preloadPath, error] = await promise;
expect(preloadPath).to.equal(preload);
expect(error.message).to.contain('preload-invalid.js');
});
});
};
2020-03-20 13:28:31 -07:00
generateSpecs('without sandbox', false);
generateSpecs('with sandbox', true);
});
describe('takeHeapSnapshot()', () => {
2020-03-20 13:28:31 -07:00
afterEach(closeAllWindows);
it('works with sandboxed renderers', async () => {
const w = new BrowserWindow({
show: false,
webPreferences: {
sandbox: true
}
2020-03-20 13:28:31 -07:00
});
2020-03-20 13:28:31 -07:00
await w.loadURL('about:blank');
2020-03-20 13:28:31 -07:00
const filePath = path.join(app.getPath('temp'), 'test.heapsnapshot');
const cleanup = () => {
try {
2020-03-20 13:28:31 -07:00
fs.unlinkSync(filePath);
} catch {
// ignore error
}
2020-03-20 13:28:31 -07:00
};
try {
2020-03-20 13:28:31 -07:00
await w.webContents.takeHeapSnapshot(filePath);
const stats = fs.statSync(filePath);
expect(stats.size).not.to.be.equal(0);
} finally {
2020-03-20 13:28:31 -07:00
cleanup();
}
2020-03-20 13:28:31 -07:00
});
it('fails with invalid file path', async () => {
const w = new BrowserWindow({
show: false,
webPreferences: {
sandbox: true
}
2020-03-20 13:28:31 -07:00
});
2020-03-20 13:28:31 -07:00
await w.loadURL('about:blank');
const badPath = path.join('i', 'am', 'a', 'super', 'bad', 'path');
const promise = w.webContents.takeHeapSnapshot(badPath);
return expect(promise).to.be.eventually.rejectedWith(Error, `Failed to take heap snapshot with invalid file path ${badPath}`);
});
it('fails with invalid render process', async () => {
const w = new BrowserWindow({
show: false,
webPreferences: {
sandbox: true
}
});
const filePath = path.join(app.getPath('temp'), 'test.heapsnapshot');
w.webContents.destroy();
const promise = w.webContents.takeHeapSnapshot(filePath);
return expect(promise).to.be.eventually.rejectedWith(Error, 'Failed to take heap snapshot with nonexistent render frame');
2020-03-20 13:28:31 -07:00
});
});
describe('setBackgroundThrottling()', () => {
2020-03-20 13:28:31 -07:00
afterEach(closeAllWindows);
it('does not crash when allowing', () => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false });
w.webContents.setBackgroundThrottling(true);
});
it('does not crash when called via BrowserWindow', () => {
const w = new BrowserWindow({ show: false });
w.setBackgroundThrottling(true);
2020-03-20 13:28:31 -07:00
});
it('does not crash when disallowing', () => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false, webPreferences: { backgroundThrottling: true } });
2020-03-20 13:28:31 -07:00
w.webContents.setBackgroundThrottling(false);
});
});
describe('getBackgroundThrottling()', () => {
afterEach(closeAllWindows);
it('works via getter', () => {
const w = new BrowserWindow({ show: false });
w.webContents.setBackgroundThrottling(false);
expect(w.webContents.getBackgroundThrottling()).to.equal(false);
w.webContents.setBackgroundThrottling(true);
expect(w.webContents.getBackgroundThrottling()).to.equal(true);
});
it('works via property', () => {
const w = new BrowserWindow({ show: false });
w.webContents.backgroundThrottling = false;
expect(w.webContents.backgroundThrottling).to.equal(false);
w.webContents.backgroundThrottling = true;
expect(w.webContents.backgroundThrottling).to.equal(true);
});
it('works via BrowserWindow', () => {
const w = new BrowserWindow({ show: false });
w.setBackgroundThrottling(false);
expect(w.getBackgroundThrottling()).to.equal(false);
w.setBackgroundThrottling(true);
expect(w.getBackgroundThrottling()).to.equal(true);
});
});
ifdescribe(features.isPrintingEnabled())('getPrintersAsync()', () => {
afterEach(closeAllWindows);
it('can get printer list', async () => {
const w = new BrowserWindow({ show: false, webPreferences: { sandbox: true } });
await w.loadURL('about:blank');
const printers = await w.webContents.getPrintersAsync();
expect(printers).to.be.an('array');
});
});
ifdescribe(features.isPrintingEnabled())('printToPDF()', () => {
let server: http.Server | null;
build(deps): bump the npm_and_yarn group across 2 directories with 3 updates (#43511) * build(deps): bump the npm_and_yarn group across 2 directories with 3 updates Bumps the npm_and_yarn group with 1 update in the / directory: [braces](https://github.com/micromatch/braces). Bumps the npm_and_yarn group with 3 updates in the /spec directory: [braces](https://github.com/micromatch/braces), [pdfjs-dist](https://github.com/mozilla/pdf.js) and [ws](https://github.com/websockets/ws). Updates `braces` from 3.0.2 to 3.0.3 - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) Updates `braces` from 3.0.2 to 3.0.3 - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) Updates `pdfjs-dist` from 2.16.105 to 4.2.67 - [Release notes](https://github.com/mozilla/pdf.js/releases) - [Commits](https://github.com/mozilla/pdf.js/compare/v2.16.105...v4.2.67) Updates `ws` from 7.5.9 to 7.5.10 - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/7.5.9...7.5.10) --- updated-dependencies: - dependency-name: braces dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: braces dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: pdfjs-dist dependency-type: direct:development dependency-group: npm_and_yarn - dependency-name: ws dependency-type: direct:development dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] <support@github.com> * chore: update api-web-contents-spec to us newer version of pdfjs-dist * test: create fixture to read PDF files for verification --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2024-09-09 11:49:43 +02:00
const readPDF = async (data: any) => {
const tmpDir = await fs.promises.mkdtemp(path.resolve(os.tmpdir(), 'e-spec-printtopdf-'));
const pdfPath = path.resolve(tmpDir, 'test.pdf');
await fs.promises.writeFile(pdfPath, data);
const pdfReaderPath = path.resolve(fixturesPath, 'api', 'pdf-reader.mjs');
const result = cp.spawn(process.execPath, [pdfReaderPath, pdfPath], {
stdio: 'pipe'
});
const stdout: Buffer[] = [];
const stderr: Buffer[] = [];
result.stdout.on('data', (chunk) => stdout.push(chunk));
result.stderr.on('data', (chunk) => stderr.push(chunk));
const [code, signal] = await new Promise<[number | null, NodeJS.Signals | null]>((resolve) => {
result.on('close', (code, signal) => {
resolve([code, signal]);
});
});
await fs.promises.rm(tmpDir, { force: true, recursive: true });
if (code !== 0) {
const errMsg = Buffer.concat(stderr).toString().trim();
console.error(`Error parsing PDF file, exit code was ${code}; signal was ${signal}, error: ${errMsg}`);
}
return JSON.parse(Buffer.concat(stdout).toString().trim());
};
2020-03-20 13:28:31 -07:00
let w: BrowserWindow;
const containsText = (items: any[], text: RegExp) => {
return items.some(({ str }: { str: string }) => str.match(text));
};
2022-10-12 07:15:49 -07:00
beforeEach(() => {
w = new BrowserWindow({
show: false,
webPreferences: {
sandbox: true
}
});
2020-03-20 13:28:31 -07:00
});
afterEach(() => {
closeAllWindows();
if (server) {
server.close();
}
});
it('rejects on incorrectly typed parameters', async () => {
const badTypes = {
landscape: [],
displayHeaderFooter: '123',
printBackground: 2,
scale: 'not-a-number',
pageSize: 'IAmAPageSize',
margins: 'terrible',
pageRanges: { oops: 'im-not-the-right-key' },
headerTemplate: [1, 2, 3],
footerTemplate: [4, 5, 6],
preferCSSPageSize: 'no',
generateTaggedPDF: 'wtf',
generateDocumentOutline: [7, 8, 9]
2020-03-20 13:28:31 -07:00
};
2022-10-12 07:15:49 -07:00
await w.loadURL('data:text/html,<h1>Hello, World!</h1>');
// These will hard crash in Chromium unless we type-check
for (const [key, value] of Object.entries(badTypes)) {
2020-03-20 13:28:31 -07:00
const param = { [key]: value };
await expect(w.webContents.printToPDF(param)).to.eventually.be.rejected();
}
2020-03-20 13:28:31 -07:00
});
it('rejects when margins exceed physical page size', async () => {
await w.loadURL('data:text/html,<h1>Hello, World!</h1>');
await expect(w.webContents.printToPDF({
pageSize: 'Letter',
margins: {
top: 100,
bottom: 100,
left: 5,
right: 5
}
})).to.eventually.be.rejectedWith('margins must be less than or equal to pageSize');
});
chore: bump chromium to 6d130075d378a64187360ba4e7820 (master) (#24256) * chore: bump chromium in DEPS to 7fb9778894d73378bff51087ce869ea5aa6e5d5d * chore: bump chromium in DEPS to 83da426e53d423f0530fc23433b6d2c4d0548442 * update patches * remove chromeos-only TtsControllerDelegate Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2255314 * SharedUserScriptMaster -> SharedUserScriptManager Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2258357 * avoid deprecated DISALLOW_COPY_AND_ASSIGN https://groups.google.com/a/chromium.org/forum/#!msg/cxx/qwH2hxaEjac/TUKq6eqfCwAJ * chore: bump chromium in DEPS to b2eaf9ff4e6b03267bf279583ea20ceb2b25e9d0 * update patches * rename GetHighContrastColorScheme -> GetPlatformHighContrastColorScheme Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2250224 * remove vulkan info collection Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2252818 * add max_xcode_version build var Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2264867 * add missing headers * chore: bump chromium in DEPS to cded18ca1138f7e8efc904f077ddcca34f0135cf * update patches * add empty floc blocklist to BrowserProcessImpl Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2240873 * chore: bump chromium in DEPS to f06602226cd80bf677b2ce013a94a2fb7f6ac58d * chore: bump chromium in DEPS to 747aa4bfc74fc6cf7f08ee72624cd69ae41ae28d * chore: bump chromium in DEPS to 31c0105e50fcc4e94de33e5c8602c755ace4a32b * chore: update patches * Reland "[base] Stop including check.h, notreached.h, etc. in logging.h" https://chromium-review.googlesource.com/c/chromium/src/+/2264297 * X11 and Ozone: make sure gfx::AcceleratedWidget to be uint32_t https://chromium-review.googlesource.com/c/chromium/src/+/2260554 * Move zygote from //services/service_manager back to //content https://chromium-review.googlesource.com/c/chromium/src/+/2252466 * chore: update v8 patches * [XProto] Remove usage of Shape extension https://chromium-review.googlesource.com/c/chromium/src/+/2262113 * fixup! add empty floc blocklist to BrowserProcessImpl * Require macOS 10.15.1 sdk https://chromium-review.googlesource.com/c/chromium/src/+/2238504 * Use newer Xcode version 11.5.0 * update src cache * chore: bump chromium in DEPS to 60a9883e35db3f6f91916f0878e88e1849c17b11 * chore: update patches * Reland "Reland "New toolchain for Windows 10 19041 SDK"" https://chromium-review.googlesource.com/c/chromium/src/+/2255527 * update patches * Convert raw NonClientFrameViews to unique_ptrs https://chromium-review.googlesource.com/c/chromium/src/+/2240417 * [printing] Move PrintHostMsg_DidPreviewDocument_Params to print.mojom https://chromium-review.googlesource.com/c/chromium/src/+/2257035 * chore: bump chromium in DEPS to 12c233c2a85bfa28fb279f390121ba681e52a71b * chore: update patches * Removing oppressive language for the directory chrome/browser/apps https://chromium-review.googlesource.com/c/chromium/src/+/2269822 * Inclusion: rename SpellcheckLanguageBlacklistPolicyHandler https://chromium-review.googlesource.com/c/chromium/src/+/2267646 * Clean up duplicate WebContents "is fullscreen" functions https://chromium-review.googlesource.com/c/chromium/src/+/2275148 * Adds icon loading service with sandbox for Windows. https://chromium-review.googlesource.com/c/chromium/src/+/1987273 * No more Vulkan info collection for UMA on Windows https://chromium-review.googlesource.com/c/chromium/src/+/2252818 * fix lint * chore: update buildflag conditions * chore: bump chromium in DEPS to a837d4c4230ace4f10b2768728f4044b7995dfa5 * update hunspell files * chore: update patches * Make content::FileSelectListener a RefCounted https://chromium-review.googlesource.com/c/chromium/src/+/2275338 * fix build failures on MAS * update patches * fixup! Reland "[base] Stop including check.h, notreached.h, etc. in logging.h" * fix build on windows * Check for GDI exhaustion if window creation fails https://chromium-review.googlesource.com/c/chromium/src/+/2244124 * chore: bump chromium in DEPS to 2c9b2a73be4ef9ec22d8b6da8e174cb80753f125 * chore: update patches * Network Service: Move DeleteCookiePredicate into public folder https://chromium-review.googlesource.com/c/chromium/src/+/2264186 * chore: bump chromium in DEPS to fa2606299bcc02c362528d26b5dcf8c8a0db0735 * chore: bump chromium in DEPS to d9c235d1227204dbae3708daae851573a3566b94 * chore: bump chromium in DEPS to 2f82c284243c035f49a747fd1ead6c44b4b31093 * chore: update patches * Move creating the LayerTreeSettings into blink. https://chromium-review.googlesource.com/c/chromium/src/+/2267720 * chore: bump chromium in DEPS to 914112f1d9af9e4974059dc403da62699a55550f * update patches * chore: bump chromium in DEPS to e0bc1ffae6393fc543a2da94c88167df75859b36 * refactor: match upstream print preview handling (#24452) * update patches * chore: bump chromium in DEPS to 0881423156abe084164b51ab58ce93a8bd380524 * update patches * update patches * give a type to pendingPromise * chore: bump chromium in DEPS to 11a8c1534b16d130075d378a64187360ba4e7820 * update patches * 2272609: Move //services/service_manager/sandbox to //sandbox/policy. https://chromium-review.googlesource.com/c/chromium/src/+/2272609 * update patches * fixup! 2272609: Move //services/service_manager/sandbox to //sandbox/policy. * fixup! 2272609: Move //services/service_manager/sandbox to //sandbox/policy. * 2264511: Cookies: Update SetCanonicalCookie to return CookieAccessResult https://chromium-review.googlesource.com/c/chromium/src/+/2264511 * chore: fix setAlwaysOnTop test The window must be visible for state to be updated properly. * Revert "Migrate modules/desktop_capture and modules/video_capture to webrtc::Mutex." https://webrtc-review.googlesource.com/c/src/+/179080 * update patches Co-authored-by: Andy Locascio <andy@slack-corp.com> Co-authored-by: deepak1556 <hop2deep@gmail.com> Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com> Co-authored-by: John Kleinschmidt <jkleinsc@github.com> Co-authored-by: Electron Bot <anonymous@electronjs.org> Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> Co-authored-by: Jeremy Rose <nornagon@nornagon.net> Co-authored-by: Samuel Attard <marshallofsound@electronjs.org>
2020-07-13 18:13:34 -07:00
it('does not crash when called multiple times in parallel', async () => {
2022-10-12 07:15:49 -07:00
await w.loadURL('data:text/html,<h1>Hello, World!</h1>');
2020-03-20 13:28:31 -07:00
const promises = [];
chore: bump chromium to 6d130075d378a64187360ba4e7820 (master) (#24256) * chore: bump chromium in DEPS to 7fb9778894d73378bff51087ce869ea5aa6e5d5d * chore: bump chromium in DEPS to 83da426e53d423f0530fc23433b6d2c4d0548442 * update patches * remove chromeos-only TtsControllerDelegate Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2255314 * SharedUserScriptMaster -> SharedUserScriptManager Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2258357 * avoid deprecated DISALLOW_COPY_AND_ASSIGN https://groups.google.com/a/chromium.org/forum/#!msg/cxx/qwH2hxaEjac/TUKq6eqfCwAJ * chore: bump chromium in DEPS to b2eaf9ff4e6b03267bf279583ea20ceb2b25e9d0 * update patches * rename GetHighContrastColorScheme -> GetPlatformHighContrastColorScheme Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2250224 * remove vulkan info collection Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2252818 * add max_xcode_version build var Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2264867 * add missing headers * chore: bump chromium in DEPS to cded18ca1138f7e8efc904f077ddcca34f0135cf * update patches * add empty floc blocklist to BrowserProcessImpl Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2240873 * chore: bump chromium in DEPS to f06602226cd80bf677b2ce013a94a2fb7f6ac58d * chore: bump chromium in DEPS to 747aa4bfc74fc6cf7f08ee72624cd69ae41ae28d * chore: bump chromium in DEPS to 31c0105e50fcc4e94de33e5c8602c755ace4a32b * chore: update patches * Reland "[base] Stop including check.h, notreached.h, etc. in logging.h" https://chromium-review.googlesource.com/c/chromium/src/+/2264297 * X11 and Ozone: make sure gfx::AcceleratedWidget to be uint32_t https://chromium-review.googlesource.com/c/chromium/src/+/2260554 * Move zygote from //services/service_manager back to //content https://chromium-review.googlesource.com/c/chromium/src/+/2252466 * chore: update v8 patches * [XProto] Remove usage of Shape extension https://chromium-review.googlesource.com/c/chromium/src/+/2262113 * fixup! add empty floc blocklist to BrowserProcessImpl * Require macOS 10.15.1 sdk https://chromium-review.googlesource.com/c/chromium/src/+/2238504 * Use newer Xcode version 11.5.0 * update src cache * chore: bump chromium in DEPS to 60a9883e35db3f6f91916f0878e88e1849c17b11 * chore: update patches * Reland "Reland "New toolchain for Windows 10 19041 SDK"" https://chromium-review.googlesource.com/c/chromium/src/+/2255527 * update patches * Convert raw NonClientFrameViews to unique_ptrs https://chromium-review.googlesource.com/c/chromium/src/+/2240417 * [printing] Move PrintHostMsg_DidPreviewDocument_Params to print.mojom https://chromium-review.googlesource.com/c/chromium/src/+/2257035 * chore: bump chromium in DEPS to 12c233c2a85bfa28fb279f390121ba681e52a71b * chore: update patches * Removing oppressive language for the directory chrome/browser/apps https://chromium-review.googlesource.com/c/chromium/src/+/2269822 * Inclusion: rename SpellcheckLanguageBlacklistPolicyHandler https://chromium-review.googlesource.com/c/chromium/src/+/2267646 * Clean up duplicate WebContents "is fullscreen" functions https://chromium-review.googlesource.com/c/chromium/src/+/2275148 * Adds icon loading service with sandbox for Windows. https://chromium-review.googlesource.com/c/chromium/src/+/1987273 * No more Vulkan info collection for UMA on Windows https://chromium-review.googlesource.com/c/chromium/src/+/2252818 * fix lint * chore: update buildflag conditions * chore: bump chromium in DEPS to a837d4c4230ace4f10b2768728f4044b7995dfa5 * update hunspell files * chore: update patches * Make content::FileSelectListener a RefCounted https://chromium-review.googlesource.com/c/chromium/src/+/2275338 * fix build failures on MAS * update patches * fixup! Reland "[base] Stop including check.h, notreached.h, etc. in logging.h" * fix build on windows * Check for GDI exhaustion if window creation fails https://chromium-review.googlesource.com/c/chromium/src/+/2244124 * chore: bump chromium in DEPS to 2c9b2a73be4ef9ec22d8b6da8e174cb80753f125 * chore: update patches * Network Service: Move DeleteCookiePredicate into public folder https://chromium-review.googlesource.com/c/chromium/src/+/2264186 * chore: bump chromium in DEPS to fa2606299bcc02c362528d26b5dcf8c8a0db0735 * chore: bump chromium in DEPS to d9c235d1227204dbae3708daae851573a3566b94 * chore: bump chromium in DEPS to 2f82c284243c035f49a747fd1ead6c44b4b31093 * chore: update patches * Move creating the LayerTreeSettings into blink. https://chromium-review.googlesource.com/c/chromium/src/+/2267720 * chore: bump chromium in DEPS to 914112f1d9af9e4974059dc403da62699a55550f * update patches * chore: bump chromium in DEPS to e0bc1ffae6393fc543a2da94c88167df75859b36 * refactor: match upstream print preview handling (#24452) * update patches * chore: bump chromium in DEPS to 0881423156abe084164b51ab58ce93a8bd380524 * update patches * update patches * give a type to pendingPromise * chore: bump chromium in DEPS to 11a8c1534b16d130075d378a64187360ba4e7820 * update patches * 2272609: Move //services/service_manager/sandbox to //sandbox/policy. https://chromium-review.googlesource.com/c/chromium/src/+/2272609 * update patches * fixup! 2272609: Move //services/service_manager/sandbox to //sandbox/policy. * fixup! 2272609: Move //services/service_manager/sandbox to //sandbox/policy. * 2264511: Cookies: Update SetCanonicalCookie to return CookieAccessResult https://chromium-review.googlesource.com/c/chromium/src/+/2264511 * chore: fix setAlwaysOnTop test The window must be visible for state to be updated properly. * Revert "Migrate modules/desktop_capture and modules/video_capture to webrtc::Mutex." https://webrtc-review.googlesource.com/c/src/+/179080 * update patches Co-authored-by: Andy Locascio <andy@slack-corp.com> Co-authored-by: deepak1556 <hop2deep@gmail.com> Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com> Co-authored-by: John Kleinschmidt <jkleinsc@github.com> Co-authored-by: Electron Bot <anonymous@electronjs.org> Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> Co-authored-by: Jeremy Rose <nornagon@nornagon.net> Co-authored-by: Samuel Attard <marshallofsound@electronjs.org>
2020-07-13 18:13:34 -07:00
for (let i = 0; i < 3; i++) {
2020-03-20 13:28:31 -07:00
promises.push(w.webContents.printToPDF({}));
}
chore: bump chromium to 6d130075d378a64187360ba4e7820 (master) (#24256) * chore: bump chromium in DEPS to 7fb9778894d73378bff51087ce869ea5aa6e5d5d * chore: bump chromium in DEPS to 83da426e53d423f0530fc23433b6d2c4d0548442 * update patches * remove chromeos-only TtsControllerDelegate Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2255314 * SharedUserScriptMaster -> SharedUserScriptManager Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2258357 * avoid deprecated DISALLOW_COPY_AND_ASSIGN https://groups.google.com/a/chromium.org/forum/#!msg/cxx/qwH2hxaEjac/TUKq6eqfCwAJ * chore: bump chromium in DEPS to b2eaf9ff4e6b03267bf279583ea20ceb2b25e9d0 * update patches * rename GetHighContrastColorScheme -> GetPlatformHighContrastColorScheme Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2250224 * remove vulkan info collection Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2252818 * add max_xcode_version build var Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2264867 * add missing headers * chore: bump chromium in DEPS to cded18ca1138f7e8efc904f077ddcca34f0135cf * update patches * add empty floc blocklist to BrowserProcessImpl Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2240873 * chore: bump chromium in DEPS to f06602226cd80bf677b2ce013a94a2fb7f6ac58d * chore: bump chromium in DEPS to 747aa4bfc74fc6cf7f08ee72624cd69ae41ae28d * chore: bump chromium in DEPS to 31c0105e50fcc4e94de33e5c8602c755ace4a32b * chore: update patches * Reland "[base] Stop including check.h, notreached.h, etc. in logging.h" https://chromium-review.googlesource.com/c/chromium/src/+/2264297 * X11 and Ozone: make sure gfx::AcceleratedWidget to be uint32_t https://chromium-review.googlesource.com/c/chromium/src/+/2260554 * Move zygote from //services/service_manager back to //content https://chromium-review.googlesource.com/c/chromium/src/+/2252466 * chore: update v8 patches * [XProto] Remove usage of Shape extension https://chromium-review.googlesource.com/c/chromium/src/+/2262113 * fixup! add empty floc blocklist to BrowserProcessImpl * Require macOS 10.15.1 sdk https://chromium-review.googlesource.com/c/chromium/src/+/2238504 * Use newer Xcode version 11.5.0 * update src cache * chore: bump chromium in DEPS to 60a9883e35db3f6f91916f0878e88e1849c17b11 * chore: update patches * Reland "Reland "New toolchain for Windows 10 19041 SDK"" https://chromium-review.googlesource.com/c/chromium/src/+/2255527 * update patches * Convert raw NonClientFrameViews to unique_ptrs https://chromium-review.googlesource.com/c/chromium/src/+/2240417 * [printing] Move PrintHostMsg_DidPreviewDocument_Params to print.mojom https://chromium-review.googlesource.com/c/chromium/src/+/2257035 * chore: bump chromium in DEPS to 12c233c2a85bfa28fb279f390121ba681e52a71b * chore: update patches * Removing oppressive language for the directory chrome/browser/apps https://chromium-review.googlesource.com/c/chromium/src/+/2269822 * Inclusion: rename SpellcheckLanguageBlacklistPolicyHandler https://chromium-review.googlesource.com/c/chromium/src/+/2267646 * Clean up duplicate WebContents "is fullscreen" functions https://chromium-review.googlesource.com/c/chromium/src/+/2275148 * Adds icon loading service with sandbox for Windows. https://chromium-review.googlesource.com/c/chromium/src/+/1987273 * No more Vulkan info collection for UMA on Windows https://chromium-review.googlesource.com/c/chromium/src/+/2252818 * fix lint * chore: update buildflag conditions * chore: bump chromium in DEPS to a837d4c4230ace4f10b2768728f4044b7995dfa5 * update hunspell files * chore: update patches * Make content::FileSelectListener a RefCounted https://chromium-review.googlesource.com/c/chromium/src/+/2275338 * fix build failures on MAS * update patches * fixup! Reland "[base] Stop including check.h, notreached.h, etc. in logging.h" * fix build on windows * Check for GDI exhaustion if window creation fails https://chromium-review.googlesource.com/c/chromium/src/+/2244124 * chore: bump chromium in DEPS to 2c9b2a73be4ef9ec22d8b6da8e174cb80753f125 * chore: update patches * Network Service: Move DeleteCookiePredicate into public folder https://chromium-review.googlesource.com/c/chromium/src/+/2264186 * chore: bump chromium in DEPS to fa2606299bcc02c362528d26b5dcf8c8a0db0735 * chore: bump chromium in DEPS to d9c235d1227204dbae3708daae851573a3566b94 * chore: bump chromium in DEPS to 2f82c284243c035f49a747fd1ead6c44b4b31093 * chore: update patches * Move creating the LayerTreeSettings into blink. https://chromium-review.googlesource.com/c/chromium/src/+/2267720 * chore: bump chromium in DEPS to 914112f1d9af9e4974059dc403da62699a55550f * update patches * chore: bump chromium in DEPS to e0bc1ffae6393fc543a2da94c88167df75859b36 * refactor: match upstream print preview handling (#24452) * update patches * chore: bump chromium in DEPS to 0881423156abe084164b51ab58ce93a8bd380524 * update patches * update patches * give a type to pendingPromise * chore: bump chromium in DEPS to 11a8c1534b16d130075d378a64187360ba4e7820 * update patches * 2272609: Move //services/service_manager/sandbox to //sandbox/policy. https://chromium-review.googlesource.com/c/chromium/src/+/2272609 * update patches * fixup! 2272609: Move //services/service_manager/sandbox to //sandbox/policy. * fixup! 2272609: Move //services/service_manager/sandbox to //sandbox/policy. * 2264511: Cookies: Update SetCanonicalCookie to return CookieAccessResult https://chromium-review.googlesource.com/c/chromium/src/+/2264511 * chore: fix setAlwaysOnTop test The window must be visible for state to be updated properly. * Revert "Migrate modules/desktop_capture and modules/video_capture to webrtc::Mutex." https://webrtc-review.googlesource.com/c/src/+/179080 * update patches Co-authored-by: Andy Locascio <andy@slack-corp.com> Co-authored-by: deepak1556 <hop2deep@gmail.com> Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com> Co-authored-by: John Kleinschmidt <jkleinsc@github.com> Co-authored-by: Electron Bot <anonymous@electronjs.org> Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> Co-authored-by: Jeremy Rose <nornagon@nornagon.net> Co-authored-by: Samuel Attard <marshallofsound@electronjs.org>
2020-07-13 18:13:34 -07:00
2020-03-20 13:28:31 -07:00
const results = await Promise.all(promises);
for (const data of results) {
2020-03-20 13:28:31 -07:00
expect(data).to.be.an.instanceof(Buffer).that.is.not.empty();
}
2020-03-20 13:28:31 -07:00
});
chore: bump chromium to 6d130075d378a64187360ba4e7820 (master) (#24256) * chore: bump chromium in DEPS to 7fb9778894d73378bff51087ce869ea5aa6e5d5d * chore: bump chromium in DEPS to 83da426e53d423f0530fc23433b6d2c4d0548442 * update patches * remove chromeos-only TtsControllerDelegate Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2255314 * SharedUserScriptMaster -> SharedUserScriptManager Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2258357 * avoid deprecated DISALLOW_COPY_AND_ASSIGN https://groups.google.com/a/chromium.org/forum/#!msg/cxx/qwH2hxaEjac/TUKq6eqfCwAJ * chore: bump chromium in DEPS to b2eaf9ff4e6b03267bf279583ea20ceb2b25e9d0 * update patches * rename GetHighContrastColorScheme -> GetPlatformHighContrastColorScheme Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2250224 * remove vulkan info collection Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2252818 * add max_xcode_version build var Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2264867 * add missing headers * chore: bump chromium in DEPS to cded18ca1138f7e8efc904f077ddcca34f0135cf * update patches * add empty floc blocklist to BrowserProcessImpl Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2240873 * chore: bump chromium in DEPS to f06602226cd80bf677b2ce013a94a2fb7f6ac58d * chore: bump chromium in DEPS to 747aa4bfc74fc6cf7f08ee72624cd69ae41ae28d * chore: bump chromium in DEPS to 31c0105e50fcc4e94de33e5c8602c755ace4a32b * chore: update patches * Reland "[base] Stop including check.h, notreached.h, etc. in logging.h" https://chromium-review.googlesource.com/c/chromium/src/+/2264297 * X11 and Ozone: make sure gfx::AcceleratedWidget to be uint32_t https://chromium-review.googlesource.com/c/chromium/src/+/2260554 * Move zygote from //services/service_manager back to //content https://chromium-review.googlesource.com/c/chromium/src/+/2252466 * chore: update v8 patches * [XProto] Remove usage of Shape extension https://chromium-review.googlesource.com/c/chromium/src/+/2262113 * fixup! add empty floc blocklist to BrowserProcessImpl * Require macOS 10.15.1 sdk https://chromium-review.googlesource.com/c/chromium/src/+/2238504 * Use newer Xcode version 11.5.0 * update src cache * chore: bump chromium in DEPS to 60a9883e35db3f6f91916f0878e88e1849c17b11 * chore: update patches * Reland "Reland "New toolchain for Windows 10 19041 SDK"" https://chromium-review.googlesource.com/c/chromium/src/+/2255527 * update patches * Convert raw NonClientFrameViews to unique_ptrs https://chromium-review.googlesource.com/c/chromium/src/+/2240417 * [printing] Move PrintHostMsg_DidPreviewDocument_Params to print.mojom https://chromium-review.googlesource.com/c/chromium/src/+/2257035 * chore: bump chromium in DEPS to 12c233c2a85bfa28fb279f390121ba681e52a71b * chore: update patches * Removing oppressive language for the directory chrome/browser/apps https://chromium-review.googlesource.com/c/chromium/src/+/2269822 * Inclusion: rename SpellcheckLanguageBlacklistPolicyHandler https://chromium-review.googlesource.com/c/chromium/src/+/2267646 * Clean up duplicate WebContents "is fullscreen" functions https://chromium-review.googlesource.com/c/chromium/src/+/2275148 * Adds icon loading service with sandbox for Windows. https://chromium-review.googlesource.com/c/chromium/src/+/1987273 * No more Vulkan info collection for UMA on Windows https://chromium-review.googlesource.com/c/chromium/src/+/2252818 * fix lint * chore: update buildflag conditions * chore: bump chromium in DEPS to a837d4c4230ace4f10b2768728f4044b7995dfa5 * update hunspell files * chore: update patches * Make content::FileSelectListener a RefCounted https://chromium-review.googlesource.com/c/chromium/src/+/2275338 * fix build failures on MAS * update patches * fixup! Reland "[base] Stop including check.h, notreached.h, etc. in logging.h" * fix build on windows * Check for GDI exhaustion if window creation fails https://chromium-review.googlesource.com/c/chromium/src/+/2244124 * chore: bump chromium in DEPS to 2c9b2a73be4ef9ec22d8b6da8e174cb80753f125 * chore: update patches * Network Service: Move DeleteCookiePredicate into public folder https://chromium-review.googlesource.com/c/chromium/src/+/2264186 * chore: bump chromium in DEPS to fa2606299bcc02c362528d26b5dcf8c8a0db0735 * chore: bump chromium in DEPS to d9c235d1227204dbae3708daae851573a3566b94 * chore: bump chromium in DEPS to 2f82c284243c035f49a747fd1ead6c44b4b31093 * chore: update patches * Move creating the LayerTreeSettings into blink. https://chromium-review.googlesource.com/c/chromium/src/+/2267720 * chore: bump chromium in DEPS to 914112f1d9af9e4974059dc403da62699a55550f * update patches * chore: bump chromium in DEPS to e0bc1ffae6393fc543a2da94c88167df75859b36 * refactor: match upstream print preview handling (#24452) * update patches * chore: bump chromium in DEPS to 0881423156abe084164b51ab58ce93a8bd380524 * update patches * update patches * give a type to pendingPromise * chore: bump chromium in DEPS to 11a8c1534b16d130075d378a64187360ba4e7820 * update patches * 2272609: Move //services/service_manager/sandbox to //sandbox/policy. https://chromium-review.googlesource.com/c/chromium/src/+/2272609 * update patches * fixup! 2272609: Move //services/service_manager/sandbox to //sandbox/policy. * fixup! 2272609: Move //services/service_manager/sandbox to //sandbox/policy. * 2264511: Cookies: Update SetCanonicalCookie to return CookieAccessResult https://chromium-review.googlesource.com/c/chromium/src/+/2264511 * chore: fix setAlwaysOnTop test The window must be visible for state to be updated properly. * Revert "Migrate modules/desktop_capture and modules/video_capture to webrtc::Mutex." https://webrtc-review.googlesource.com/c/src/+/179080 * update patches Co-authored-by: Andy Locascio <andy@slack-corp.com> Co-authored-by: deepak1556 <hop2deep@gmail.com> Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com> Co-authored-by: John Kleinschmidt <jkleinsc@github.com> Co-authored-by: Electron Bot <anonymous@electronjs.org> Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> Co-authored-by: Jeremy Rose <nornagon@nornagon.net> Co-authored-by: Samuel Attard <marshallofsound@electronjs.org>
2020-07-13 18:13:34 -07:00
it('does not crash when called multiple times in sequence', async () => {
2022-10-12 07:15:49 -07:00
await w.loadURL('data:text/html,<h1>Hello, World!</h1>');
chore: bump chromium to 6d130075d378a64187360ba4e7820 (master) (#24256) * chore: bump chromium in DEPS to 7fb9778894d73378bff51087ce869ea5aa6e5d5d * chore: bump chromium in DEPS to 83da426e53d423f0530fc23433b6d2c4d0548442 * update patches * remove chromeos-only TtsControllerDelegate Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2255314 * SharedUserScriptMaster -> SharedUserScriptManager Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2258357 * avoid deprecated DISALLOW_COPY_AND_ASSIGN https://groups.google.com/a/chromium.org/forum/#!msg/cxx/qwH2hxaEjac/TUKq6eqfCwAJ * chore: bump chromium in DEPS to b2eaf9ff4e6b03267bf279583ea20ceb2b25e9d0 * update patches * rename GetHighContrastColorScheme -> GetPlatformHighContrastColorScheme Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2250224 * remove vulkan info collection Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2252818 * add max_xcode_version build var Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2264867 * add missing headers * chore: bump chromium in DEPS to cded18ca1138f7e8efc904f077ddcca34f0135cf * update patches * add empty floc blocklist to BrowserProcessImpl Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2240873 * chore: bump chromium in DEPS to f06602226cd80bf677b2ce013a94a2fb7f6ac58d * chore: bump chromium in DEPS to 747aa4bfc74fc6cf7f08ee72624cd69ae41ae28d * chore: bump chromium in DEPS to 31c0105e50fcc4e94de33e5c8602c755ace4a32b * chore: update patches * Reland "[base] Stop including check.h, notreached.h, etc. in logging.h" https://chromium-review.googlesource.com/c/chromium/src/+/2264297 * X11 and Ozone: make sure gfx::AcceleratedWidget to be uint32_t https://chromium-review.googlesource.com/c/chromium/src/+/2260554 * Move zygote from //services/service_manager back to //content https://chromium-review.googlesource.com/c/chromium/src/+/2252466 * chore: update v8 patches * [XProto] Remove usage of Shape extension https://chromium-review.googlesource.com/c/chromium/src/+/2262113 * fixup! add empty floc blocklist to BrowserProcessImpl * Require macOS 10.15.1 sdk https://chromium-review.googlesource.com/c/chromium/src/+/2238504 * Use newer Xcode version 11.5.0 * update src cache * chore: bump chromium in DEPS to 60a9883e35db3f6f91916f0878e88e1849c17b11 * chore: update patches * Reland "Reland "New toolchain for Windows 10 19041 SDK"" https://chromium-review.googlesource.com/c/chromium/src/+/2255527 * update patches * Convert raw NonClientFrameViews to unique_ptrs https://chromium-review.googlesource.com/c/chromium/src/+/2240417 * [printing] Move PrintHostMsg_DidPreviewDocument_Params to print.mojom https://chromium-review.googlesource.com/c/chromium/src/+/2257035 * chore: bump chromium in DEPS to 12c233c2a85bfa28fb279f390121ba681e52a71b * chore: update patches * Removing oppressive language for the directory chrome/browser/apps https://chromium-review.googlesource.com/c/chromium/src/+/2269822 * Inclusion: rename SpellcheckLanguageBlacklistPolicyHandler https://chromium-review.googlesource.com/c/chromium/src/+/2267646 * Clean up duplicate WebContents "is fullscreen" functions https://chromium-review.googlesource.com/c/chromium/src/+/2275148 * Adds icon loading service with sandbox for Windows. https://chromium-review.googlesource.com/c/chromium/src/+/1987273 * No more Vulkan info collection for UMA on Windows https://chromium-review.googlesource.com/c/chromium/src/+/2252818 * fix lint * chore: update buildflag conditions * chore: bump chromium in DEPS to a837d4c4230ace4f10b2768728f4044b7995dfa5 * update hunspell files * chore: update patches * Make content::FileSelectListener a RefCounted https://chromium-review.googlesource.com/c/chromium/src/+/2275338 * fix build failures on MAS * update patches * fixup! Reland "[base] Stop including check.h, notreached.h, etc. in logging.h" * fix build on windows * Check for GDI exhaustion if window creation fails https://chromium-review.googlesource.com/c/chromium/src/+/2244124 * chore: bump chromium in DEPS to 2c9b2a73be4ef9ec22d8b6da8e174cb80753f125 * chore: update patches * Network Service: Move DeleteCookiePredicate into public folder https://chromium-review.googlesource.com/c/chromium/src/+/2264186 * chore: bump chromium in DEPS to fa2606299bcc02c362528d26b5dcf8c8a0db0735 * chore: bump chromium in DEPS to d9c235d1227204dbae3708daae851573a3566b94 * chore: bump chromium in DEPS to 2f82c284243c035f49a747fd1ead6c44b4b31093 * chore: update patches * Move creating the LayerTreeSettings into blink. https://chromium-review.googlesource.com/c/chromium/src/+/2267720 * chore: bump chromium in DEPS to 914112f1d9af9e4974059dc403da62699a55550f * update patches * chore: bump chromium in DEPS to e0bc1ffae6393fc543a2da94c88167df75859b36 * refactor: match upstream print preview handling (#24452) * update patches * chore: bump chromium in DEPS to 0881423156abe084164b51ab58ce93a8bd380524 * update patches * update patches * give a type to pendingPromise * chore: bump chromium in DEPS to 11a8c1534b16d130075d378a64187360ba4e7820 * update patches * 2272609: Move //services/service_manager/sandbox to //sandbox/policy. https://chromium-review.googlesource.com/c/chromium/src/+/2272609 * update patches * fixup! 2272609: Move //services/service_manager/sandbox to //sandbox/policy. * fixup! 2272609: Move //services/service_manager/sandbox to //sandbox/policy. * 2264511: Cookies: Update SetCanonicalCookie to return CookieAccessResult https://chromium-review.googlesource.com/c/chromium/src/+/2264511 * chore: fix setAlwaysOnTop test The window must be visible for state to be updated properly. * Revert "Migrate modules/desktop_capture and modules/video_capture to webrtc::Mutex." https://webrtc-review.googlesource.com/c/src/+/179080 * update patches Co-authored-by: Andy Locascio <andy@slack-corp.com> Co-authored-by: deepak1556 <hop2deep@gmail.com> Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com> Co-authored-by: John Kleinschmidt <jkleinsc@github.com> Co-authored-by: Electron Bot <anonymous@electronjs.org> Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> Co-authored-by: Jeremy Rose <nornagon@nornagon.net> Co-authored-by: Samuel Attard <marshallofsound@electronjs.org>
2020-07-13 18:13:34 -07:00
const results = [];
for (let i = 0; i < 3; i++) {
const result = await w.webContents.printToPDF({});
results.push(result);
}
for (const data of results) {
expect(data).to.be.an.instanceof(Buffer).that.is.not.empty();
}
});
2022-10-12 07:15:49 -07:00
it('can print a PDF with default settings', async () => {
await w.loadURL('data:text/html,<h1>Hello, World!</h1>');
2022-10-12 07:15:49 -07:00
const data = await w.webContents.printToPDF({});
expect(data).to.be.an.instanceof(Buffer).that.is.not.empty();
});
type PageSizeString = Exclude<Required<Electron.PrintToPDFOptions>['pageSize'], Electron.Size>;
2022-10-12 07:15:49 -07:00
it('with custom page sizes', async () => {
const paperFormats: Record<PageSizeString, ElectronInternal.PageSize> = {
Letter: { width: 8.5, height: 11 },
Legal: { width: 8.5, height: 14 },
Tabloid: { width: 11, height: 17 },
Ledger: { width: 17, height: 11 },
A0: { width: 33.1, height: 46.8 },
A1: { width: 23.4, height: 33.1 },
A2: { width: 16.54, height: 23.4 },
A3: { width: 11.7, height: 16.54 },
A4: { width: 8.27, height: 11.7 },
A5: { width: 5.83, height: 8.27 },
A6: { width: 4.13, height: 5.83 }
2022-10-12 07:15:49 -07:00
};
await w.loadFile(path.join(__dirname, 'fixtures', 'api', 'print-to-pdf-small.html'));
for (const format of Object.keys(paperFormats) as PageSizeString[]) {
2022-10-12 07:15:49 -07:00
const data = await w.webContents.printToPDF({ pageSize: format });
build(deps): bump the npm_and_yarn group across 2 directories with 3 updates (#43511) * build(deps): bump the npm_and_yarn group across 2 directories with 3 updates Bumps the npm_and_yarn group with 1 update in the / directory: [braces](https://github.com/micromatch/braces). Bumps the npm_and_yarn group with 3 updates in the /spec directory: [braces](https://github.com/micromatch/braces), [pdfjs-dist](https://github.com/mozilla/pdf.js) and [ws](https://github.com/websockets/ws). Updates `braces` from 3.0.2 to 3.0.3 - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) Updates `braces` from 3.0.2 to 3.0.3 - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) Updates `pdfjs-dist` from 2.16.105 to 4.2.67 - [Release notes](https://github.com/mozilla/pdf.js/releases) - [Commits](https://github.com/mozilla/pdf.js/compare/v2.16.105...v4.2.67) Updates `ws` from 7.5.9 to 7.5.10 - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/7.5.9...7.5.10) --- updated-dependencies: - dependency-name: braces dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: braces dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: pdfjs-dist dependency-type: direct:development dependency-group: npm_and_yarn - dependency-name: ws dependency-type: direct:development dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] <support@github.com> * chore: update api-web-contents-spec to us newer version of pdfjs-dist * test: create fixture to read PDF files for verification --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2024-09-09 11:49:43 +02:00
const pdfInfo = await readPDF(data);
2022-10-12 07:15:49 -07:00
// page.view is [top, left, width, height].
build(deps): bump the npm_and_yarn group across 2 directories with 3 updates (#43511) * build(deps): bump the npm_and_yarn group across 2 directories with 3 updates Bumps the npm_and_yarn group with 1 update in the / directory: [braces](https://github.com/micromatch/braces). Bumps the npm_and_yarn group with 3 updates in the /spec directory: [braces](https://github.com/micromatch/braces), [pdfjs-dist](https://github.com/mozilla/pdf.js) and [ws](https://github.com/websockets/ws). Updates `braces` from 3.0.2 to 3.0.3 - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) Updates `braces` from 3.0.2 to 3.0.3 - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) Updates `pdfjs-dist` from 2.16.105 to 4.2.67 - [Release notes](https://github.com/mozilla/pdf.js/releases) - [Commits](https://github.com/mozilla/pdf.js/compare/v2.16.105...v4.2.67) Updates `ws` from 7.5.9 to 7.5.10 - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/7.5.9...7.5.10) --- updated-dependencies: - dependency-name: braces dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: braces dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: pdfjs-dist dependency-type: direct:development dependency-group: npm_and_yarn - dependency-name: ws dependency-type: direct:development dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] <support@github.com> * chore: update api-web-contents-spec to us newer version of pdfjs-dist * test: create fixture to read PDF files for verification --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2024-09-09 11:49:43 +02:00
const width = pdfInfo.view[2] / 72;
const height = pdfInfo.view[3] / 72;
2022-10-12 07:15:49 -07:00
const approxEq = (a: number, b: number, epsilon = 0.01) => Math.abs(a - b) <= epsilon;
expect(approxEq(width, paperFormats[format].width)).to.be.true();
expect(approxEq(height, paperFormats[format].height)).to.be.true();
}
});
it('with custom header and footer', async () => {
await w.loadFile(path.join(fixturesPath, 'api', 'print-to-pdf-small.html'));
2022-10-12 07:15:49 -07:00
const data = await w.webContents.printToPDF({
displayHeaderFooter: true,
headerTemplate: '<div>I\'m a PDF header</div>',
footerTemplate: '<div>I\'m a PDF footer</div>'
});
build(deps): bump the npm_and_yarn group across 2 directories with 3 updates (#43511) * build(deps): bump the npm_and_yarn group across 2 directories with 3 updates Bumps the npm_and_yarn group with 1 update in the / directory: [braces](https://github.com/micromatch/braces). Bumps the npm_and_yarn group with 3 updates in the /spec directory: [braces](https://github.com/micromatch/braces), [pdfjs-dist](https://github.com/mozilla/pdf.js) and [ws](https://github.com/websockets/ws). Updates `braces` from 3.0.2 to 3.0.3 - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) Updates `braces` from 3.0.2 to 3.0.3 - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) Updates `pdfjs-dist` from 2.16.105 to 4.2.67 - [Release notes](https://github.com/mozilla/pdf.js/releases) - [Commits](https://github.com/mozilla/pdf.js/compare/v2.16.105...v4.2.67) Updates `ws` from 7.5.9 to 7.5.10 - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/7.5.9...7.5.10) --- updated-dependencies: - dependency-name: braces dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: braces dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: pdfjs-dist dependency-type: direct:development dependency-group: npm_and_yarn - dependency-name: ws dependency-type: direct:development dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] <support@github.com> * chore: update api-web-contents-spec to us newer version of pdfjs-dist * test: create fixture to read PDF files for verification --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2024-09-09 11:49:43 +02:00
const pdfInfo = await readPDF(data);
build(deps): bump the npm_and_yarn group across 2 directories with 3 updates (#43511) * build(deps): bump the npm_and_yarn group across 2 directories with 3 updates Bumps the npm_and_yarn group with 1 update in the / directory: [braces](https://github.com/micromatch/braces). Bumps the npm_and_yarn group with 3 updates in the /spec directory: [braces](https://github.com/micromatch/braces), [pdfjs-dist](https://github.com/mozilla/pdf.js) and [ws](https://github.com/websockets/ws). Updates `braces` from 3.0.2 to 3.0.3 - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) Updates `braces` from 3.0.2 to 3.0.3 - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) Updates `pdfjs-dist` from 2.16.105 to 4.2.67 - [Release notes](https://github.com/mozilla/pdf.js/releases) - [Commits](https://github.com/mozilla/pdf.js/compare/v2.16.105...v4.2.67) Updates `ws` from 7.5.9 to 7.5.10 - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/7.5.9...7.5.10) --- updated-dependencies: - dependency-name: braces dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: braces dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: pdfjs-dist dependency-type: direct:development dependency-group: npm_and_yarn - dependency-name: ws dependency-type: direct:development dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] <support@github.com> * chore: update api-web-contents-spec to us newer version of pdfjs-dist * test: create fixture to read PDF files for verification --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2024-09-09 11:49:43 +02:00
expect(containsText(pdfInfo.textContent, /I'm a PDF header/)).to.be.true();
expect(containsText(pdfInfo.textContent, /I'm a PDF footer/)).to.be.true();
2022-10-12 07:15:49 -07:00
});
it('in landscape mode', async () => {
await w.loadFile(path.join(__dirname, 'fixtures', 'api', 'print-to-pdf-small.html'));
const data = await w.webContents.printToPDF({ landscape: true });
build(deps): bump the npm_and_yarn group across 2 directories with 3 updates (#43511) * build(deps): bump the npm_and_yarn group across 2 directories with 3 updates Bumps the npm_and_yarn group with 1 update in the / directory: [braces](https://github.com/micromatch/braces). Bumps the npm_and_yarn group with 3 updates in the /spec directory: [braces](https://github.com/micromatch/braces), [pdfjs-dist](https://github.com/mozilla/pdf.js) and [ws](https://github.com/websockets/ws). Updates `braces` from 3.0.2 to 3.0.3 - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) Updates `braces` from 3.0.2 to 3.0.3 - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) Updates `pdfjs-dist` from 2.16.105 to 4.2.67 - [Release notes](https://github.com/mozilla/pdf.js/releases) - [Commits](https://github.com/mozilla/pdf.js/compare/v2.16.105...v4.2.67) Updates `ws` from 7.5.9 to 7.5.10 - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/7.5.9...7.5.10) --- updated-dependencies: - dependency-name: braces dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: braces dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: pdfjs-dist dependency-type: direct:development dependency-group: npm_and_yarn - dependency-name: ws dependency-type: direct:development dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] <support@github.com> * chore: update api-web-contents-spec to us newer version of pdfjs-dist * test: create fixture to read PDF files for verification --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2024-09-09 11:49:43 +02:00
const pdfInfo = await readPDF(data);
2022-10-12 07:15:49 -07:00
// page.view is [top, left, width, height].
build(deps): bump the npm_and_yarn group across 2 directories with 3 updates (#43511) * build(deps): bump the npm_and_yarn group across 2 directories with 3 updates Bumps the npm_and_yarn group with 1 update in the / directory: [braces](https://github.com/micromatch/braces). Bumps the npm_and_yarn group with 3 updates in the /spec directory: [braces](https://github.com/micromatch/braces), [pdfjs-dist](https://github.com/mozilla/pdf.js) and [ws](https://github.com/websockets/ws). Updates `braces` from 3.0.2 to 3.0.3 - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) Updates `braces` from 3.0.2 to 3.0.3 - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) Updates `pdfjs-dist` from 2.16.105 to 4.2.67 - [Release notes](https://github.com/mozilla/pdf.js/releases) - [Commits](https://github.com/mozilla/pdf.js/compare/v2.16.105...v4.2.67) Updates `ws` from 7.5.9 to 7.5.10 - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/7.5.9...7.5.10) --- updated-dependencies: - dependency-name: braces dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: braces dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: pdfjs-dist dependency-type: direct:development dependency-group: npm_and_yarn - dependency-name: ws dependency-type: direct:development dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] <support@github.com> * chore: update api-web-contents-spec to us newer version of pdfjs-dist * test: create fixture to read PDF files for verification --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2024-09-09 11:49:43 +02:00
const width = pdfInfo.view[2];
const height = pdfInfo.view[3];
2022-10-12 07:15:49 -07:00
expect(width).to.be.greaterThan(height);
});
it('with custom page ranges', async () => {
await w.loadFile(path.join(__dirname, 'fixtures', 'api', 'print-to-pdf-large.html'));
const data = await w.webContents.printToPDF({
pageRanges: '1-3',
landscape: true
});
2022-10-12 07:15:49 -07:00
build(deps): bump the npm_and_yarn group across 2 directories with 3 updates (#43511) * build(deps): bump the npm_and_yarn group across 2 directories with 3 updates Bumps the npm_and_yarn group with 1 update in the / directory: [braces](https://github.com/micromatch/braces). Bumps the npm_and_yarn group with 3 updates in the /spec directory: [braces](https://github.com/micromatch/braces), [pdfjs-dist](https://github.com/mozilla/pdf.js) and [ws](https://github.com/websockets/ws). Updates `braces` from 3.0.2 to 3.0.3 - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) Updates `braces` from 3.0.2 to 3.0.3 - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) Updates `pdfjs-dist` from 2.16.105 to 4.2.67 - [Release notes](https://github.com/mozilla/pdf.js/releases) - [Commits](https://github.com/mozilla/pdf.js/compare/v2.16.105...v4.2.67) Updates `ws` from 7.5.9 to 7.5.10 - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/7.5.9...7.5.10) --- updated-dependencies: - dependency-name: braces dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: braces dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: pdfjs-dist dependency-type: direct:development dependency-group: npm_and_yarn - dependency-name: ws dependency-type: direct:development dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] <support@github.com> * chore: update api-web-contents-spec to us newer version of pdfjs-dist * test: create fixture to read PDF files for verification --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2024-09-09 11:49:43 +02:00
const pdfInfo = await readPDF(data);
2022-10-12 07:15:49 -07:00
// Check that correct # of pages are rendered.
build(deps): bump the npm_and_yarn group across 2 directories with 3 updates (#43511) * build(deps): bump the npm_and_yarn group across 2 directories with 3 updates Bumps the npm_and_yarn group with 1 update in the / directory: [braces](https://github.com/micromatch/braces). Bumps the npm_and_yarn group with 3 updates in the /spec directory: [braces](https://github.com/micromatch/braces), [pdfjs-dist](https://github.com/mozilla/pdf.js) and [ws](https://github.com/websockets/ws). Updates `braces` from 3.0.2 to 3.0.3 - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) Updates `braces` from 3.0.2 to 3.0.3 - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) Updates `pdfjs-dist` from 2.16.105 to 4.2.67 - [Release notes](https://github.com/mozilla/pdf.js/releases) - [Commits](https://github.com/mozilla/pdf.js/compare/v2.16.105...v4.2.67) Updates `ws` from 7.5.9 to 7.5.10 - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/7.5.9...7.5.10) --- updated-dependencies: - dependency-name: braces dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: braces dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: pdfjs-dist dependency-type: direct:development dependency-group: npm_and_yarn - dependency-name: ws dependency-type: direct:development dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] <support@github.com> * chore: update api-web-contents-spec to us newer version of pdfjs-dist * test: create fixture to read PDF files for verification --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2024-09-09 11:49:43 +02:00
expect(pdfInfo.numPages).to.equal(3);
});
it('does not tag PDFs by default', async () => {
await w.loadFile(path.join(__dirname, 'fixtures', 'api', 'print-to-pdf-small.html'));
const data = await w.webContents.printToPDF({});
build(deps): bump the npm_and_yarn group across 2 directories with 3 updates (#43511) * build(deps): bump the npm_and_yarn group across 2 directories with 3 updates Bumps the npm_and_yarn group with 1 update in the / directory: [braces](https://github.com/micromatch/braces). Bumps the npm_and_yarn group with 3 updates in the /spec directory: [braces](https://github.com/micromatch/braces), [pdfjs-dist](https://github.com/mozilla/pdf.js) and [ws](https://github.com/websockets/ws). Updates `braces` from 3.0.2 to 3.0.3 - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) Updates `braces` from 3.0.2 to 3.0.3 - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) Updates `pdfjs-dist` from 2.16.105 to 4.2.67 - [Release notes](https://github.com/mozilla/pdf.js/releases) - [Commits](https://github.com/mozilla/pdf.js/compare/v2.16.105...v4.2.67) Updates `ws` from 7.5.9 to 7.5.10 - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/7.5.9...7.5.10) --- updated-dependencies: - dependency-name: braces dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: braces dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: pdfjs-dist dependency-type: direct:development dependency-group: npm_and_yarn - dependency-name: ws dependency-type: direct:development dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] <support@github.com> * chore: update api-web-contents-spec to us newer version of pdfjs-dist * test: create fixture to read PDF files for verification --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2024-09-09 11:49:43 +02:00
const pdfInfo = await readPDF(data);
expect(pdfInfo.markInfo).to.be.null();
});
it('can print same-origin iframes', async () => {
await w.loadFile(path.join(__dirname, 'fixtures', 'api', 'print-to-pdf-same-origin.html'));
const data = await w.webContents.printToPDF({});
const pdfInfo = await readPDF(data);
expect(containsText(pdfInfo.textContent, /Virtual member functions/)).to.be.true();
});
// TODO(codebytere): OOPIF printing is disabled on Linux at the moment due to crashes.
ifit(process.platform !== 'linux')('can print cross-origin iframes', async () => {
server = http.createServer((_, res) => {
res.writeHead(200);
res.end(`
<title>cross-origin iframe</title>
<p>This page is displayed in an iframe.</p>
`);
});
const { port } = await listen(server);
await w.loadURL(`data:text/html,<iframe src="http://localhost:${port}"></iframe>`);
const data = await w.webContents.printToPDF({});
const pdfInfo = await readPDF(data);
expect(containsText(pdfInfo.textContent, /This page is displayed in an iframe./)).to.be.true();
});
it('can generate tag data for PDFs', async () => {
await w.loadFile(path.join(__dirname, 'fixtures', 'api', 'print-to-pdf-small.html'));
const data = await w.webContents.printToPDF({ generateTaggedPDF: true });
build(deps): bump the npm_and_yarn group across 2 directories with 3 updates (#43511) * build(deps): bump the npm_and_yarn group across 2 directories with 3 updates Bumps the npm_and_yarn group with 1 update in the / directory: [braces](https://github.com/micromatch/braces). Bumps the npm_and_yarn group with 3 updates in the /spec directory: [braces](https://github.com/micromatch/braces), [pdfjs-dist](https://github.com/mozilla/pdf.js) and [ws](https://github.com/websockets/ws). Updates `braces` from 3.0.2 to 3.0.3 - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) Updates `braces` from 3.0.2 to 3.0.3 - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) Updates `pdfjs-dist` from 2.16.105 to 4.2.67 - [Release notes](https://github.com/mozilla/pdf.js/releases) - [Commits](https://github.com/mozilla/pdf.js/compare/v2.16.105...v4.2.67) Updates `ws` from 7.5.9 to 7.5.10 - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/7.5.9...7.5.10) --- updated-dependencies: - dependency-name: braces dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: braces dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: pdfjs-dist dependency-type: direct:development dependency-group: npm_and_yarn - dependency-name: ws dependency-type: direct:development dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] <support@github.com> * chore: update api-web-contents-spec to us newer version of pdfjs-dist * test: create fixture to read PDF files for verification --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2024-09-09 11:49:43 +02:00
const pdfInfo = await readPDF(data);
expect(pdfInfo.markInfo).to.deep.equal({
Marked: true,
UserProperties: false,
Suspects: false
});
});
it('from an existing pdf document', async () => {
const pdfPath = path.join(fixturesPath, 'cat.pdf');
const readyToPrint = once(w.webContents, '-pdf-ready-to-print');
await w.loadFile(pdfPath);
await readyToPrint;
const data = await w.webContents.printToPDF({});
build(deps): bump the npm_and_yarn group across 2 directories with 3 updates (#43511) * build(deps): bump the npm_and_yarn group across 2 directories with 3 updates Bumps the npm_and_yarn group with 1 update in the / directory: [braces](https://github.com/micromatch/braces). Bumps the npm_and_yarn group with 3 updates in the /spec directory: [braces](https://github.com/micromatch/braces), [pdfjs-dist](https://github.com/mozilla/pdf.js) and [ws](https://github.com/websockets/ws). Updates `braces` from 3.0.2 to 3.0.3 - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) Updates `braces` from 3.0.2 to 3.0.3 - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) Updates `pdfjs-dist` from 2.16.105 to 4.2.67 - [Release notes](https://github.com/mozilla/pdf.js/releases) - [Commits](https://github.com/mozilla/pdf.js/compare/v2.16.105...v4.2.67) Updates `ws` from 7.5.9 to 7.5.10 - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/7.5.9...7.5.10) --- updated-dependencies: - dependency-name: braces dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: braces dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: pdfjs-dist dependency-type: direct:development dependency-group: npm_and_yarn - dependency-name: ws dependency-type: direct:development dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] <support@github.com> * chore: update api-web-contents-spec to us newer version of pdfjs-dist * test: create fixture to read PDF files for verification --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2024-09-09 11:49:43 +02:00
const pdfInfo = await readPDF(data);
expect(pdfInfo.numPages).to.equal(2);
expect(containsText(pdfInfo.textContent, /Cat: The Ideal Pet/)).to.be.true();
});
it('from an existing pdf document in a WebView', async () => {
const win = new BrowserWindow({
show: false,
webPreferences: {
webviewTag: true
}
});
await win.loadURL('about:blank');
const webContentsCreated = once(app, 'web-contents-created') as Promise<[any, WebContents]>;
const src = url.format({
pathname: `${fixturesPath.replaceAll('\\', '/')}/cat.pdf`,
protocol: 'file',
slashes: true
});
await win.webContents.executeJavaScript(`
new Promise((resolve, reject) => {
const webview = new WebView()
webview.setAttribute('src', '${src}')
document.body.appendChild(webview)
webview.addEventListener('did-finish-load', () => {
resolve()
})
})
`);
const [, webContents] = await webContentsCreated;
await once(webContents, '-pdf-ready-to-print');
const data = await webContents.printToPDF({});
const pdfInfo = await readPDF(data);
expect(pdfInfo.numPages).to.equal(2);
expect(containsText(pdfInfo.textContent, /Cat: The Ideal Pet/)).to.be.true();
});
2020-03-20 13:28:31 -07:00
});
describe('PictureInPicture video', () => {
2020-03-20 13:28:31 -07:00
afterEach(closeAllWindows);
it('works as expected', async function () {
chore: bump chromium to 111.0.5544.3 (main) (#36820) * chore: bump chromium in DEPS to 111.0.5522.0 * chore: bump chromium in DEPS to 111.0.5524.0 * chore: bump chromium in DEPS to 111.0.5526.0 * chore: bump chromium in DEPS to 111.0.5528.0 * chore: update patches/chromium/mas_avoid_usage_of_private_macos_apis.patch Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4132807 Fix simple code shear * chore: update patches/chromium/unsandboxed_ppapi_processes_skip_zygote.patch Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4130675 Fix simple code shear * chore: update patches/chromium/hack_plugin_response_interceptor_to_point_to_electron.patch Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4144281 Fix simple code shear; applied cleanly w/patch-fuzz * chore: update patches/chromium/disable_unload_metrics.patch Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4126173 Fix simple code shear; applied cleanly w/patch-fuzz * chore: update patches/chromium/feat_add_data_parameter_to_processsingleton.patch Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4144281 Fix simple code shear; applied cleanly w/patch-fuzz * chore: update patches/chromium/preconnect_manager.patch https://chromium-review.googlesource.com/c/chromium/src/+/4144281 Fix simple code shear; applied cleanly w/patch-fuzz * chore: update patches/v8/force_cppheapcreateparams_to_be_noncopyable.patch https://chromium-review.googlesource.com/c/v8/v8/+/3533019 Fix simple code shear; applied cleanly w/patch-fuzz * chore: update patches * chore: update patches/chromium/add_maximized_parameter_to_linuxui_getwindowframeprovider.patch Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4128765 Upstream added a new call to HeaderContext(), whose signature we have patched * chore: bump chromium in DEPS to 111.0.5530.0 * chore: update patches * Move ChildProcessHost* from content/common to content/browser Xref: Move ChildProcessHost* from content/common to content/browser * Remove RenderViewHostChanged Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4134103 [upstream removal of RenderViewHostChanged] Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4092763 Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4093234 Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4133892 Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4134103 [examples of upstream code adjusting to the change] Upstream handles this change in roughly two approaches: 1. Move the code over to RenderFrameHostChanged(old_host, new_host) but test for new_host->IsInPrimaryMainFrame() before acting 2. Migrate to the PrimaryPageChanged(page) API and use page.GetMainDocument() to get the RenderFrameHost. I've chosen 1. because electron_api_web_contents needed that pointer to old_host to call RemoveInputEventListener(), but I may be missing some context & would appreciate review on this commit. * Make electron/shell/browser/relauncher_win.cc use <winternl.h> Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4129135 Many internal Windows types are now available in winternl.h so upstrem no longer defines the types themselves. * Move ChildProcessHost* from content/common to content/browser Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4134795 * fixup! Make electron/shell/browser/relauncher_win.cc use <winternl.h> winternl.h does not define the field we need, so clone the struct Chromium was using into unnamed namespace * fixup! Move ChildProcessHost* from content/common to content/browser chore: update #includes too * chore: bump chromium in DEPS to 111.0.5532.0 * chore: sync patches/chromium/pepper_plugin_support.patch Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4133323 manually reync patch; no code changes * chore: sync patches/chromium/mas_no_private_api.patch Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4143865 the content/common/pseudonymization_salt.cc patch is no longer needed * chore: sync patches/chromium/mas_disable_remote_accessibility.patch patch-fuzz update; no manual changes * chore: sync patches/chromium/build_do_not_depend_on_packed_resource_integrity.patch Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4111725 manually reync patch; no code changes * chore: sync patches/chromium/create_browser_v8_snapshot_file_name_fuse.patch Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4133323 manually reync patch; no code changes * chore: sync patches/v8/fix_build_deprecated_attribute_for_older_msvc_versions.patch Xref: https://chromium-review.googlesource.com/c/v8/v8/+/4127230 patch-fuzz update; no manual changes * chore: rebuild patches * fixup! Remove RenderViewHostChanged Use PrimaryPageChanged() * chore: remove unused method TabsUpdateFunction::OnExecuteCodeFinished() Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4133991 This private, already-unused function showed up as a FTBFS because it took a base::ListValue parameter and ListValue was removed upstream. * task posting v3: remove includes of runner handles and IWYU task runners Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4133323 * chore: lint * chore: more lint * fixup! task posting v3: remove includes of runner handles and IWYU task runners macOS, too * fixup! task posting v3: remove includes of runner handles and IWYU task runners * chore: bump chromium in DEPS to 111.0.5534.0 * chore: sync patches/chromium/allow_new_privileges_in_unsandboxed_child_processes.patch Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4141862 patch-fuzz update; no manual changes * chore: sync patches/chromium/logging_win32_only_create_a_console_if_logging_to_stderr.patch Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4153110 Sync to minor upstream changes. Add const correctness. * chore: sync electron/patches/chromium/feat_configure_launch_options_for_service_process.patch https://chromium-review.googlesource.com/c/chromium/src/+/4141862 patch-fuzz update; no manual changes * chore: patches/v8/fix_build_deprecated_attribute_for_older_msvc_versions.patch sync https://chromium-review.googlesource.com/c/v8/v8/+/4147787 patch-fuzz update; no manual changes * chore: update patches * chore: bump chromium in DEPS to 111.0.5536.0 * chore: sync patches/chromium/allow_new_privileges_in_unsandboxed_child_processes.patch Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4141863 Sync with upstream code changes. Minor code golf for readability. Note: upstream is laying groundwork for being able to work off of env vars instead of switches. Doesn't affect us yet but worth being aware of. > + // Environment variables could be supported in the future, but are not > + // currently supported when launching with the zygote. * chore: update patches/chromium/feat_expose_raw_response_headers_from_urlloader.patch Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4126836 patch-fuzz update; no manual changes * chore: sync electron/patches/chromium/feat_configure_launch_options_for_service_process.patch Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4141863 manual sync * chore: sync electron/patches/v8/fix_build_deprecated_attribute_for_older_msvc_versions.patch https://chromium-review.googlesource.com/c/v8/v8/+/4147788 fuzz-patch * chore: rebuild patches * chore: bump chromium in DEPS to 111.0.5538.0 * chore: bump chromium in DEPS to 111.0.5540.0 * chore: update patches * Remove sdk_forward_declarations https://chromium-review.googlesource.com/c/chromium/src/+/4166680 * task posting v3: Remove task runner handles from codebase entirely Refs https://chromium-review.googlesource.com/c/chromium/src/+/4150928 * Cleanup child_process_launcher_helper* Refs https://chromium-review.googlesource.com/c/chromium/src/+/4141863 * fix: utilityprocess spec on macOS * fix: build on windows Refs https://chromium-review.googlesource.com/c/chromium/src/+/4141863 * chore: fix lint * chore: bump chromium 111.0.5544.3 * chore: gen filenames.libcxx.gni * Add check for Executable+Writable handles in renderer processes. Refs https://chromium-review.googlesource.com/c/chromium/src/+/3774416 * fixup! Add check for Executable+Writable handles in renderer processes. * 4143761: [110] Disable SwiftShader for WebGL on M1 Macs. https://chromium-review.googlesource.com/c/chromium/src/+/4143761 (cherry picked from commit 2f74db3c2139424c416f92d9169aeaa8a2f9c1ec) * chore: bump chromium to 111.0.5555.0 * 56085: Remove hmac.h include from ssl.h. https://boringssl-review.googlesource.com/c/boringssl/+/56085 * 4167020: Remove forwarding headers https://chromium-review.googlesource.com/c/chromium/src/+/4167020 * chore: bump chromium to 111.0.5559.0 * 4181044: Restrict WebCursor usage to RenderWidgetHostViewAura https://chromium-review.googlesource.com/c/chromium/src/+/4181044 * 4189437: views: rename ink_drop_host_view to ink_drop_host https://chromium-review.googlesource.com/c/chromium/src/+/4189437 * chore: bump chromium to 111.0.5560.0 * 4167016: win7dep: remove non aeroglass code https://chromium-review.googlesource.com/c/chromium/src/+/4167016 * fixup after rebase: Remove forwarding header s https://chromium-review.googlesource.com/c/chromium/src/+/4167020 * 4125755: Reland "Reject getDisplayMedia calls without user activation" https://chromium-review.googlesource.com/c/chromium/src/+/4125755 * test: add workaround * chore: update patches * fix: alter coreModuleRegExp to prevent arm crash * Revert "fix: alter coreModuleRegExp to prevent arm crash" This reverts commit 7e50630c98137831a711c5abdbc8809e60cf1d73. * 4218354: Disable the use of preserve_most on arm64 Windows https://chromium-review.googlesource.com/c/v8/v8/+/4218354 * chore: review changes --------- Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> Co-authored-by: Charles Kerr <charles@charleskerr.com> Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com> Co-authored-by: deepak1556 <hop2deep@gmail.com> Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org> Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2023-02-03 12:43:42 +01:00
const w = new BrowserWindow({ webPreferences: { sandbox: true } });
// TODO(codebytere): figure out why this workaround is needed and remove.
// It is not germane to the actual test.
await w.loadFile(path.join(fixturesPath, 'blank.html'));
await w.loadFile(path.join(fixturesPath, 'api', 'picture-in-picture.html'));
chore: bump chromium to 111.0.5544.3 (main) (#36820) * chore: bump chromium in DEPS to 111.0.5522.0 * chore: bump chromium in DEPS to 111.0.5524.0 * chore: bump chromium in DEPS to 111.0.5526.0 * chore: bump chromium in DEPS to 111.0.5528.0 * chore: update patches/chromium/mas_avoid_usage_of_private_macos_apis.patch Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4132807 Fix simple code shear * chore: update patches/chromium/unsandboxed_ppapi_processes_skip_zygote.patch Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4130675 Fix simple code shear * chore: update patches/chromium/hack_plugin_response_interceptor_to_point_to_electron.patch Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4144281 Fix simple code shear; applied cleanly w/patch-fuzz * chore: update patches/chromium/disable_unload_metrics.patch Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4126173 Fix simple code shear; applied cleanly w/patch-fuzz * chore: update patches/chromium/feat_add_data_parameter_to_processsingleton.patch Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4144281 Fix simple code shear; applied cleanly w/patch-fuzz * chore: update patches/chromium/preconnect_manager.patch https://chromium-review.googlesource.com/c/chromium/src/+/4144281 Fix simple code shear; applied cleanly w/patch-fuzz * chore: update patches/v8/force_cppheapcreateparams_to_be_noncopyable.patch https://chromium-review.googlesource.com/c/v8/v8/+/3533019 Fix simple code shear; applied cleanly w/patch-fuzz * chore: update patches * chore: update patches/chromium/add_maximized_parameter_to_linuxui_getwindowframeprovider.patch Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4128765 Upstream added a new call to HeaderContext(), whose signature we have patched * chore: bump chromium in DEPS to 111.0.5530.0 * chore: update patches * Move ChildProcessHost* from content/common to content/browser Xref: Move ChildProcessHost* from content/common to content/browser * Remove RenderViewHostChanged Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4134103 [upstream removal of RenderViewHostChanged] Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4092763 Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4093234 Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4133892 Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4134103 [examples of upstream code adjusting to the change] Upstream handles this change in roughly two approaches: 1. Move the code over to RenderFrameHostChanged(old_host, new_host) but test for new_host->IsInPrimaryMainFrame() before acting 2. Migrate to the PrimaryPageChanged(page) API and use page.GetMainDocument() to get the RenderFrameHost. I've chosen 1. because electron_api_web_contents needed that pointer to old_host to call RemoveInputEventListener(), but I may be missing some context & would appreciate review on this commit. * Make electron/shell/browser/relauncher_win.cc use <winternl.h> Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4129135 Many internal Windows types are now available in winternl.h so upstrem no longer defines the types themselves. * Move ChildProcessHost* from content/common to content/browser Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4134795 * fixup! Make electron/shell/browser/relauncher_win.cc use <winternl.h> winternl.h does not define the field we need, so clone the struct Chromium was using into unnamed namespace * fixup! Move ChildProcessHost* from content/common to content/browser chore: update #includes too * chore: bump chromium in DEPS to 111.0.5532.0 * chore: sync patches/chromium/pepper_plugin_support.patch Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4133323 manually reync patch; no code changes * chore: sync patches/chromium/mas_no_private_api.patch Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4143865 the content/common/pseudonymization_salt.cc patch is no longer needed * chore: sync patches/chromium/mas_disable_remote_accessibility.patch patch-fuzz update; no manual changes * chore: sync patches/chromium/build_do_not_depend_on_packed_resource_integrity.patch Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4111725 manually reync patch; no code changes * chore: sync patches/chromium/create_browser_v8_snapshot_file_name_fuse.patch Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4133323 manually reync patch; no code changes * chore: sync patches/v8/fix_build_deprecated_attribute_for_older_msvc_versions.patch Xref: https://chromium-review.googlesource.com/c/v8/v8/+/4127230 patch-fuzz update; no manual changes * chore: rebuild patches * fixup! Remove RenderViewHostChanged Use PrimaryPageChanged() * chore: remove unused method TabsUpdateFunction::OnExecuteCodeFinished() Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4133991 This private, already-unused function showed up as a FTBFS because it took a base::ListValue parameter and ListValue was removed upstream. * task posting v3: remove includes of runner handles and IWYU task runners Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4133323 * chore: lint * chore: more lint * fixup! task posting v3: remove includes of runner handles and IWYU task runners macOS, too * fixup! task posting v3: remove includes of runner handles and IWYU task runners * chore: bump chromium in DEPS to 111.0.5534.0 * chore: sync patches/chromium/allow_new_privileges_in_unsandboxed_child_processes.patch Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4141862 patch-fuzz update; no manual changes * chore: sync patches/chromium/logging_win32_only_create_a_console_if_logging_to_stderr.patch Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4153110 Sync to minor upstream changes. Add const correctness. * chore: sync electron/patches/chromium/feat_configure_launch_options_for_service_process.patch https://chromium-review.googlesource.com/c/chromium/src/+/4141862 patch-fuzz update; no manual changes * chore: patches/v8/fix_build_deprecated_attribute_for_older_msvc_versions.patch sync https://chromium-review.googlesource.com/c/v8/v8/+/4147787 patch-fuzz update; no manual changes * chore: update patches * chore: bump chromium in DEPS to 111.0.5536.0 * chore: sync patches/chromium/allow_new_privileges_in_unsandboxed_child_processes.patch Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4141863 Sync with upstream code changes. Minor code golf for readability. Note: upstream is laying groundwork for being able to work off of env vars instead of switches. Doesn't affect us yet but worth being aware of. > + // Environment variables could be supported in the future, but are not > + // currently supported when launching with the zygote. * chore: update patches/chromium/feat_expose_raw_response_headers_from_urlloader.patch Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4126836 patch-fuzz update; no manual changes * chore: sync electron/patches/chromium/feat_configure_launch_options_for_service_process.patch Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4141863 manual sync * chore: sync electron/patches/v8/fix_build_deprecated_attribute_for_older_msvc_versions.patch https://chromium-review.googlesource.com/c/v8/v8/+/4147788 fuzz-patch * chore: rebuild patches * chore: bump chromium in DEPS to 111.0.5538.0 * chore: bump chromium in DEPS to 111.0.5540.0 * chore: update patches * Remove sdk_forward_declarations https://chromium-review.googlesource.com/c/chromium/src/+/4166680 * task posting v3: Remove task runner handles from codebase entirely Refs https://chromium-review.googlesource.com/c/chromium/src/+/4150928 * Cleanup child_process_launcher_helper* Refs https://chromium-review.googlesource.com/c/chromium/src/+/4141863 * fix: utilityprocess spec on macOS * fix: build on windows Refs https://chromium-review.googlesource.com/c/chromium/src/+/4141863 * chore: fix lint * chore: bump chromium 111.0.5544.3 * chore: gen filenames.libcxx.gni * Add check for Executable+Writable handles in renderer processes. Refs https://chromium-review.googlesource.com/c/chromium/src/+/3774416 * fixup! Add check for Executable+Writable handles in renderer processes. * 4143761: [110] Disable SwiftShader for WebGL on M1 Macs. https://chromium-review.googlesource.com/c/chromium/src/+/4143761 (cherry picked from commit 2f74db3c2139424c416f92d9169aeaa8a2f9c1ec) * chore: bump chromium to 111.0.5555.0 * 56085: Remove hmac.h include from ssl.h. https://boringssl-review.googlesource.com/c/boringssl/+/56085 * 4167020: Remove forwarding headers https://chromium-review.googlesource.com/c/chromium/src/+/4167020 * chore: bump chromium to 111.0.5559.0 * 4181044: Restrict WebCursor usage to RenderWidgetHostViewAura https://chromium-review.googlesource.com/c/chromium/src/+/4181044 * 4189437: views: rename ink_drop_host_view to ink_drop_host https://chromium-review.googlesource.com/c/chromium/src/+/4189437 * chore: bump chromium to 111.0.5560.0 * 4167016: win7dep: remove non aeroglass code https://chromium-review.googlesource.com/c/chromium/src/+/4167016 * fixup after rebase: Remove forwarding header s https://chromium-review.googlesource.com/c/chromium/src/+/4167020 * 4125755: Reland "Reject getDisplayMedia calls without user activation" https://chromium-review.googlesource.com/c/chromium/src/+/4125755 * test: add workaround * chore: update patches * fix: alter coreModuleRegExp to prevent arm crash * Revert "fix: alter coreModuleRegExp to prevent arm crash" This reverts commit 7e50630c98137831a711c5abdbc8809e60cf1d73. * 4218354: Disable the use of preserve_most on arm64 Windows https://chromium-review.googlesource.com/c/v8/v8/+/4218354 * chore: review changes --------- Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> Co-authored-by: Charles Kerr <charles@charleskerr.com> Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com> Co-authored-by: deepak1556 <hop2deep@gmail.com> Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org> Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2023-02-03 12:43:42 +01:00
await w.webContents.executeJavaScript('document.createElement(\'video\').canPlayType(\'video/webm; codecs="vp8.0"\')', true);
const result = await w.webContents.executeJavaScript('runTest(true)', true);
expect(result).to.be.true();
2020-03-20 13:28:31 -07:00
});
});
describe('Shared Workers', () => {
2020-03-20 13:28:31 -07:00
afterEach(closeAllWindows);
it('can get multiple shared workers', async () => {
const w = new BrowserWindow({ show: false, webPreferences: { nodeIntegration: true, contextIsolation: false } });
const ready = once(ipcMain, 'ready');
2020-03-20 13:28:31 -07:00
w.loadFile(path.join(fixturesPath, 'api', 'shared-worker', 'shared-worker.html'));
await ready;
2020-03-20 13:28:31 -07:00
const sharedWorkers = w.webContents.getAllSharedWorkers();
2020-03-20 13:28:31 -07:00
expect(sharedWorkers).to.have.lengthOf(2);
expect(sharedWorkers[0].url).to.contain('shared-worker');
expect(sharedWorkers[1].url).to.contain('shared-worker');
});
it('can inspect a specific shared worker', async () => {
const w = new BrowserWindow({ show: false, webPreferences: { nodeIntegration: true, contextIsolation: false } });
const ready = once(ipcMain, 'ready');
2020-03-20 13:28:31 -07:00
w.loadFile(path.join(fixturesPath, 'api', 'shared-worker', 'shared-worker.html'));
await ready;
2020-03-20 13:28:31 -07:00
const sharedWorkers = w.webContents.getAllSharedWorkers();
const devtoolsOpened = once(w.webContents, 'devtools-opened');
2020-03-20 13:28:31 -07:00
w.webContents.inspectSharedWorkerById(sharedWorkers[0].id);
await devtoolsOpened;
const devtoolsClosed = once(w.webContents, 'devtools-closed');
2020-03-20 13:28:31 -07:00
w.webContents.closeDevTools();
await devtoolsClosed;
});
});
describe('login event', () => {
2020-03-20 13:28:31 -07:00
afterEach(closeAllWindows);
2020-03-20 13:28:31 -07:00
let server: http.Server;
let serverUrl: string;
let serverPort: number;
let proxyServer: http.Server;
let proxyServerPort: number;
before(async () => {
server = http.createServer((request, response) => {
if (request.url === '/no-auth') {
2020-03-20 13:28:31 -07:00
return response.end('ok');
}
if (request.headers.authorization) {
2020-03-20 13:28:31 -07:00
response.writeHead(200, { 'Content-type': 'text/plain' });
return response.end(request.headers.authorization);
}
response
.writeHead(401, { 'WWW-Authenticate': 'Basic realm="Foo"' })
2020-03-20 13:28:31 -07:00
.end('401');
});
({ port: serverPort, url: serverUrl } = await listen(server));
2020-03-20 13:28:31 -07:00
});
before(async () => {
proxyServer = http.createServer((request, response) => {
if (request.headers['proxy-authorization']) {
2020-03-20 13:28:31 -07:00
response.writeHead(200, { 'Content-type': 'text/plain' });
return response.end(request.headers['proxy-authorization']);
}
response
.writeHead(407, { 'Proxy-Authenticate': 'Basic realm="Foo"' })
2020-03-20 13:28:31 -07:00
.end();
});
proxyServerPort = (await listen(proxyServer)).port;
2020-03-20 13:28:31 -07:00
});
afterEach(async () => {
2020-03-20 13:28:31 -07:00
await session.defaultSession.clearAuthCache();
});
after(() => {
2020-03-20 13:28:31 -07:00
server.close();
proxyServer.close();
});
it('is emitted when navigating', async () => {
2020-03-20 13:28:31 -07:00
const [user, pass] = ['user', 'pass'];
const w = new BrowserWindow({ show: false });
let eventRequest: any;
let eventAuthInfo: any;
w.webContents.on('login', (event, request, authInfo, cb) => {
2020-03-20 13:28:31 -07:00
eventRequest = request;
eventAuthInfo = authInfo;
event.preventDefault();
cb(user, pass);
});
await w.loadURL(serverUrl);
const body = await w.webContents.executeJavaScript('document.documentElement.textContent');
expect(body).to.equal(`Basic ${Buffer.from(`${user}:${pass}`).toString('base64')}`);
expect(eventRequest.url).to.equal(serverUrl + '/');
expect(eventAuthInfo.isProxy).to.be.false();
expect(eventAuthInfo.scheme).to.equal('basic');
expect(eventAuthInfo.host).to.equal('127.0.0.1');
expect(eventAuthInfo.port).to.equal(serverPort);
expect(eventAuthInfo.realm).to.equal('Foo');
});
it('is emitted when a proxy requests authorization', async () => {
2020-03-20 13:28:31 -07:00
const customSession = session.fromPartition(`${Math.random()}`);
await customSession.setProxy({ proxyRules: `127.0.0.1:${proxyServerPort}`, proxyBypassRules: '<-loopback>' });
const [user, pass] = ['user', 'pass'];
const w = new BrowserWindow({ show: false, webPreferences: { session: customSession } });
let eventRequest: any;
let eventAuthInfo: any;
w.webContents.on('login', (event, request, authInfo, cb) => {
2020-03-20 13:28:31 -07:00
eventRequest = request;
eventAuthInfo = authInfo;
event.preventDefault();
cb(user, pass);
});
await w.loadURL(`${serverUrl}/no-auth`);
const body = await w.webContents.executeJavaScript('document.documentElement.textContent');
expect(body).to.equal(`Basic ${Buffer.from(`${user}:${pass}`).toString('base64')}`);
expect(eventRequest.url).to.equal(`${serverUrl}/no-auth`);
expect(eventAuthInfo.isProxy).to.be.true();
expect(eventAuthInfo.scheme).to.equal('basic');
expect(eventAuthInfo.host).to.equal('127.0.0.1');
expect(eventAuthInfo.port).to.equal(proxyServerPort);
expect(eventAuthInfo.realm).to.equal('Foo');
});
it('cancels authentication when callback is called with no arguments', async () => {
2020-03-20 13:28:31 -07:00
const w = new BrowserWindow({ show: false });
w.webContents.on('login', (event, request, authInfo, cb) => {
2020-03-20 13:28:31 -07:00
event.preventDefault();
cb();
});
await w.loadURL(serverUrl);
const body = await w.webContents.executeJavaScript('document.documentElement.textContent');
expect(body).to.equal('401');
});
});
describe('page-title-updated event', () => {
afterEach(closeAllWindows);
it('is emitted with a full title for pages with no navigation', async () => {
const bw = new BrowserWindow({ show: false });
await bw.loadURL('about:blank');
bw.webContents.executeJavaScript('child = window.open("", "", "show=no"); null');
const [, child] = await once(app, 'web-contents-created') as [any, WebContents];
bw.webContents.executeJavaScript('child.document.title = "new title"');
const [, title] = await once(child, 'page-title-updated') as [any, string];
expect(title).to.equal('new title');
});
});
describe('context-menu event', () => {
afterEach(closeAllWindows);
it('emits when right-clicked in page', async () => {
const w = new BrowserWindow({ show: false });
await w.loadFile(path.join(fixturesPath, 'pages', 'base-page.html'));
const promise = once(w.webContents, 'context-menu') as Promise<[any, Electron.ContextMenuParams]>;
// Simulate right-click to create context-menu event.
const opts = { x: 0, y: 0, button: 'right' as const };
w.webContents.sendInputEvent({ ...opts, type: 'mouseDown' });
w.webContents.sendInputEvent({ ...opts, type: 'mouseUp' });
const [, params] = await promise;
expect(params.pageURL).to.equal(w.webContents.getURL());
expect(params.frame).to.be.an('object');
expect(params.x).to.be.a('number');
expect(params.y).to.be.a('number');
});
// Skipping due to lack of native click support.
it.skip('emits the correct number of times when right-clicked in page', async () => {
const w = new BrowserWindow({ show: true });
await w.loadFile(path.join(fixturesPath, 'pages', 'base-page.html'));
let contextMenuEmitCount = 0;
w.webContents.on('context-menu', () => {
contextMenuEmitCount++;
});
// TODO(samuelmaddock): Perform native right-click. We've tried then
// dropped robotjs and nutjs so for now this is a manual test.
await once(w.webContents, 'context-menu');
await setTimeout(100);
expect(contextMenuEmitCount).to.equal(1);
});
it('emits when right-clicked in page in a draggable region', async () => {
const w = new BrowserWindow({ show: false });
if (process.platform === 'win32') {
w.on('system-context-menu', (event) => { event.preventDefault(); });
}
await w.loadFile(path.join(fixturesPath, 'pages', 'draggable-page.html'));
const promise = once(w.webContents, 'context-menu') as Promise<[any, Electron.ContextMenuParams]>;
// Simulate right-click to create context-menu event.
const midPoint = w.getBounds().width / 2;
const opts = { x: midPoint, y: midPoint, button: 'right' as const };
w.webContents.sendInputEvent({ ...opts, type: 'mouseDown' });
w.webContents.sendInputEvent({ ...opts, type: 'mouseUp' });
const [, params] = await promise;
expect(params.pageURL).to.equal(w.webContents.getURL());
expect(params.frame).to.be.an('object');
expect(params.x).to.be.a('number');
expect(params.y).to.be.a('number');
});
it('emits when right clicked in a WebContentsView', async () => {
const w = new BaseWindow({ show: false });
const mainView = new WebContentsView({
webPreferences: {
preload: path.join(__dirname, 'preload.js')
}
});
const draggablePage = path.join(fixturesPath, 'pages', 'draggable-page.html');
await mainView.webContents.loadFile(draggablePage);
w.contentView.addChildView(mainView);
const { width, height } = w.getContentBounds();
mainView.setBounds({ x: 0, y: 0, width, height });
const promise = once(mainView.webContents, 'context-menu') as Promise<[any, Electron.ContextMenuParams]>;
// Simulate right-click to create context-menu event.
const opts = { x: 0, y: 0, button: 'right' as const };
mainView.webContents.sendInputEvent({ ...opts, type: 'mouseDown' });
mainView.webContents.sendInputEvent({ ...opts, type: 'mouseUp' });
const [, params] = await promise;
expect(params.pageURL).to.equal(mainView.webContents.getURL());
expect(params.frame).to.be.an('object');
expect(params.x).to.be.a('number');
expect(params.y).to.be.a('number');
});
it('emits when right clicked in a BrowserWindow with vibrancy', async () => {
const w = new BrowserWindow({ show: false, vibrancy: 'titlebar' });
await w.loadFile(path.join(fixturesPath, 'pages', 'draggable-page.html'));
const promise = once(w.webContents, 'context-menu') as Promise<[any, Electron.ContextMenuParams]>;
// Simulate right-click to create context-menu event.
const opts = { x: 0, y: 0, button: 'right' as const };
w.webContents.sendInputEvent({ ...opts, type: 'mouseDown' });
w.webContents.sendInputEvent({ ...opts, type: 'mouseUp' });
const [, params] = await promise;
expect(params.pageURL).to.equal(w.webContents.getURL());
expect(params.frame).to.be.an('object');
expect(params.x).to.be.a('number');
expect(params.y).to.be.a('number');
});
});
describe('close() method', () => {
build: use github actions for windows (#44136) * build: test windows runner * build: try build windows on windows? * build: take win/cross changes * build: use bash as default shell always * build: configure git for windows build tools * build: bash as default * build: configure windows correctly * build: use sha1sum * build: force windows cipd init and python3 existence * just pain * build: restore cache on windows * build: use build-tools gclient * build: sync gclient vars to build windows job * build: output depshash for debugging * build: past sam was a silly goose * build: depshash logging * build: force lf endings for lock and DEPS * build: platform strings are hard * build: checkout on windows host * sup * no check * idk * sigh * ... * no double checkout * build: yolo some stuff * build: run gn-check for windows on linux hosts for speed * use container... * cry ? * build: e d * e d * no log * fix toolchain on windows cross check * build: use powershell to add mksnapshot_args * build: enable x86 and arm64 windows builds too * clean up * maybe not needed * build: keep action around for post step * build: configure git global on win * build: ia32 zip manifest * build: no patch depot_tools for tests * build: get arm64 windows closer to working * build: windows tar is ass * 32 bit on 32 bit * maybe bash * build: set up nodejs * correct windows sharding * fix some spec runner stuff * fix windows tests * overwrite -Force * sigh * screen res * wat * logs * ... more logs * line endings will be the death of me * remove 1080p force thing * vsctools + logging * disable some fullscreen tests on GHA * no progress * run all CI * install visual studio on arm64 * windows hax for non windows * maybe arm sdk * clean up depshash logic * build: use single check per platform * ensure clean args * fix loop * remove debug * update default build image sha for dispatch * plzzzz * one more try * arm64 vctools * sad * build: fix non-dispatch windows gn check * chore: debug datadog-ci location * chore: update build-tools for newer toolchain * chore: set path for datadog-ci * try this * chore: fixup gn check * fixup gn-check some more * fixup windows gn check * chore: fixup windows gn check * test: use cmd for Windows testing * fixup use cmd for testing on Windows * fixup windows GN check * fixup npm config arch for x86 * Can we set test files via powershell * fixup to set test files via powershell * fixup set test files via powershell * Don't check cross instance cache disk space on Windows * Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing * fixup Use separate step to set env variables for testing (AGAIN) * use powershell if in powershell * fixup use powershell if in powershell * chore: remove no longer needed changes to depot_tools xref: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/5669094 and https://chromium-review.googlesource.com/c/chromium/src/+/5844046 * chore: try using 7zip on Windows to extract tarball * Revert "chore: try using 7zip on Windows to extract tarball" This reverts commit c7432b6a37857fd0746b8f1776fbd1103dba0b85. * test: debug failing tests on GHA windows * fix: ftbfs when including simdjson in Node.js (cherry picked from commit 48e44c40d61b7aa843a990d4e0c8dec676b4ce8f) * chore: try to track down Windows testing hang * use correct timeout * try this * see if this helps * try to figure out why node is running * shard tests to try to narrow down WOA lockup * try to narrow down problem test * Narrow down blocking test more * do we need a combo to repro * see if this cleans up the tests * fixup navigator.usb test * remove logging from problematic tests * Revert "shard tests to try to narrow down WOA lockup" This reverts commit a1806583769678491814cb8b008131c32be4e8fb. * remove logging * debug keyboard test * add timeout for Windows since arm64 sometimes hangs * see if this helps * put back original timeout * try to use screenCapture to get screenshots of what is going on on WOA * try using electron screencapture to debug WOA hang * chore: turn off privacy experience * run screenshot on both shards * fixup screencap * try to narrow down hanging spec * chore: cleanup servers left open * cleanup tests * Revert "try to narrow down hanging spec" This reverts commit a0f959f5382f4012a9919ac535d42c5333eb7d5f. * cleanup test debugging * fixup extensions spec * cleanup unneeded items * run wtf with 2 shards instead of 6 * Revert "run wtf with 2 shards instead of 6" This reverts commit ca2d282129ee42c535d80f9876d6fa0dc6c08344. * debug windows version on woa * dump more info * Get detailed CPU info * revert debugging * use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * fixup use same args as AppVeyor WOA for GHA WOA * try to track down which tests trigger hang * one or more of these combinations should hang * break up web contents spec to find hang * further break down api-web-contents to find hang * test: ensure all webContents are closed * test: fix require is not defined error * see if api-web-contents spec is now good * test: ensure all webContents are closed * Revert "try to track down which tests trigger hang" This reverts commit 07298d6ffeb4873ef7615a8ec3d1a6696e354ff4. * chore: use alternate location for windows toolchain * Reapply "try to track down which tests trigger hang" This reverts commit 0321f76d01069ef325339b6fe6ed39700eae2b6b. * try to narrow down problem test * fix TEST_SHARD env var * no, really fix TEST_SHARD env var * see if this fixes it * test: cleanup any remaining windows and webcontents * see if new cleanup helps * dont destroy webcontents for now * fixup dont destroy webcontents for now * Only cleanup right before process.exit * see if this fixes the hang * actually destroy webcontents * Revert "Reapply "try to track down which tests trigger hang"" This reverts commit cdee7de049ce6bb5f67bbcc64882c56aa2c73027. * see if this helps * Revert "see if this helps" This reverts commit 9a15a69cf7dbc456db7a61efa5b6870535bae993. * Is it all about the web contents? * it is all about the webcontents but which one? * Narrow down problem webcontents test * try to speed up git install on WOA * disable problematic test on WOA * remove debugging * remove debugging from choco installs * Revert "disable problematic test on WOA" This reverts commit e060fb0839b73d53cfde1f8acdca634f8e267937. * Revert "remove debugging" This reverts commit f18dd8b1a555f56bb06d0ea996a6eff31b424bf1. * run against all the tests in the failing shard * don't run visibility tests first * remove debugging * 3 is a magic number * Revert "3 is a magic number" This reverts commit 36b91ccf9f03a4b34230cd69ceca482f7d8428c1. * match what Appveyor runs exactly * Revert "match what Appveyor runs exactly" This reverts commit 7260dd432216c62696e4bc864930f17c857eabbe. * chore: sort files alphabetically * find out what spec is leaving stuff open * chore: Checkout PR HEAD commit instead of merge commit * try using app.exit instead of process.exit * test: cleanup BrowserWindows and webContents * Revert "chore: sort files alphabetically" This reverts commit d9e217ffb1522076e150fce9e43a31bf56716acb. * chore: use win32 to match process.platform Needed for build-tools to download from PRs * chore: cache yarn dir * fixup cache yarn * fixup use win32 to match process.platform * fixup use win32 to match process.platform * fixup cache yarn * Add debugging for WOA hang * Add debugging for failing keyboard lock test * Revert "Add debugging for WOA hang" This reverts commit 8df03d568d15a269e4026140d1158e8cdf551dec. * try using process.kill * add more debugging to keyboard.lock test * Revert "Add debugging for failing keyboard lock test" * remove debugging * test: disable keyboard.lock on Windows * test: disable fullscreen tests on Windows * test: only force test suite exit on WOA * fixup test: only force test suite exit on WOA * cleanup tests * extract yarn caching/install to action * try using bash to run windows tests * remove left over debugging * standardize on 'win' for Windows builds * use 'x86' for arch for manifest files * fixup try using bash to run windows tests * fixup use 'x86' for arch for manifest files * standardize on 'win' for Windows builds * fixup use 'x86' for arch for manifest files * fixup try using bash to run windows tests --------- Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org> Co-authored-by: Charles Kerr <charles@charleskerr.com>
2024-12-12 08:51:24 -08:00
afterEach(async () => {
await closeAllWindows();
await cleanupWebContents();
});
it('closes when close() is called', async () => {
const w = (webContents as typeof ElectronInternal.WebContents).create();
const destroyed = once(w, 'destroyed');
w.close();
await destroyed;
expect(w.isDestroyed()).to.be.true();
});
it('closes when close() is called after loading a page', async () => {
const w = (webContents as typeof ElectronInternal.WebContents).create();
await w.loadURL('about:blank');
const destroyed = once(w, 'destroyed');
w.close();
await destroyed;
expect(w.isDestroyed()).to.be.true();
});
it('can be GCed before loading a page', async () => {
const v8Util = process._linkedBinding('electron_common_v8_util');
let registry: FinalizationRegistry<unknown> | null = null;
const cleanedUp = new Promise<number>(resolve => {
registry = new FinalizationRegistry(resolve as any);
});
(() => {
const w = (webContents as typeof ElectronInternal.WebContents).create();
registry!.register(w, 42);
})();
const i = setInterval(() => v8Util.requestGarbageCollectionForTesting(), 100);
defer(() => clearInterval(i));
expect(await cleanedUp).to.equal(42);
});
it('causes its parent browserwindow to be closed', async () => {
const w = new BrowserWindow({ show: false });
await w.loadURL('about:blank');
const closed = once(w, 'closed');
w.webContents.close();
await closed;
expect(w.isDestroyed()).to.be.true();
});
it('ignores beforeunload if waitForBeforeUnload not specified', async () => {
const w = (webContents as typeof ElectronInternal.WebContents).create();
await w.loadURL('about:blank');
await w.executeJavaScript('window.onbeforeunload = () => "hello"; null');
w.on('will-prevent-unload', () => { throw new Error('unexpected will-prevent-unload'); });
const destroyed = once(w, 'destroyed');
w.close();
await destroyed;
expect(w.isDestroyed()).to.be.true();
});
it('runs beforeunload if waitForBeforeUnload is specified', async () => {
const w = (webContents as typeof ElectronInternal.WebContents).create();
await w.loadURL('about:blank');
await w.executeJavaScript('window.onbeforeunload = () => "hello"; null');
const willPreventUnload = once(w, 'will-prevent-unload');
w.close({ waitForBeforeUnload: true });
await willPreventUnload;
expect(w.isDestroyed()).to.be.false();
});
it('overriding beforeunload prevention results in webcontents close', async () => {
const w = (webContents as typeof ElectronInternal.WebContents).create();
await w.loadURL('about:blank');
await w.executeJavaScript('window.onbeforeunload = () => "hello"; null');
w.once('will-prevent-unload', e => e.preventDefault());
const destroyed = once(w, 'destroyed');
w.close({ waitForBeforeUnload: true });
await destroyed;
expect(w.isDestroyed()).to.be.true();
});
});
describe('content-bounds-updated event', () => {
afterEach(closeAllWindows);
it('emits when moveTo is called', async () => {
const w = new BrowserWindow({ show: false });
w.loadURL('about:blank');
w.webContents.executeJavaScript('window.moveTo(50, 50)', true);
const [, rect] = await once(w.webContents, 'content-bounds-updated') as [any, Electron.Rectangle];
const { width, height } = w.getBounds();
expect(rect).to.deep.equal({
x: 50,
y: 50,
width,
height
});
await new Promise(setImmediate);
expect(w.getBounds().x).to.equal(50);
expect(w.getBounds().y).to.equal(50);
});
it('emits when resizeTo is called', async () => {
const w = new BrowserWindow({ show: false });
w.loadURL('about:blank');
w.webContents.executeJavaScript('window.resizeTo(100, 100)', true);
const [, rect] = await once(w.webContents, 'content-bounds-updated') as [any, Electron.Rectangle];
const { x, y } = w.getBounds();
expect(rect).to.deep.equal({
x,
y,
width: 100,
height: 100
});
await new Promise(setImmediate);
expect({
width: w.getBounds().width,
height: w.getBounds().height
}).to.deep.equal(process.platform === 'win32'
? {
// The width is reported as being larger on Windows? I'm not sure why
// this is.
width: 136,
height: 100
}
: {
width: 100,
height: 100
});
});
it('does not change window bounds if cancelled', async () => {
const w = new BrowserWindow({ show: false });
const { width, height } = w.getBounds();
w.loadURL('about:blank');
w.webContents.once('content-bounds-updated', e => e.preventDefault());
await w.webContents.executeJavaScript('window.resizeTo(100, 100)', true);
await new Promise(setImmediate);
expect(w.getBounds().width).to.equal(width);
expect(w.getBounds().height).to.equal(height);
});
});
2020-03-20 13:28:31 -07:00
});