fix: second argument to shell.writeShortcutLink is optional (#49501)

fix: second argument to shell.writeShortcutLink is optional

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
This commit is contained in:
trop[bot]
2026-01-26 14:29:56 +01:00
committed by GitHub
parent db6b22a8e5
commit ac4efed3d1
2 changed files with 24 additions and 5 deletions

View File

@@ -112,11 +112,20 @@ bool WriteShortcutLink(const base::FilePath& shortcut_path,
gin::Arguments* const args) {
base::win::ShortcutOperation operation =
base::win::ShortcutOperation::kCreateAlways;
args->GetNext(&operation);
auto options = gin::Dictionary::CreateEmpty(args->isolate());
if (!args->GetNext(&options)) {
args->ThrowError();
return false;
gin::Dictionary options = gin::Dictionary::CreateEmpty(args->isolate());
v8::Local<v8::Value> peek = args->PeekNext();
if (peek->IsObject()) {
if (!args->GetNext(&options)) {
args->ThrowError();
return false;
}
} else {
args->GetNext(&operation);
if (!args->GetNext(&options)) {
args->ThrowError();
return false;
}
}
base::win::ShortcutProperties properties;

View File

@@ -172,6 +172,16 @@ describe('shell module', () => {
expect(fs.existsSync(tmpShortcut)).to.be.true();
});
it('writes the shortcut with omitted operation (defaults to create)', () => {
expect(shell.writeShortcutLink(tmpShortcut, shortcutOptions)).to.be.true();
expect(fs.existsSync(tmpShortcut)).to.be.true();
expect(shell.readShortcutLink(tmpShortcut)).to.deep.equal(shortcutOptions);
const newOptions = { ...shortcutOptions, description: 'new description' };
expect(shell.writeShortcutLink(tmpShortcut, newOptions)).to.be.true();
expect(shell.readShortcutLink(tmpShortcut)).to.deep.equal(newOptions);
});
it('correctly sets the fields', () => {
expect(shell.writeShortcutLink(tmpShortcut, shortcutOptions)).to.be.true();
expect(shell.readShortcutLink(tmpShortcut)).to.deep.equal(shortcutOptions);