fidl_fuchsia_accessibility_scene/
fidl_fuchsia_accessibility_scene.rs

1// WARNING: This file is machine generated by fidlgen.
2
3#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::client::QueryResponseFut;
8use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
9use fidl::endpoints::{ControlHandle as _, Responder as _};
10pub use fidl_fuchsia_accessibility_scene_common::*;
11use futures::future::{self, MaybeDone, TryFutureExt};
12use zx_status;
13
14#[derive(Debug, PartialEq)]
15pub struct ProviderCreateViewRequest {
16    pub a11y_view_token: fidl_fuchsia_ui_views::ViewCreationToken,
17    pub proxy_viewport_token: fidl_fuchsia_ui_views::ViewportCreationToken,
18}
19
20impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for ProviderCreateViewRequest {}
21
22#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
23pub struct ProviderMarker;
24
25impl fidl::endpoints::ProtocolMarker for ProviderMarker {
26    type Proxy = ProviderProxy;
27    type RequestStream = ProviderRequestStream;
28    #[cfg(target_os = "fuchsia")]
29    type SynchronousProxy = ProviderSynchronousProxy;
30
31    const DEBUG_NAME: &'static str = "fuchsia.accessibility.scene.Provider";
32}
33impl fidl::endpoints::DiscoverableProtocolMarker for ProviderMarker {}
34
35pub trait ProviderProxyInterface: Send + Sync {
36    fn r#create_view(
37        &self,
38        a11y_view_token: fidl_fuchsia_ui_views::ViewCreationToken,
39        proxy_viewport_token: fidl_fuchsia_ui_views::ViewportCreationToken,
40    ) -> Result<(), fidl::Error>;
41}
42#[derive(Debug)]
43#[cfg(target_os = "fuchsia")]
44pub struct ProviderSynchronousProxy {
45    client: fidl::client::sync::Client,
46}
47
48#[cfg(target_os = "fuchsia")]
49impl fidl::endpoints::SynchronousProxy for ProviderSynchronousProxy {
50    type Proxy = ProviderProxy;
51    type Protocol = ProviderMarker;
52
53    fn from_channel(inner: fidl::Channel) -> Self {
54        Self::new(inner)
55    }
56
57    fn into_channel(self) -> fidl::Channel {
58        self.client.into_channel()
59    }
60
61    fn as_channel(&self) -> &fidl::Channel {
62        self.client.as_channel()
63    }
64}
65
66#[cfg(target_os = "fuchsia")]
67impl ProviderSynchronousProxy {
68    pub fn new(channel: fidl::Channel) -> Self {
69        let protocol_name = <ProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
70        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
71    }
72
73    pub fn into_channel(self) -> fidl::Channel {
74        self.client.into_channel()
75    }
76
77    /// Waits until an event arrives and returns it. It is safe for other
78    /// threads to make concurrent requests while waiting for an event.
79    pub fn wait_for_event(
80        &self,
81        deadline: zx::MonotonicInstant,
82    ) -> Result<ProviderEvent, fidl::Error> {
83        ProviderEvent::decode(self.client.wait_for_event(deadline)?)
84    }
85
86    /// Prompts the server (a11y manager) to create a new accessibility `View`,
87    /// which the client (scene manager) must connect to the root of the scene
88    /// graph.
89    ///
90    /// The accessibility view is used to vend capabilities to a11y manager
91    /// that a view confers, e.g. ability to request focus, consume and
92    /// respond to input events, annotate underlying views, and apply
93    /// coordinate transforms to its subtree.
94    ///
95    /// With the a11y view, the scene topology is roughly:
96    ///
97    ///          scene root (owned by scene manager)
98    ///               |
99    ///         a11y viewport (owned by scene manager)
100    ///               |
101    ///           a11y view (owned by a11y manager)
102    ///               |
103    ///        proxy viewport (owned by a11y manager)
104    ///               |
105    ///          proxy view (owned by scene manager)
106    ///               |
107    ///        client viewport (owned by scene manager)
108    ///               |
109    ///          client view (owned by UI client)
110    ///
111    /// ARGS
112    ///
113    /// a11y_view_token: Token generated by scene manager, which a11y manager
114    /// uses to create the a11y view in its flatland instance.
115    ///
116    /// proxy_viewport_token: Token generated by scene manager, which a11y manager
117    /// uses to create a "proxy viewport" within the a11y view. The client must
118    /// subsequently create a "proxy view" using the corresponding view creation
119    /// token it generated.
120    ///
121    /// SYNCHRONIZATION
122    ///
123    /// Callers may safely proceed once the accessibility `ViewRef` is returned
124    /// to the accessibility `ViewPort` holder.
125    ///
126    /// LIFECYCLE
127    ///
128    /// The client is free to close the channel any time after calling CreateView().
129    ///
130    /// EPITAPH
131    ///
132    /// This method may return the following epitaphs:
133    ///
134    /// - ZX_ERR_INVALID_ARGS, if either of the provided tokens is invalid.
135    /// - ZX_ERR_PEER_CLOSED, if Scenic fails creating the accessibility `Viewport`.
136    pub fn r#create_view(
137        &self,
138        mut a11y_view_token: fidl_fuchsia_ui_views::ViewCreationToken,
139        mut proxy_viewport_token: fidl_fuchsia_ui_views::ViewportCreationToken,
140    ) -> Result<(), fidl::Error> {
141        self.client.send::<ProviderCreateViewRequest>(
142            (&mut a11y_view_token, &mut proxy_viewport_token),
143            0x406435c9e8281daf,
144            fidl::encoding::DynamicFlags::empty(),
145        )
146    }
147}
148
149#[derive(Debug, Clone)]
150pub struct ProviderProxy {
151    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
152}
153
154impl fidl::endpoints::Proxy for ProviderProxy {
155    type Protocol = ProviderMarker;
156
157    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
158        Self::new(inner)
159    }
160
161    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
162        self.client.into_channel().map_err(|client| Self { client })
163    }
164
165    fn as_channel(&self) -> &::fidl::AsyncChannel {
166        self.client.as_channel()
167    }
168}
169
170impl ProviderProxy {
171    /// Create a new Proxy for fuchsia.accessibility.scene/Provider.
172    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
173        let protocol_name = <ProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
174        Self { client: fidl::client::Client::new(channel, protocol_name) }
175    }
176
177    /// Get a Stream of events from the remote end of the protocol.
178    ///
179    /// # Panics
180    ///
181    /// Panics if the event stream was already taken.
182    pub fn take_event_stream(&self) -> ProviderEventStream {
183        ProviderEventStream { event_receiver: self.client.take_event_receiver() }
184    }
185
186    /// Prompts the server (a11y manager) to create a new accessibility `View`,
187    /// which the client (scene manager) must connect to the root of the scene
188    /// graph.
189    ///
190    /// The accessibility view is used to vend capabilities to a11y manager
191    /// that a view confers, e.g. ability to request focus, consume and
192    /// respond to input events, annotate underlying views, and apply
193    /// coordinate transforms to its subtree.
194    ///
195    /// With the a11y view, the scene topology is roughly:
196    ///
197    ///          scene root (owned by scene manager)
198    ///               |
199    ///         a11y viewport (owned by scene manager)
200    ///               |
201    ///           a11y view (owned by a11y manager)
202    ///               |
203    ///        proxy viewport (owned by a11y manager)
204    ///               |
205    ///          proxy view (owned by scene manager)
206    ///               |
207    ///        client viewport (owned by scene manager)
208    ///               |
209    ///          client view (owned by UI client)
210    ///
211    /// ARGS
212    ///
213    /// a11y_view_token: Token generated by scene manager, which a11y manager
214    /// uses to create the a11y view in its flatland instance.
215    ///
216    /// proxy_viewport_token: Token generated by scene manager, which a11y manager
217    /// uses to create a "proxy viewport" within the a11y view. The client must
218    /// subsequently create a "proxy view" using the corresponding view creation
219    /// token it generated.
220    ///
221    /// SYNCHRONIZATION
222    ///
223    /// Callers may safely proceed once the accessibility `ViewRef` is returned
224    /// to the accessibility `ViewPort` holder.
225    ///
226    /// LIFECYCLE
227    ///
228    /// The client is free to close the channel any time after calling CreateView().
229    ///
230    /// EPITAPH
231    ///
232    /// This method may return the following epitaphs:
233    ///
234    /// - ZX_ERR_INVALID_ARGS, if either of the provided tokens is invalid.
235    /// - ZX_ERR_PEER_CLOSED, if Scenic fails creating the accessibility `Viewport`.
236    pub fn r#create_view(
237        &self,
238        mut a11y_view_token: fidl_fuchsia_ui_views::ViewCreationToken,
239        mut proxy_viewport_token: fidl_fuchsia_ui_views::ViewportCreationToken,
240    ) -> Result<(), fidl::Error> {
241        ProviderProxyInterface::r#create_view(self, a11y_view_token, proxy_viewport_token)
242    }
243}
244
245impl ProviderProxyInterface for ProviderProxy {
246    fn r#create_view(
247        &self,
248        mut a11y_view_token: fidl_fuchsia_ui_views::ViewCreationToken,
249        mut proxy_viewport_token: fidl_fuchsia_ui_views::ViewportCreationToken,
250    ) -> Result<(), fidl::Error> {
251        self.client.send::<ProviderCreateViewRequest>(
252            (&mut a11y_view_token, &mut proxy_viewport_token),
253            0x406435c9e8281daf,
254            fidl::encoding::DynamicFlags::empty(),
255        )
256    }
257}
258
259pub struct ProviderEventStream {
260    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
261}
262
263impl std::marker::Unpin for ProviderEventStream {}
264
265impl futures::stream::FusedStream for ProviderEventStream {
266    fn is_terminated(&self) -> bool {
267        self.event_receiver.is_terminated()
268    }
269}
270
271impl futures::Stream for ProviderEventStream {
272    type Item = Result<ProviderEvent, fidl::Error>;
273
274    fn poll_next(
275        mut self: std::pin::Pin<&mut Self>,
276        cx: &mut std::task::Context<'_>,
277    ) -> std::task::Poll<Option<Self::Item>> {
278        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
279            &mut self.event_receiver,
280            cx
281        )?) {
282            Some(buf) => std::task::Poll::Ready(Some(ProviderEvent::decode(buf))),
283            None => std::task::Poll::Ready(None),
284        }
285    }
286}
287
288#[derive(Debug)]
289pub enum ProviderEvent {}
290
291impl ProviderEvent {
292    /// Decodes a message buffer as a [`ProviderEvent`].
293    fn decode(
294        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
295    ) -> Result<ProviderEvent, fidl::Error> {
296        let (bytes, _handles) = buf.split_mut();
297        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
298        debug_assert_eq!(tx_header.tx_id, 0);
299        match tx_header.ordinal {
300            _ => Err(fidl::Error::UnknownOrdinal {
301                ordinal: tx_header.ordinal,
302                protocol_name: <ProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
303            }),
304        }
305    }
306}
307
308/// A Stream of incoming requests for fuchsia.accessibility.scene/Provider.
309pub struct ProviderRequestStream {
310    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
311    is_terminated: bool,
312}
313
314impl std::marker::Unpin for ProviderRequestStream {}
315
316impl futures::stream::FusedStream for ProviderRequestStream {
317    fn is_terminated(&self) -> bool {
318        self.is_terminated
319    }
320}
321
322impl fidl::endpoints::RequestStream for ProviderRequestStream {
323    type Protocol = ProviderMarker;
324    type ControlHandle = ProviderControlHandle;
325
326    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
327        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
328    }
329
330    fn control_handle(&self) -> Self::ControlHandle {
331        ProviderControlHandle { inner: self.inner.clone() }
332    }
333
334    fn into_inner(
335        self,
336    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
337    {
338        (self.inner, self.is_terminated)
339    }
340
341    fn from_inner(
342        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
343        is_terminated: bool,
344    ) -> Self {
345        Self { inner, is_terminated }
346    }
347}
348
349impl futures::Stream for ProviderRequestStream {
350    type Item = Result<ProviderRequest, fidl::Error>;
351
352    fn poll_next(
353        mut self: std::pin::Pin<&mut Self>,
354        cx: &mut std::task::Context<'_>,
355    ) -> std::task::Poll<Option<Self::Item>> {
356        let this = &mut *self;
357        if this.inner.check_shutdown(cx) {
358            this.is_terminated = true;
359            return std::task::Poll::Ready(None);
360        }
361        if this.is_terminated {
362            panic!("polled ProviderRequestStream after completion");
363        }
364        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
365            |bytes, handles| {
366                match this.inner.channel().read_etc(cx, bytes, handles) {
367                    std::task::Poll::Ready(Ok(())) => {}
368                    std::task::Poll::Pending => return std::task::Poll::Pending,
369                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
370                        this.is_terminated = true;
371                        return std::task::Poll::Ready(None);
372                    }
373                    std::task::Poll::Ready(Err(e)) => {
374                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
375                            e.into(),
376                        ))))
377                    }
378                }
379
380                // A message has been received from the channel
381                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
382
383                std::task::Poll::Ready(Some(match header.ordinal {
384                    0x406435c9e8281daf => {
385                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
386                        let mut req = fidl::new_empty!(
387                            ProviderCreateViewRequest,
388                            fidl::encoding::DefaultFuchsiaResourceDialect
389                        );
390                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ProviderCreateViewRequest>(&header, _body_bytes, handles, &mut req)?;
391                        let control_handle = ProviderControlHandle { inner: this.inner.clone() };
392                        Ok(ProviderRequest::CreateView {
393                            a11y_view_token: req.a11y_view_token,
394                            proxy_viewport_token: req.proxy_viewport_token,
395
396                            control_handle,
397                        })
398                    }
399                    _ => Err(fidl::Error::UnknownOrdinal {
400                        ordinal: header.ordinal,
401                        protocol_name:
402                            <ProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
403                    }),
404                }))
405            },
406        )
407    }
408}
409
410#[derive(Debug)]
411pub enum ProviderRequest {
412    /// Prompts the server (a11y manager) to create a new accessibility `View`,
413    /// which the client (scene manager) must connect to the root of the scene
414    /// graph.
415    ///
416    /// The accessibility view is used to vend capabilities to a11y manager
417    /// that a view confers, e.g. ability to request focus, consume and
418    /// respond to input events, annotate underlying views, and apply
419    /// coordinate transforms to its subtree.
420    ///
421    /// With the a11y view, the scene topology is roughly:
422    ///
423    ///          scene root (owned by scene manager)
424    ///               |
425    ///         a11y viewport (owned by scene manager)
426    ///               |
427    ///           a11y view (owned by a11y manager)
428    ///               |
429    ///        proxy viewport (owned by a11y manager)
430    ///               |
431    ///          proxy view (owned by scene manager)
432    ///               |
433    ///        client viewport (owned by scene manager)
434    ///               |
435    ///          client view (owned by UI client)
436    ///
437    /// ARGS
438    ///
439    /// a11y_view_token: Token generated by scene manager, which a11y manager
440    /// uses to create the a11y view in its flatland instance.
441    ///
442    /// proxy_viewport_token: Token generated by scene manager, which a11y manager
443    /// uses to create a "proxy viewport" within the a11y view. The client must
444    /// subsequently create a "proxy view" using the corresponding view creation
445    /// token it generated.
446    ///
447    /// SYNCHRONIZATION
448    ///
449    /// Callers may safely proceed once the accessibility `ViewRef` is returned
450    /// to the accessibility `ViewPort` holder.
451    ///
452    /// LIFECYCLE
453    ///
454    /// The client is free to close the channel any time after calling CreateView().
455    ///
456    /// EPITAPH
457    ///
458    /// This method may return the following epitaphs:
459    ///
460    /// - ZX_ERR_INVALID_ARGS, if either of the provided tokens is invalid.
461    /// - ZX_ERR_PEER_CLOSED, if Scenic fails creating the accessibility `Viewport`.
462    CreateView {
463        a11y_view_token: fidl_fuchsia_ui_views::ViewCreationToken,
464        proxy_viewport_token: fidl_fuchsia_ui_views::ViewportCreationToken,
465        control_handle: ProviderControlHandle,
466    },
467}
468
469impl ProviderRequest {
470    #[allow(irrefutable_let_patterns)]
471    pub fn into_create_view(
472        self,
473    ) -> Option<(
474        fidl_fuchsia_ui_views::ViewCreationToken,
475        fidl_fuchsia_ui_views::ViewportCreationToken,
476        ProviderControlHandle,
477    )> {
478        if let ProviderRequest::CreateView {
479            a11y_view_token,
480            proxy_viewport_token,
481            control_handle,
482        } = self
483        {
484            Some((a11y_view_token, proxy_viewport_token, control_handle))
485        } else {
486            None
487        }
488    }
489
490    /// Name of the method defined in FIDL
491    pub fn method_name(&self) -> &'static str {
492        match *self {
493            ProviderRequest::CreateView { .. } => "create_view",
494        }
495    }
496}
497
498#[derive(Debug, Clone)]
499pub struct ProviderControlHandle {
500    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
501}
502
503impl fidl::endpoints::ControlHandle for ProviderControlHandle {
504    fn shutdown(&self) {
505        self.inner.shutdown()
506    }
507    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
508        self.inner.shutdown_with_epitaph(status)
509    }
510
511    fn is_closed(&self) -> bool {
512        self.inner.channel().is_closed()
513    }
514    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
515        self.inner.channel().on_closed()
516    }
517
518    #[cfg(target_os = "fuchsia")]
519    fn signal_peer(
520        &self,
521        clear_mask: zx::Signals,
522        set_mask: zx::Signals,
523    ) -> Result<(), zx_status::Status> {
524        use fidl::Peered;
525        self.inner.channel().signal_peer(clear_mask, set_mask)
526    }
527}
528
529impl ProviderControlHandle {}
530
531mod internal {
532    use super::*;
533
534    impl fidl::encoding::ResourceTypeMarker for ProviderCreateViewRequest {
535        type Borrowed<'a> = &'a mut Self;
536        fn take_or_borrow<'a>(
537            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
538        ) -> Self::Borrowed<'a> {
539            value
540        }
541    }
542
543    unsafe impl fidl::encoding::TypeMarker for ProviderCreateViewRequest {
544        type Owned = Self;
545
546        #[inline(always)]
547        fn inline_align(_context: fidl::encoding::Context) -> usize {
548            4
549        }
550
551        #[inline(always)]
552        fn inline_size(_context: fidl::encoding::Context) -> usize {
553            8
554        }
555    }
556
557    unsafe impl
558        fidl::encoding::Encode<
559            ProviderCreateViewRequest,
560            fidl::encoding::DefaultFuchsiaResourceDialect,
561        > for &mut ProviderCreateViewRequest
562    {
563        #[inline]
564        unsafe fn encode(
565            self,
566            encoder: &mut fidl::encoding::Encoder<
567                '_,
568                fidl::encoding::DefaultFuchsiaResourceDialect,
569            >,
570            offset: usize,
571            _depth: fidl::encoding::Depth,
572        ) -> fidl::Result<()> {
573            encoder.debug_check_bounds::<ProviderCreateViewRequest>(offset);
574            // Delegate to tuple encoding.
575            fidl::encoding::Encode::<ProviderCreateViewRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
576                (
577                    <fidl_fuchsia_ui_views::ViewCreationToken as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.a11y_view_token),
578                    <fidl_fuchsia_ui_views::ViewportCreationToken as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.proxy_viewport_token),
579                ),
580                encoder, offset, _depth
581            )
582        }
583    }
584    unsafe impl<
585            T0: fidl::encoding::Encode<
586                fidl_fuchsia_ui_views::ViewCreationToken,
587                fidl::encoding::DefaultFuchsiaResourceDialect,
588            >,
589            T1: fidl::encoding::Encode<
590                fidl_fuchsia_ui_views::ViewportCreationToken,
591                fidl::encoding::DefaultFuchsiaResourceDialect,
592            >,
593        >
594        fidl::encoding::Encode<
595            ProviderCreateViewRequest,
596            fidl::encoding::DefaultFuchsiaResourceDialect,
597        > for (T0, T1)
598    {
599        #[inline]
600        unsafe fn encode(
601            self,
602            encoder: &mut fidl::encoding::Encoder<
603                '_,
604                fidl::encoding::DefaultFuchsiaResourceDialect,
605            >,
606            offset: usize,
607            depth: fidl::encoding::Depth,
608        ) -> fidl::Result<()> {
609            encoder.debug_check_bounds::<ProviderCreateViewRequest>(offset);
610            // Zero out padding regions. There's no need to apply masks
611            // because the unmasked parts will be overwritten by fields.
612            // Write the fields.
613            self.0.encode(encoder, offset + 0, depth)?;
614            self.1.encode(encoder, offset + 4, depth)?;
615            Ok(())
616        }
617    }
618
619    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
620        for ProviderCreateViewRequest
621    {
622        #[inline(always)]
623        fn new_empty() -> Self {
624            Self {
625                a11y_view_token: fidl::new_empty!(
626                    fidl_fuchsia_ui_views::ViewCreationToken,
627                    fidl::encoding::DefaultFuchsiaResourceDialect
628                ),
629                proxy_viewport_token: fidl::new_empty!(
630                    fidl_fuchsia_ui_views::ViewportCreationToken,
631                    fidl::encoding::DefaultFuchsiaResourceDialect
632                ),
633            }
634        }
635
636        #[inline]
637        unsafe fn decode(
638            &mut self,
639            decoder: &mut fidl::encoding::Decoder<
640                '_,
641                fidl::encoding::DefaultFuchsiaResourceDialect,
642            >,
643            offset: usize,
644            _depth: fidl::encoding::Depth,
645        ) -> fidl::Result<()> {
646            decoder.debug_check_bounds::<Self>(offset);
647            // Verify that padding bytes are zero.
648            fidl::decode!(
649                fidl_fuchsia_ui_views::ViewCreationToken,
650                fidl::encoding::DefaultFuchsiaResourceDialect,
651                &mut self.a11y_view_token,
652                decoder,
653                offset + 0,
654                _depth
655            )?;
656            fidl::decode!(
657                fidl_fuchsia_ui_views::ViewportCreationToken,
658                fidl::encoding::DefaultFuchsiaResourceDialect,
659                &mut self.proxy_viewport_token,
660                decoder,
661                offset + 4,
662                _depth
663            )?;
664            Ok(())
665        }
666    }
667}