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