Protocol filter: Support home path mapped to UNC share
This commit is contained in:
parent
7d397167cd
commit
c72c5a0bdc
2 changed files with 26 additions and 4 deletions
|
@ -29,7 +29,13 @@ export function _urlToPath(
|
||||||
options?: { isWindows: boolean }
|
options?: { isWindows: boolean }
|
||||||
): string {
|
): string {
|
||||||
const decoded = decodeURIComponent(targetUrl);
|
const decoded = decodeURIComponent(targetUrl);
|
||||||
const withoutScheme = decoded.slice(options?.isWindows ? 8 : 7);
|
|
||||||
|
// We generally expect URLs to start with file:// or file:/// here, but for users with
|
||||||
|
// their home directory redirected to a UNC share, it will start with //.
|
||||||
|
const withoutScheme = decoded.startsWith('//')
|
||||||
|
? decoded
|
||||||
|
: decoded.slice(options?.isWindows ? 8 : 7);
|
||||||
|
|
||||||
const withoutQuerystring = _eliminateAllAfterCharacter(withoutScheme, '?');
|
const withoutQuerystring = _eliminateAllAfterCharacter(withoutScheme, '?');
|
||||||
const withoutHash = _eliminateAllAfterCharacter(withoutQuerystring, '#');
|
const withoutHash = _eliminateAllAfterCharacter(withoutQuerystring, '#');
|
||||||
|
|
||||||
|
|
|
@ -67,8 +67,24 @@ describe('Protocol Filter', () => {
|
||||||
expect(actual).to.equal(expected);
|
expect(actual).to.equal(expected);
|
||||||
});
|
});
|
||||||
|
|
||||||
// this seems to be the only way to get a relative path through Electron
|
it('handles UNC path', () => {
|
||||||
it('handles SMB share path', () => {
|
const path = '//share/path';
|
||||||
|
const expected = '//share/path';
|
||||||
|
|
||||||
|
const actual = _urlToPath(path);
|
||||||
|
expect(actual).to.equal(expected);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('handles UNC path on windows', () => {
|
||||||
|
const path = '//share/path';
|
||||||
|
const expected = '//share/path';
|
||||||
|
const isWindows = true;
|
||||||
|
|
||||||
|
const actual = _urlToPath(path, { isWindows });
|
||||||
|
expect(actual).to.equal(expected);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('handles simple relative path', () => {
|
||||||
const path = 'file://relative/path';
|
const path = 'file://relative/path';
|
||||||
const expected = 'relative/path';
|
const expected = 'relative/path';
|
||||||
|
|
||||||
|
@ -76,7 +92,7 @@ describe('Protocol Filter', () => {
|
||||||
expect(actual).to.equal(expected);
|
expect(actual).to.equal(expected);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('handles SMB share path on windows', () => {
|
it('handles simple relative path', () => {
|
||||||
const path = 'file://relative/path';
|
const path = 'file://relative/path';
|
||||||
const expected = 'elative/path';
|
const expected = 'elative/path';
|
||||||
const isWindows = true;
|
const isWindows = true;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue