fix: protocol.handle
not intercepting file protocol (#39048)
fix: protocol.handle not intercepting file protocol
This commit is contained in:
parent
f959fb0c96
commit
b142fce229
2 changed files with 23 additions and 2 deletions
|
@ -9,7 +9,7 @@ const { registerSchemesAsPrivileged, getStandardSchemes, Protocol } = process._l
|
|||
const ERR_FAILED = -2;
|
||||
const ERR_UNEXPECTED = -9;
|
||||
|
||||
const isBuiltInScheme = (scheme: string) => scheme === 'http' || scheme === 'https';
|
||||
const isBuiltInScheme = (scheme: string) => ['http', 'https', 'file'].includes(scheme);
|
||||
|
||||
function makeStreamFromPipe (pipe: any): ReadableStream {
|
||||
const buf = new Uint8Array(1024 * 1024 /* 1 MB */);
|
||||
|
|
|
@ -1114,13 +1114,34 @@ describe('protocol module', () => {
|
|||
await expect(net.fetch('test-scheme://foo')).to.eventually.be.rejectedWith(/ERR_UNKNOWN_URL_SCHEME/);
|
||||
});
|
||||
|
||||
it('receives requests to an existing scheme', async () => {
|
||||
it('receives requests to the existing https scheme', async () => {
|
||||
protocol.handle('https', (req) => new Response('hello ' + req.url));
|
||||
defer(() => { protocol.unhandle('https'); });
|
||||
const body = await net.fetch('https://foo').then(r => r.text());
|
||||
expect(body).to.equal('hello https://foo/');
|
||||
});
|
||||
|
||||
it('receives requests to the existing file scheme', (done) => {
|
||||
const filePath = path.join(__dirname, 'fixtures', 'pages', 'a.html');
|
||||
|
||||
protocol.handle('file', (req) => {
|
||||
let file;
|
||||
if (process.platform === 'win32') {
|
||||
file = `file:///${filePath.replace(/\\/g, '/')}`;
|
||||
} else {
|
||||
file = `file://${filePath}`;
|
||||
}
|
||||
|
||||
if (req.url === file) done();
|
||||
return new Response(req.url);
|
||||
});
|
||||
|
||||
defer(() => { protocol.unhandle('file'); });
|
||||
|
||||
const w = new BrowserWindow();
|
||||
w.loadFile(filePath);
|
||||
});
|
||||
|
||||
it('receives requests to an existing scheme when navigating', async () => {
|
||||
protocol.handle('https', (req) => new Response('hello ' + req.url));
|
||||
defer(() => { protocol.unhandle('https'); });
|
||||
|
|
Loading…
Reference in a new issue