Насколько мне известно, WebExtensions не может записывать в произвольные папки даже при вмешательстве пользователя.
Однако вы можете частично выполнить свое требование, если согласитесь использовать подпапку в папке donwloads по умолчанию.
browser.downloads
API позволяет указать «рекомендуемое имя файла», в котором находится папка. Это может быть только относительный путь, и он относится к папке по умолчанию.
Если вы сами запускаете загрузку:
function dowloadToFolder(url, name, subfolder) {
browser.downloads.download({
url: url,
filename: `${subfolder}/${name}`
});
}
Если вы не знаете окончательного имени или пользователь инициирует загрузку, к сожалению, Firefox не имеет эквивалента onDeterminingFilename
события Chrome . Но для массового загрузчика вы должны быть тем, кто его инициирует, и незнание того, какое имя файла будет сообщать сервер, в принципе можно проверить с помощью запроса HEAD перед загрузкой (не проверял).