script/dom/geolocation/
geolocationcoordinates.rs1use dom_struct::dom_struct;
6use script_bindings::codegen::GenericBindings::GeolocationCoordinatesBinding::GeolocationCoordinatesMethods;
7use script_bindings::num::Finite;
8use script_bindings::reflector::{Reflector, reflect_dom_object};
9use script_bindings::root::DomRoot;
10use script_bindings::script_runtime::CanGc;
11
12use crate::dom::globalscope::GlobalScope;
13
14#[dom_struct]
15pub struct GeolocationCoordinates {
16 reflector_: Reflector,
17 accuracy: Finite<f64>,
18 latitude: Finite<f64>,
19 longitude: Finite<f64>,
20 altitude: Option<Finite<f64>>,
21 altitude_accuracy: Option<Finite<f64>>,
22 heading: Option<Finite<f64>>,
23 speed: Option<Finite<f64>>,
24}
25
26impl GeolocationCoordinates {
27 fn new_inherited(
28 accuracy: Finite<f64>,
29 latitude: Finite<f64>,
30 longitude: Finite<f64>,
31 altitude: Option<Finite<f64>>,
32 altitude_accuracy: Option<Finite<f64>>,
33 heading: Option<Finite<f64>>,
34 speed: Option<Finite<f64>>,
35 ) -> Self {
36 GeolocationCoordinates {
37 reflector_: Reflector::new(),
38 accuracy,
39 latitude,
40 longitude,
41 altitude,
42 altitude_accuracy,
43 heading,
44 speed,
45 }
46 }
47
48 #[expect(unused, clippy::too_many_arguments)]
49 pub(crate) fn new(
50 global: &GlobalScope,
51 accuracy: Finite<f64>,
52 latitude: Finite<f64>,
53 longitude: Finite<f64>,
54 altitude: Option<Finite<f64>>,
55 altitude_accuracy: Option<Finite<f64>>,
56 heading: Option<Finite<f64>>,
57 speed: Option<Finite<f64>>,
58 can_gc: CanGc,
59 ) -> DomRoot<Self> {
60 reflect_dom_object(
61 Box::new(Self::new_inherited(
62 accuracy,
63 latitude,
64 longitude,
65 altitude,
66 altitude_accuracy,
67 heading,
68 speed,
69 )),
70 global,
71 can_gc,
72 )
73 }
74}
75
76impl GeolocationCoordinatesMethods<crate::DomTypeHolder> for GeolocationCoordinates {
77 fn Accuracy(&self) -> Finite<f64> {
78 self.accuracy
79 }
80
81 fn Latitude(&self) -> Finite<f64> {
82 self.latitude
83 }
84
85 fn Longitude(&self) -> Finite<f64> {
86 self.longitude
87 }
88
89 fn GetAltitude(&self) -> Option<Finite<f64>> {
90 self.altitude
91 }
92
93 fn GetAltitudeAccuracy(&self) -> Option<Finite<f64>> {
94 self.altitude_accuracy
95 }
96
97 fn GetHeading(&self) -> Option<Finite<f64>> {
98 self.heading
99 }
100
101 fn GetSpeed(&self) -> Option<Finite<f64>> {
102 self.speed
103 }
104}