feat: add excludeUrls and modify urls in WebRequestFilter for better URL filtering (#44692)
* feat: add excludeUrls to web request filter * refactor: add deprecated field * test: update tests * lint: newline * docs: improve API doc * fix: add is filter defined property to match all urls * refactor: remove includeUrls * refactor: remove typescript binding * refactor: all_url * refactor: remove isDefined methods * refactor: remove comment * fix: logic * docs: add to breaking changes
This commit is contained in:
parent
7dfcec931a
commit
02be7c1185
6 changed files with 150 additions and 32 deletions
|
@ -101,6 +101,12 @@ describe('webRequest module', () => {
|
|||
await expect(ajax(defaultURL)).to.eventually.be.rejected();
|
||||
});
|
||||
|
||||
it('matches all requests when no filters are defined', async () => {
|
||||
ses.webRequest.onBeforeRequest(cancel);
|
||||
await expect(ajax(`${defaultURL}nofilter/test`)).to.eventually.be.rejected();
|
||||
await expect(ajax(`${defaultURL}nofilter2/test`)).to.eventually.be.rejected();
|
||||
});
|
||||
|
||||
it('can filter URLs', async () => {
|
||||
const filter = { urls: [defaultURL + 'filter/*'] };
|
||||
ses.webRequest.onBeforeRequest(filter, cancel);
|
||||
|
@ -109,6 +115,36 @@ describe('webRequest module', () => {
|
|||
await expect(ajax(`${defaultURL}filter/test`)).to.eventually.be.rejected();
|
||||
});
|
||||
|
||||
it('can filter all URLs with syntax <all_urls>', async () => {
|
||||
const filter = { urls: ['<all_urls>'] };
|
||||
ses.webRequest.onBeforeRequest(filter, cancel);
|
||||
await expect(ajax(`${defaultURL}filter/test`)).to.eventually.be.rejected();
|
||||
await expect(ajax(`${defaultURL}nofilter/test`)).to.eventually.be.rejected();
|
||||
});
|
||||
|
||||
it('can filter URLs with overlapping patterns of urls and excludeUrls', async () => {
|
||||
// If filter matches both urls and excludeUrls, it should be excluded.
|
||||
const filter = { urls: [defaultURL + 'filter/*'], excludeUrls: [defaultURL + 'filter/test'] };
|
||||
ses.webRequest.onBeforeRequest(filter, cancel);
|
||||
const { data } = await ajax(`${defaultURL}filter/test`);
|
||||
expect(data).to.equal('/filter/test');
|
||||
});
|
||||
|
||||
it('can filter URLs with multiple excludeUrls patterns', async () => {
|
||||
const filter = { urls: [defaultURL + 'filter/*'], excludeUrls: [defaultURL + 'filter/exclude1/*', defaultURL + 'filter/exclude2/*'] };
|
||||
ses.webRequest.onBeforeRequest(filter, cancel);
|
||||
expect((await ajax(`${defaultURL}filter/exclude1/test`)).data).to.equal('/filter/exclude1/test');
|
||||
expect((await ajax(`${defaultURL}filter/exclude2/test`)).data).to.equal('/filter/exclude2/test');
|
||||
// expect non-excluded URL to pass filter
|
||||
await expect(ajax(`${defaultURL}filter/test`)).to.eventually.be.rejected();
|
||||
});
|
||||
|
||||
it('can filter URLs with empty excludeUrls', async () => {
|
||||
const filter = { urls: [defaultURL + 'filter/*'], excludeUrls: [] };
|
||||
ses.webRequest.onBeforeRequest(filter, cancel);
|
||||
await expect(ajax(`${defaultURL}filter/test`)).to.eventually.be.rejected();
|
||||
});
|
||||
|
||||
it('can filter URLs and types', async () => {
|
||||
const filter1: Electron.WebRequestFilter = { urls: [defaultURL + 'filter/*'], types: ['xhr'] };
|
||||
ses.webRequest.onBeforeRequest(filter1, cancel);
|
||||
|
@ -122,6 +158,21 @@ describe('webRequest module', () => {
|
|||
expect((await ajax(`${defaultURL}filter/test`)).data).to.equal('/filter/test');
|
||||
});
|
||||
|
||||
it('can filter URLs, excludeUrls and types', async () => {
|
||||
const filter1: Electron.WebRequestFilter = { urls: [defaultURL + 'filter/*'], excludeUrls: [defaultURL + 'exclude/*'], types: ['xhr'] };
|
||||
ses.webRequest.onBeforeRequest(filter1, cancel);
|
||||
|
||||
expect((await ajax(`${defaultURL}nofilter/test`)).data).to.equal('/nofilter/test');
|
||||
expect((await ajax(`${defaultURL}exclude/test`)).data).to.equal('/exclude/test');
|
||||
await expect(ajax(`${defaultURL}filter/test`)).to.eventually.be.rejected();
|
||||
|
||||
const filter2: Electron.WebRequestFilter = { urls: [defaultURL + 'filter/*'], excludeUrls: [defaultURL + 'exclude/*'], types: ['stylesheet'] };
|
||||
ses.webRequest.onBeforeRequest(filter2, cancel);
|
||||
expect((await ajax(`${defaultURL}nofilter/test`)).data).to.equal('/nofilter/test');
|
||||
expect((await ajax(`${defaultURL}filter/test`)).data).to.equal('/filter/test');
|
||||
expect((await ajax(`${defaultURL}exclude/test`)).data).to.equal('/exclude/test');
|
||||
});
|
||||
|
||||
it('receives details object', async () => {
|
||||
ses.webRequest.onBeforeRequest((details, callback) => {
|
||||
expect(details.id).to.be.a('number');
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue