For Firefox it seems that PERMISSION_DENIED is raised only if “Never share” is selected; if the dialog is dismissed or “Not now” is selected, effectively nothing happens – even on mozillas geolocation demo if you dismiss the permissions UI nothing happens.
This means that getCurrentPosition can return either because the user closed the confirmation UI, or because it successfully started it asynchronous request – there doesn’t appear to be a way to discriminate between the two.
https://bugzilla.mozilla.org/show_bug.cgi?id=675533