fix(GeolocateControl): include all GeolocationPositionError properties in error event #13597
+37
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Addresses: #13576
Problem
In versions 3.15.0+, the GeolocateControl error event is missing
code,message,PERMISSION_DENIED,POSITION_UNAVAILABLE, andTIMEOUTproperties. Users only receive{ target, type }instead of the full error information.Root Cause
GeolocationPositionErroris a native DOM object with non-enumerable properties. When passed directly tonew Event('error', error), theEventconstructor usesObject.assign()which doesn't copy non-enumerable properties.Solution
Explicitly extract properties from
GeolocationPositionErrorwhen creating the error event, matching the pattern already used for thegeolocateevent (fixed in commit 9a1c893).Before:
After:
Here is a screenshot where I tested it in Firefox

Launch Checklist
@mapbox/map-design-team@mapbox/static-apisif this PR includes style spec API or visual changes. (N/A)@mapbox/gl-nativeif this PR includes shader changes or needs a native port. (N/A)@mapbox/gl-nativeif this PR disables any test because it also needs to be disabled on their side. (N/A)gl-nativeto groom in the MAPSNAT JIRA queue if this PR includes shader changes or features not present in the native side or if it disables a test that's not disabled there. (N/A)