fidl_fuchsia_ui_test_context/
fidl_fuchsia_ui_test_context.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_ui_test_context__common::*;
11use futures::future::{self, MaybeDone, TryFutureExt};
12use zx_status;
13
14#[derive(Debug, Default, PartialEq)]
15pub struct RealmFactoryCreateRealmRequest {
16    pub realm_server:
17        Option<fidl::endpoints::ServerEnd<fidl_fuchsia_testing_harness::RealmProxy_Marker>>,
18    pub display_rotation: Option<u32>,
19    pub device_pixel_ratio: Option<f32>,
20    /// Optional. If it has a value, the width and height must not be zero.
21    pub display_dimensions: Option<fidl_fuchsia_math::SizeU>,
22    /// Optional. If it has a value, it must not be zero.
23    pub display_refresh_rate_millihertz: Option<u32>,
24    /// Optional. If it has a value, it must not be zero.
25    pub display_max_layer_count: Option<u32>,
26    #[doc(hidden)]
27    pub __source_breaking: fidl::marker::SourceBreaking,
28}
29
30impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
31    for RealmFactoryCreateRealmRequest
32{
33}
34
35#[derive(Debug, Default, PartialEq)]
36pub struct ScenicRealmFactoryCreateRealmRequest {
37    pub realm_server:
38        Option<fidl::endpoints::ServerEnd<fidl_fuchsia_testing_harness::RealmProxy_Marker>>,
39    pub renderer: Option<RendererType>,
40    pub display_rotation: Option<u64>,
41    pub display_composition: Option<bool>,
42    /// Optional. If it has a value, the width and height must not be zero.
43    pub display_dimensions: Option<fidl_fuchsia_math::SizeU>,
44    /// Optional. If it has a value, it must not be zero.
45    pub display_refresh_rate_millihertz: Option<u32>,
46    /// Optional. If it has a value, it must not be zero.
47    pub display_max_layer_count: Option<u32>,
48    #[doc(hidden)]
49    pub __source_breaking: fidl::marker::SourceBreaking,
50}
51
52impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
53    for ScenicRealmFactoryCreateRealmRequest
54{
55}
56
57#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
58pub struct RealmFactoryMarker;
59
60impl fidl::endpoints::ProtocolMarker for RealmFactoryMarker {
61    type Proxy = RealmFactoryProxy;
62    type RequestStream = RealmFactoryRequestStream;
63    #[cfg(target_os = "fuchsia")]
64    type SynchronousProxy = RealmFactorySynchronousProxy;
65
66    const DEBUG_NAME: &'static str = "fuchsia.ui.test.context.RealmFactory";
67}
68impl fidl::endpoints::DiscoverableProtocolMarker for RealmFactoryMarker {}
69pub type RealmFactoryCreateRealmResult = Result<(), fidl_fuchsia_testing_harness::OperationError>;
70
71pub trait RealmFactoryProxyInterface: Send + Sync {
72    type CreateRealmResponseFut: std::future::Future<Output = Result<RealmFactoryCreateRealmResult, fidl::Error>>
73        + Send;
74    fn r#create_realm(
75        &self,
76        payload: RealmFactoryCreateRealmRequest,
77    ) -> Self::CreateRealmResponseFut;
78}
79#[derive(Debug)]
80#[cfg(target_os = "fuchsia")]
81pub struct RealmFactorySynchronousProxy {
82    client: fidl::client::sync::Client,
83}
84
85#[cfg(target_os = "fuchsia")]
86impl fidl::endpoints::SynchronousProxy for RealmFactorySynchronousProxy {
87    type Proxy = RealmFactoryProxy;
88    type Protocol = RealmFactoryMarker;
89
90    fn from_channel(inner: fidl::Channel) -> Self {
91        Self::new(inner)
92    }
93
94    fn into_channel(self) -> fidl::Channel {
95        self.client.into_channel()
96    }
97
98    fn as_channel(&self) -> &fidl::Channel {
99        self.client.as_channel()
100    }
101}
102
103#[cfg(target_os = "fuchsia")]
104impl RealmFactorySynchronousProxy {
105    pub fn new(channel: fidl::Channel) -> Self {
106        let protocol_name = <RealmFactoryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
107        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
108    }
109
110    pub fn into_channel(self) -> fidl::Channel {
111        self.client.into_channel()
112    }
113
114    /// Waits until an event arrives and returns it. It is safe for other
115    /// threads to make concurrent requests while waiting for an event.
116    pub fn wait_for_event(
117        &self,
118        deadline: zx::MonotonicInstant,
119    ) -> Result<RealmFactoryEvent, fidl::Error> {
120        RealmFactoryEvent::decode(self.client.wait_for_event(deadline)?)
121    }
122
123    pub fn r#create_realm(
124        &self,
125        mut payload: RealmFactoryCreateRealmRequest,
126        ___deadline: zx::MonotonicInstant,
127    ) -> Result<RealmFactoryCreateRealmResult, fidl::Error> {
128        let _response = self
129            .client
130            .send_query::<RealmFactoryCreateRealmRequest, fidl::encoding::FlexibleResultType<
131                fidl::encoding::EmptyStruct,
132                fidl_fuchsia_testing_harness::OperationError,
133            >>(
134                &mut payload,
135                0x6e1c904f44c7d0fc,
136                fidl::encoding::DynamicFlags::FLEXIBLE,
137                ___deadline,
138            )?
139            .into_result::<RealmFactoryMarker>("create_realm")?;
140        Ok(_response.map(|x| x))
141    }
142}
143
144#[cfg(target_os = "fuchsia")]
145impl From<RealmFactorySynchronousProxy> for zx::NullableHandle {
146    fn from(value: RealmFactorySynchronousProxy) -> Self {
147        value.into_channel().into()
148    }
149}
150
151#[cfg(target_os = "fuchsia")]
152impl From<fidl::Channel> for RealmFactorySynchronousProxy {
153    fn from(value: fidl::Channel) -> Self {
154        Self::new(value)
155    }
156}
157
158#[cfg(target_os = "fuchsia")]
159impl fidl::endpoints::FromClient for RealmFactorySynchronousProxy {
160    type Protocol = RealmFactoryMarker;
161
162    fn from_client(value: fidl::endpoints::ClientEnd<RealmFactoryMarker>) -> Self {
163        Self::new(value.into_channel())
164    }
165}
166
167#[derive(Debug, Clone)]
168pub struct RealmFactoryProxy {
169    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
170}
171
172impl fidl::endpoints::Proxy for RealmFactoryProxy {
173    type Protocol = RealmFactoryMarker;
174
175    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
176        Self::new(inner)
177    }
178
179    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
180        self.client.into_channel().map_err(|client| Self { client })
181    }
182
183    fn as_channel(&self) -> &::fidl::AsyncChannel {
184        self.client.as_channel()
185    }
186}
187
188impl RealmFactoryProxy {
189    /// Create a new Proxy for fuchsia.ui.test.context/RealmFactory.
190    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
191        let protocol_name = <RealmFactoryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
192        Self { client: fidl::client::Client::new(channel, protocol_name) }
193    }
194
195    /// Get a Stream of events from the remote end of the protocol.
196    ///
197    /// # Panics
198    ///
199    /// Panics if the event stream was already taken.
200    pub fn take_event_stream(&self) -> RealmFactoryEventStream {
201        RealmFactoryEventStream { event_receiver: self.client.take_event_receiver() }
202    }
203
204    pub fn r#create_realm(
205        &self,
206        mut payload: RealmFactoryCreateRealmRequest,
207    ) -> fidl::client::QueryResponseFut<
208        RealmFactoryCreateRealmResult,
209        fidl::encoding::DefaultFuchsiaResourceDialect,
210    > {
211        RealmFactoryProxyInterface::r#create_realm(self, payload)
212    }
213}
214
215impl RealmFactoryProxyInterface for RealmFactoryProxy {
216    type CreateRealmResponseFut = fidl::client::QueryResponseFut<
217        RealmFactoryCreateRealmResult,
218        fidl::encoding::DefaultFuchsiaResourceDialect,
219    >;
220    fn r#create_realm(
221        &self,
222        mut payload: RealmFactoryCreateRealmRequest,
223    ) -> Self::CreateRealmResponseFut {
224        fn _decode(
225            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
226        ) -> Result<RealmFactoryCreateRealmResult, fidl::Error> {
227            let _response = fidl::client::decode_transaction_body::<
228                fidl::encoding::FlexibleResultType<
229                    fidl::encoding::EmptyStruct,
230                    fidl_fuchsia_testing_harness::OperationError,
231                >,
232                fidl::encoding::DefaultFuchsiaResourceDialect,
233                0x6e1c904f44c7d0fc,
234            >(_buf?)?
235            .into_result::<RealmFactoryMarker>("create_realm")?;
236            Ok(_response.map(|x| x))
237        }
238        self.client
239            .send_query_and_decode::<RealmFactoryCreateRealmRequest, RealmFactoryCreateRealmResult>(
240                &mut payload,
241                0x6e1c904f44c7d0fc,
242                fidl::encoding::DynamicFlags::FLEXIBLE,
243                _decode,
244            )
245    }
246}
247
248pub struct RealmFactoryEventStream {
249    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
250}
251
252impl std::marker::Unpin for RealmFactoryEventStream {}
253
254impl futures::stream::FusedStream for RealmFactoryEventStream {
255    fn is_terminated(&self) -> bool {
256        self.event_receiver.is_terminated()
257    }
258}
259
260impl futures::Stream for RealmFactoryEventStream {
261    type Item = Result<RealmFactoryEvent, fidl::Error>;
262
263    fn poll_next(
264        mut self: std::pin::Pin<&mut Self>,
265        cx: &mut std::task::Context<'_>,
266    ) -> std::task::Poll<Option<Self::Item>> {
267        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
268            &mut self.event_receiver,
269            cx
270        )?) {
271            Some(buf) => std::task::Poll::Ready(Some(RealmFactoryEvent::decode(buf))),
272            None => std::task::Poll::Ready(None),
273        }
274    }
275}
276
277#[derive(Debug)]
278pub enum RealmFactoryEvent {
279    #[non_exhaustive]
280    _UnknownEvent {
281        /// Ordinal of the event that was sent.
282        ordinal: u64,
283    },
284}
285
286impl RealmFactoryEvent {
287    /// Decodes a message buffer as a [`RealmFactoryEvent`].
288    fn decode(
289        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
290    ) -> Result<RealmFactoryEvent, fidl::Error> {
291        let (bytes, _handles) = buf.split_mut();
292        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
293        debug_assert_eq!(tx_header.tx_id, 0);
294        match tx_header.ordinal {
295            _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
296                Ok(RealmFactoryEvent::_UnknownEvent { ordinal: tx_header.ordinal })
297            }
298            _ => Err(fidl::Error::UnknownOrdinal {
299                ordinal: tx_header.ordinal,
300                protocol_name: <RealmFactoryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
301            }),
302        }
303    }
304}
305
306/// A Stream of incoming requests for fuchsia.ui.test.context/RealmFactory.
307pub struct RealmFactoryRequestStream {
308    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
309    is_terminated: bool,
310}
311
312impl std::marker::Unpin for RealmFactoryRequestStream {}
313
314impl futures::stream::FusedStream for RealmFactoryRequestStream {
315    fn is_terminated(&self) -> bool {
316        self.is_terminated
317    }
318}
319
320impl fidl::endpoints::RequestStream for RealmFactoryRequestStream {
321    type Protocol = RealmFactoryMarker;
322    type ControlHandle = RealmFactoryControlHandle;
323
324    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
325        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
326    }
327
328    fn control_handle(&self) -> Self::ControlHandle {
329        RealmFactoryControlHandle { inner: self.inner.clone() }
330    }
331
332    fn into_inner(
333        self,
334    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
335    {
336        (self.inner, self.is_terminated)
337    }
338
339    fn from_inner(
340        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
341        is_terminated: bool,
342    ) -> Self {
343        Self { inner, is_terminated }
344    }
345}
346
347impl futures::Stream for RealmFactoryRequestStream {
348    type Item = Result<RealmFactoryRequest, fidl::Error>;
349
350    fn poll_next(
351        mut self: std::pin::Pin<&mut Self>,
352        cx: &mut std::task::Context<'_>,
353    ) -> std::task::Poll<Option<Self::Item>> {
354        let this = &mut *self;
355        if this.inner.check_shutdown(cx) {
356            this.is_terminated = true;
357            return std::task::Poll::Ready(None);
358        }
359        if this.is_terminated {
360            panic!("polled RealmFactoryRequestStream after completion");
361        }
362        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
363            |bytes, handles| {
364                match this.inner.channel().read_etc(cx, bytes, handles) {
365                    std::task::Poll::Ready(Ok(())) => {}
366                    std::task::Poll::Pending => return std::task::Poll::Pending,
367                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
368                        this.is_terminated = true;
369                        return std::task::Poll::Ready(None);
370                    }
371                    std::task::Poll::Ready(Err(e)) => {
372                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
373                            e.into(),
374                        ))));
375                    }
376                }
377
378                // A message has been received from the channel
379                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
380
381                std::task::Poll::Ready(Some(match header.ordinal {
382                    0x6e1c904f44c7d0fc => {
383                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
384                        let mut req = fidl::new_empty!(
385                            RealmFactoryCreateRealmRequest,
386                            fidl::encoding::DefaultFuchsiaResourceDialect
387                        );
388                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<RealmFactoryCreateRealmRequest>(&header, _body_bytes, handles, &mut req)?;
389                        let control_handle =
390                            RealmFactoryControlHandle { inner: this.inner.clone() };
391                        Ok(RealmFactoryRequest::CreateRealm {
392                            payload: req,
393                            responder: RealmFactoryCreateRealmResponder {
394                                control_handle: std::mem::ManuallyDrop::new(control_handle),
395                                tx_id: header.tx_id,
396                            },
397                        })
398                    }
399                    _ if header.tx_id == 0
400                        && header
401                            .dynamic_flags()
402                            .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
403                    {
404                        Ok(RealmFactoryRequest::_UnknownMethod {
405                            ordinal: header.ordinal,
406                            control_handle: RealmFactoryControlHandle { inner: this.inner.clone() },
407                            method_type: fidl::MethodType::OneWay,
408                        })
409                    }
410                    _ if header
411                        .dynamic_flags()
412                        .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
413                    {
414                        this.inner.send_framework_err(
415                            fidl::encoding::FrameworkErr::UnknownMethod,
416                            header.tx_id,
417                            header.ordinal,
418                            header.dynamic_flags(),
419                            (bytes, handles),
420                        )?;
421                        Ok(RealmFactoryRequest::_UnknownMethod {
422                            ordinal: header.ordinal,
423                            control_handle: RealmFactoryControlHandle { inner: this.inner.clone() },
424                            method_type: fidl::MethodType::TwoWay,
425                        })
426                    }
427                    _ => Err(fidl::Error::UnknownOrdinal {
428                        ordinal: header.ordinal,
429                        protocol_name:
430                            <RealmFactoryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
431                    }),
432                }))
433            },
434        )
435    }
436}
437
438/// RealmFactory creates test realm for UI related tests, and give the realm
439/// proxy to test suite so that test suite can access protocols in test realm.
440/// Protocols served by Scenic, SceneManager and A11yManager are available.
441#[derive(Debug)]
442pub enum RealmFactoryRequest {
443    CreateRealm {
444        payload: RealmFactoryCreateRealmRequest,
445        responder: RealmFactoryCreateRealmResponder,
446    },
447    /// An interaction was received which does not match any known method.
448    #[non_exhaustive]
449    _UnknownMethod {
450        /// Ordinal of the method that was called.
451        ordinal: u64,
452        control_handle: RealmFactoryControlHandle,
453        method_type: fidl::MethodType,
454    },
455}
456
457impl RealmFactoryRequest {
458    #[allow(irrefutable_let_patterns)]
459    pub fn into_create_realm(
460        self,
461    ) -> Option<(RealmFactoryCreateRealmRequest, RealmFactoryCreateRealmResponder)> {
462        if let RealmFactoryRequest::CreateRealm { payload, responder } = self {
463            Some((payload, responder))
464        } else {
465            None
466        }
467    }
468
469    /// Name of the method defined in FIDL
470    pub fn method_name(&self) -> &'static str {
471        match *self {
472            RealmFactoryRequest::CreateRealm { .. } => "create_realm",
473            RealmFactoryRequest::_UnknownMethod {
474                method_type: fidl::MethodType::OneWay, ..
475            } => "unknown one-way method",
476            RealmFactoryRequest::_UnknownMethod {
477                method_type: fidl::MethodType::TwoWay, ..
478            } => "unknown two-way method",
479        }
480    }
481}
482
483#[derive(Debug, Clone)]
484pub struct RealmFactoryControlHandle {
485    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
486}
487
488impl fidl::endpoints::ControlHandle for RealmFactoryControlHandle {
489    fn shutdown(&self) {
490        self.inner.shutdown()
491    }
492
493    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
494        self.inner.shutdown_with_epitaph(status)
495    }
496
497    fn is_closed(&self) -> bool {
498        self.inner.channel().is_closed()
499    }
500    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
501        self.inner.channel().on_closed()
502    }
503
504    #[cfg(target_os = "fuchsia")]
505    fn signal_peer(
506        &self,
507        clear_mask: zx::Signals,
508        set_mask: zx::Signals,
509    ) -> Result<(), zx_status::Status> {
510        use fidl::Peered;
511        self.inner.channel().signal_peer(clear_mask, set_mask)
512    }
513}
514
515impl RealmFactoryControlHandle {}
516
517#[must_use = "FIDL methods require a response to be sent"]
518#[derive(Debug)]
519pub struct RealmFactoryCreateRealmResponder {
520    control_handle: std::mem::ManuallyDrop<RealmFactoryControlHandle>,
521    tx_id: u32,
522}
523
524/// Set the the channel to be shutdown (see [`RealmFactoryControlHandle::shutdown`])
525/// if the responder is dropped without sending a response, so that the client
526/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
527impl std::ops::Drop for RealmFactoryCreateRealmResponder {
528    fn drop(&mut self) {
529        self.control_handle.shutdown();
530        // Safety: drops once, never accessed again
531        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
532    }
533}
534
535impl fidl::endpoints::Responder for RealmFactoryCreateRealmResponder {
536    type ControlHandle = RealmFactoryControlHandle;
537
538    fn control_handle(&self) -> &RealmFactoryControlHandle {
539        &self.control_handle
540    }
541
542    fn drop_without_shutdown(mut self) {
543        // Safety: drops once, never accessed again due to mem::forget
544        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
545        // Prevent Drop from running (which would shut down the channel)
546        std::mem::forget(self);
547    }
548}
549
550impl RealmFactoryCreateRealmResponder {
551    /// Sends a response to the FIDL transaction.
552    ///
553    /// Sets the channel to shutdown if an error occurs.
554    pub fn send(
555        self,
556        mut result: Result<(), fidl_fuchsia_testing_harness::OperationError>,
557    ) -> Result<(), fidl::Error> {
558        let _result = self.send_raw(result);
559        if _result.is_err() {
560            self.control_handle.shutdown();
561        }
562        self.drop_without_shutdown();
563        _result
564    }
565
566    /// Similar to "send" but does not shutdown the channel if an error occurs.
567    pub fn send_no_shutdown_on_err(
568        self,
569        mut result: Result<(), fidl_fuchsia_testing_harness::OperationError>,
570    ) -> Result<(), fidl::Error> {
571        let _result = self.send_raw(result);
572        self.drop_without_shutdown();
573        _result
574    }
575
576    fn send_raw(
577        &self,
578        mut result: Result<(), fidl_fuchsia_testing_harness::OperationError>,
579    ) -> Result<(), fidl::Error> {
580        self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
581            fidl::encoding::EmptyStruct,
582            fidl_fuchsia_testing_harness::OperationError,
583        >>(
584            fidl::encoding::FlexibleResult::new(result),
585            self.tx_id,
586            0x6e1c904f44c7d0fc,
587            fidl::encoding::DynamicFlags::FLEXIBLE,
588        )
589    }
590}
591
592#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
593pub struct ScenicRealmFactoryMarker;
594
595impl fidl::endpoints::ProtocolMarker for ScenicRealmFactoryMarker {
596    type Proxy = ScenicRealmFactoryProxy;
597    type RequestStream = ScenicRealmFactoryRequestStream;
598    #[cfg(target_os = "fuchsia")]
599    type SynchronousProxy = ScenicRealmFactorySynchronousProxy;
600
601    const DEBUG_NAME: &'static str = "fuchsia.ui.test.context.ScenicRealmFactory";
602}
603impl fidl::endpoints::DiscoverableProtocolMarker for ScenicRealmFactoryMarker {}
604pub type ScenicRealmFactoryCreateRealmResult =
605    Result<(), fidl_fuchsia_testing_harness::OperationError>;
606
607pub trait ScenicRealmFactoryProxyInterface: Send + Sync {
608    type CreateRealmResponseFut: std::future::Future<Output = Result<ScenicRealmFactoryCreateRealmResult, fidl::Error>>
609        + Send;
610    fn r#create_realm(
611        &self,
612        payload: ScenicRealmFactoryCreateRealmRequest,
613    ) -> Self::CreateRealmResponseFut;
614}
615#[derive(Debug)]
616#[cfg(target_os = "fuchsia")]
617pub struct ScenicRealmFactorySynchronousProxy {
618    client: fidl::client::sync::Client,
619}
620
621#[cfg(target_os = "fuchsia")]
622impl fidl::endpoints::SynchronousProxy for ScenicRealmFactorySynchronousProxy {
623    type Proxy = ScenicRealmFactoryProxy;
624    type Protocol = ScenicRealmFactoryMarker;
625
626    fn from_channel(inner: fidl::Channel) -> Self {
627        Self::new(inner)
628    }
629
630    fn into_channel(self) -> fidl::Channel {
631        self.client.into_channel()
632    }
633
634    fn as_channel(&self) -> &fidl::Channel {
635        self.client.as_channel()
636    }
637}
638
639#[cfg(target_os = "fuchsia")]
640impl ScenicRealmFactorySynchronousProxy {
641    pub fn new(channel: fidl::Channel) -> Self {
642        let protocol_name =
643            <ScenicRealmFactoryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
644        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
645    }
646
647    pub fn into_channel(self) -> fidl::Channel {
648        self.client.into_channel()
649    }
650
651    /// Waits until an event arrives and returns it. It is safe for other
652    /// threads to make concurrent requests while waiting for an event.
653    pub fn wait_for_event(
654        &self,
655        deadline: zx::MonotonicInstant,
656    ) -> Result<ScenicRealmFactoryEvent, fidl::Error> {
657        ScenicRealmFactoryEvent::decode(self.client.wait_for_event(deadline)?)
658    }
659
660    pub fn r#create_realm(
661        &self,
662        mut payload: ScenicRealmFactoryCreateRealmRequest,
663        ___deadline: zx::MonotonicInstant,
664    ) -> Result<ScenicRealmFactoryCreateRealmResult, fidl::Error> {
665        let _response = self
666            .client
667            .send_query::<ScenicRealmFactoryCreateRealmRequest, fidl::encoding::FlexibleResultType<
668                fidl::encoding::EmptyStruct,
669                fidl_fuchsia_testing_harness::OperationError,
670            >>(
671                &mut payload,
672                0x11f2157d1648e6ba,
673                fidl::encoding::DynamicFlags::FLEXIBLE,
674                ___deadline,
675            )?
676            .into_result::<ScenicRealmFactoryMarker>("create_realm")?;
677        Ok(_response.map(|x| x))
678    }
679}
680
681#[cfg(target_os = "fuchsia")]
682impl From<ScenicRealmFactorySynchronousProxy> for zx::NullableHandle {
683    fn from(value: ScenicRealmFactorySynchronousProxy) -> Self {
684        value.into_channel().into()
685    }
686}
687
688#[cfg(target_os = "fuchsia")]
689impl From<fidl::Channel> for ScenicRealmFactorySynchronousProxy {
690    fn from(value: fidl::Channel) -> Self {
691        Self::new(value)
692    }
693}
694
695#[cfg(target_os = "fuchsia")]
696impl fidl::endpoints::FromClient for ScenicRealmFactorySynchronousProxy {
697    type Protocol = ScenicRealmFactoryMarker;
698
699    fn from_client(value: fidl::endpoints::ClientEnd<ScenicRealmFactoryMarker>) -> Self {
700        Self::new(value.into_channel())
701    }
702}
703
704#[derive(Debug, Clone)]
705pub struct ScenicRealmFactoryProxy {
706    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
707}
708
709impl fidl::endpoints::Proxy for ScenicRealmFactoryProxy {
710    type Protocol = ScenicRealmFactoryMarker;
711
712    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
713        Self::new(inner)
714    }
715
716    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
717        self.client.into_channel().map_err(|client| Self { client })
718    }
719
720    fn as_channel(&self) -> &::fidl::AsyncChannel {
721        self.client.as_channel()
722    }
723}
724
725impl ScenicRealmFactoryProxy {
726    /// Create a new Proxy for fuchsia.ui.test.context/ScenicRealmFactory.
727    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
728        let protocol_name =
729            <ScenicRealmFactoryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
730        Self { client: fidl::client::Client::new(channel, protocol_name) }
731    }
732
733    /// Get a Stream of events from the remote end of the protocol.
734    ///
735    /// # Panics
736    ///
737    /// Panics if the event stream was already taken.
738    pub fn take_event_stream(&self) -> ScenicRealmFactoryEventStream {
739        ScenicRealmFactoryEventStream { event_receiver: self.client.take_event_receiver() }
740    }
741
742    pub fn r#create_realm(
743        &self,
744        mut payload: ScenicRealmFactoryCreateRealmRequest,
745    ) -> fidl::client::QueryResponseFut<
746        ScenicRealmFactoryCreateRealmResult,
747        fidl::encoding::DefaultFuchsiaResourceDialect,
748    > {
749        ScenicRealmFactoryProxyInterface::r#create_realm(self, payload)
750    }
751}
752
753impl ScenicRealmFactoryProxyInterface for ScenicRealmFactoryProxy {
754    type CreateRealmResponseFut = fidl::client::QueryResponseFut<
755        ScenicRealmFactoryCreateRealmResult,
756        fidl::encoding::DefaultFuchsiaResourceDialect,
757    >;
758    fn r#create_realm(
759        &self,
760        mut payload: ScenicRealmFactoryCreateRealmRequest,
761    ) -> Self::CreateRealmResponseFut {
762        fn _decode(
763            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
764        ) -> Result<ScenicRealmFactoryCreateRealmResult, fidl::Error> {
765            let _response = fidl::client::decode_transaction_body::<
766                fidl::encoding::FlexibleResultType<
767                    fidl::encoding::EmptyStruct,
768                    fidl_fuchsia_testing_harness::OperationError,
769                >,
770                fidl::encoding::DefaultFuchsiaResourceDialect,
771                0x11f2157d1648e6ba,
772            >(_buf?)?
773            .into_result::<ScenicRealmFactoryMarker>("create_realm")?;
774            Ok(_response.map(|x| x))
775        }
776        self.client.send_query_and_decode::<
777            ScenicRealmFactoryCreateRealmRequest,
778            ScenicRealmFactoryCreateRealmResult,
779        >(
780            &mut payload,
781            0x11f2157d1648e6ba,
782            fidl::encoding::DynamicFlags::FLEXIBLE,
783            _decode,
784        )
785    }
786}
787
788pub struct ScenicRealmFactoryEventStream {
789    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
790}
791
792impl std::marker::Unpin for ScenicRealmFactoryEventStream {}
793
794impl futures::stream::FusedStream for ScenicRealmFactoryEventStream {
795    fn is_terminated(&self) -> bool {
796        self.event_receiver.is_terminated()
797    }
798}
799
800impl futures::Stream for ScenicRealmFactoryEventStream {
801    type Item = Result<ScenicRealmFactoryEvent, fidl::Error>;
802
803    fn poll_next(
804        mut self: std::pin::Pin<&mut Self>,
805        cx: &mut std::task::Context<'_>,
806    ) -> std::task::Poll<Option<Self::Item>> {
807        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
808            &mut self.event_receiver,
809            cx
810        )?) {
811            Some(buf) => std::task::Poll::Ready(Some(ScenicRealmFactoryEvent::decode(buf))),
812            None => std::task::Poll::Ready(None),
813        }
814    }
815}
816
817#[derive(Debug)]
818pub enum ScenicRealmFactoryEvent {
819    #[non_exhaustive]
820    _UnknownEvent {
821        /// Ordinal of the event that was sent.
822        ordinal: u64,
823    },
824}
825
826impl ScenicRealmFactoryEvent {
827    /// Decodes a message buffer as a [`ScenicRealmFactoryEvent`].
828    fn decode(
829        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
830    ) -> Result<ScenicRealmFactoryEvent, fidl::Error> {
831        let (bytes, _handles) = buf.split_mut();
832        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
833        debug_assert_eq!(tx_header.tx_id, 0);
834        match tx_header.ordinal {
835            _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
836                Ok(ScenicRealmFactoryEvent::_UnknownEvent { ordinal: tx_header.ordinal })
837            }
838            _ => Err(fidl::Error::UnknownOrdinal {
839                ordinal: tx_header.ordinal,
840                protocol_name:
841                    <ScenicRealmFactoryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
842            }),
843        }
844    }
845}
846
847/// A Stream of incoming requests for fuchsia.ui.test.context/ScenicRealmFactory.
848pub struct ScenicRealmFactoryRequestStream {
849    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
850    is_terminated: bool,
851}
852
853impl std::marker::Unpin for ScenicRealmFactoryRequestStream {}
854
855impl futures::stream::FusedStream for ScenicRealmFactoryRequestStream {
856    fn is_terminated(&self) -> bool {
857        self.is_terminated
858    }
859}
860
861impl fidl::endpoints::RequestStream for ScenicRealmFactoryRequestStream {
862    type Protocol = ScenicRealmFactoryMarker;
863    type ControlHandle = ScenicRealmFactoryControlHandle;
864
865    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
866        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
867    }
868
869    fn control_handle(&self) -> Self::ControlHandle {
870        ScenicRealmFactoryControlHandle { inner: self.inner.clone() }
871    }
872
873    fn into_inner(
874        self,
875    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
876    {
877        (self.inner, self.is_terminated)
878    }
879
880    fn from_inner(
881        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
882        is_terminated: bool,
883    ) -> Self {
884        Self { inner, is_terminated }
885    }
886}
887
888impl futures::Stream for ScenicRealmFactoryRequestStream {
889    type Item = Result<ScenicRealmFactoryRequest, fidl::Error>;
890
891    fn poll_next(
892        mut self: std::pin::Pin<&mut Self>,
893        cx: &mut std::task::Context<'_>,
894    ) -> std::task::Poll<Option<Self::Item>> {
895        let this = &mut *self;
896        if this.inner.check_shutdown(cx) {
897            this.is_terminated = true;
898            return std::task::Poll::Ready(None);
899        }
900        if this.is_terminated {
901            panic!("polled ScenicRealmFactoryRequestStream after completion");
902        }
903        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
904            |bytes, handles| {
905                match this.inner.channel().read_etc(cx, bytes, handles) {
906                    std::task::Poll::Ready(Ok(())) => {}
907                    std::task::Poll::Pending => return std::task::Poll::Pending,
908                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
909                        this.is_terminated = true;
910                        return std::task::Poll::Ready(None);
911                    }
912                    std::task::Poll::Ready(Err(e)) => {
913                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
914                            e.into(),
915                        ))));
916                    }
917                }
918
919                // A message has been received from the channel
920                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
921
922                std::task::Poll::Ready(Some(match header.ordinal {
923                0x11f2157d1648e6ba => {
924                    header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
925                    let mut req = fidl::new_empty!(ScenicRealmFactoryCreateRealmRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
926                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ScenicRealmFactoryCreateRealmRequest>(&header, _body_bytes, handles, &mut req)?;
927                    let control_handle = ScenicRealmFactoryControlHandle {
928                        inner: this.inner.clone(),
929                    };
930                    Ok(ScenicRealmFactoryRequest::CreateRealm {payload: req,
931                        responder: ScenicRealmFactoryCreateRealmResponder {
932                            control_handle: std::mem::ManuallyDrop::new(control_handle),
933                            tx_id: header.tx_id,
934                        },
935                    })
936                }
937                _ if header.tx_id == 0 && header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
938                    Ok(ScenicRealmFactoryRequest::_UnknownMethod {
939                        ordinal: header.ordinal,
940                        control_handle: ScenicRealmFactoryControlHandle { inner: this.inner.clone() },
941                        method_type: fidl::MethodType::OneWay,
942                    })
943                }
944                _ if header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
945                    this.inner.send_framework_err(
946                        fidl::encoding::FrameworkErr::UnknownMethod,
947                        header.tx_id,
948                        header.ordinal,
949                        header.dynamic_flags(),
950                        (bytes, handles),
951                    )?;
952                    Ok(ScenicRealmFactoryRequest::_UnknownMethod {
953                        ordinal: header.ordinal,
954                        control_handle: ScenicRealmFactoryControlHandle { inner: this.inner.clone() },
955                        method_type: fidl::MethodType::TwoWay,
956                    })
957                }
958                _ => Err(fidl::Error::UnknownOrdinal {
959                    ordinal: header.ordinal,
960                    protocol_name: <ScenicRealmFactoryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
961                }),
962            }))
963            },
964        )
965    }
966}
967
968/// ScenicRealmFactory creates test realm for Scenic related tests, and give
969/// the realm proxy to test suite so that test suite can access protocols in
970/// test realm. Only the protocols served by Scenic are available.
971#[derive(Debug)]
972pub enum ScenicRealmFactoryRequest {
973    CreateRealm {
974        payload: ScenicRealmFactoryCreateRealmRequest,
975        responder: ScenicRealmFactoryCreateRealmResponder,
976    },
977    /// An interaction was received which does not match any known method.
978    #[non_exhaustive]
979    _UnknownMethod {
980        /// Ordinal of the method that was called.
981        ordinal: u64,
982        control_handle: ScenicRealmFactoryControlHandle,
983        method_type: fidl::MethodType,
984    },
985}
986
987impl ScenicRealmFactoryRequest {
988    #[allow(irrefutable_let_patterns)]
989    pub fn into_create_realm(
990        self,
991    ) -> Option<(ScenicRealmFactoryCreateRealmRequest, ScenicRealmFactoryCreateRealmResponder)>
992    {
993        if let ScenicRealmFactoryRequest::CreateRealm { payload, responder } = self {
994            Some((payload, responder))
995        } else {
996            None
997        }
998    }
999
1000    /// Name of the method defined in FIDL
1001    pub fn method_name(&self) -> &'static str {
1002        match *self {
1003            ScenicRealmFactoryRequest::CreateRealm { .. } => "create_realm",
1004            ScenicRealmFactoryRequest::_UnknownMethod {
1005                method_type: fidl::MethodType::OneWay,
1006                ..
1007            } => "unknown one-way method",
1008            ScenicRealmFactoryRequest::_UnknownMethod {
1009                method_type: fidl::MethodType::TwoWay,
1010                ..
1011            } => "unknown two-way method",
1012        }
1013    }
1014}
1015
1016#[derive(Debug, Clone)]
1017pub struct ScenicRealmFactoryControlHandle {
1018    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1019}
1020
1021impl fidl::endpoints::ControlHandle for ScenicRealmFactoryControlHandle {
1022    fn shutdown(&self) {
1023        self.inner.shutdown()
1024    }
1025
1026    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
1027        self.inner.shutdown_with_epitaph(status)
1028    }
1029
1030    fn is_closed(&self) -> bool {
1031        self.inner.channel().is_closed()
1032    }
1033    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
1034        self.inner.channel().on_closed()
1035    }
1036
1037    #[cfg(target_os = "fuchsia")]
1038    fn signal_peer(
1039        &self,
1040        clear_mask: zx::Signals,
1041        set_mask: zx::Signals,
1042    ) -> Result<(), zx_status::Status> {
1043        use fidl::Peered;
1044        self.inner.channel().signal_peer(clear_mask, set_mask)
1045    }
1046}
1047
1048impl ScenicRealmFactoryControlHandle {}
1049
1050#[must_use = "FIDL methods require a response to be sent"]
1051#[derive(Debug)]
1052pub struct ScenicRealmFactoryCreateRealmResponder {
1053    control_handle: std::mem::ManuallyDrop<ScenicRealmFactoryControlHandle>,
1054    tx_id: u32,
1055}
1056
1057/// Set the the channel to be shutdown (see [`ScenicRealmFactoryControlHandle::shutdown`])
1058/// if the responder is dropped without sending a response, so that the client
1059/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
1060impl std::ops::Drop for ScenicRealmFactoryCreateRealmResponder {
1061    fn drop(&mut self) {
1062        self.control_handle.shutdown();
1063        // Safety: drops once, never accessed again
1064        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1065    }
1066}
1067
1068impl fidl::endpoints::Responder for ScenicRealmFactoryCreateRealmResponder {
1069    type ControlHandle = ScenicRealmFactoryControlHandle;
1070
1071    fn control_handle(&self) -> &ScenicRealmFactoryControlHandle {
1072        &self.control_handle
1073    }
1074
1075    fn drop_without_shutdown(mut self) {
1076        // Safety: drops once, never accessed again due to mem::forget
1077        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1078        // Prevent Drop from running (which would shut down the channel)
1079        std::mem::forget(self);
1080    }
1081}
1082
1083impl ScenicRealmFactoryCreateRealmResponder {
1084    /// Sends a response to the FIDL transaction.
1085    ///
1086    /// Sets the channel to shutdown if an error occurs.
1087    pub fn send(
1088        self,
1089        mut result: Result<(), fidl_fuchsia_testing_harness::OperationError>,
1090    ) -> Result<(), fidl::Error> {
1091        let _result = self.send_raw(result);
1092        if _result.is_err() {
1093            self.control_handle.shutdown();
1094        }
1095        self.drop_without_shutdown();
1096        _result
1097    }
1098
1099    /// Similar to "send" but does not shutdown the channel if an error occurs.
1100    pub fn send_no_shutdown_on_err(
1101        self,
1102        mut result: Result<(), fidl_fuchsia_testing_harness::OperationError>,
1103    ) -> Result<(), fidl::Error> {
1104        let _result = self.send_raw(result);
1105        self.drop_without_shutdown();
1106        _result
1107    }
1108
1109    fn send_raw(
1110        &self,
1111        mut result: Result<(), fidl_fuchsia_testing_harness::OperationError>,
1112    ) -> Result<(), fidl::Error> {
1113        self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
1114            fidl::encoding::EmptyStruct,
1115            fidl_fuchsia_testing_harness::OperationError,
1116        >>(
1117            fidl::encoding::FlexibleResult::new(result),
1118            self.tx_id,
1119            0x11f2157d1648e6ba,
1120            fidl::encoding::DynamicFlags::FLEXIBLE,
1121        )
1122    }
1123}
1124
1125mod internal {
1126    use super::*;
1127
1128    impl RealmFactoryCreateRealmRequest {
1129        #[inline(always)]
1130        fn max_ordinal_present(&self) -> u64 {
1131            if let Some(_) = self.display_max_layer_count {
1132                return 6;
1133            }
1134            if let Some(_) = self.display_refresh_rate_millihertz {
1135                return 5;
1136            }
1137            if let Some(_) = self.display_dimensions {
1138                return 4;
1139            }
1140            if let Some(_) = self.device_pixel_ratio {
1141                return 3;
1142            }
1143            if let Some(_) = self.display_rotation {
1144                return 2;
1145            }
1146            if let Some(_) = self.realm_server {
1147                return 1;
1148            }
1149            0
1150        }
1151    }
1152
1153    impl fidl::encoding::ResourceTypeMarker for RealmFactoryCreateRealmRequest {
1154        type Borrowed<'a> = &'a mut Self;
1155        fn take_or_borrow<'a>(
1156            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
1157        ) -> Self::Borrowed<'a> {
1158            value
1159        }
1160    }
1161
1162    unsafe impl fidl::encoding::TypeMarker for RealmFactoryCreateRealmRequest {
1163        type Owned = Self;
1164
1165        #[inline(always)]
1166        fn inline_align(_context: fidl::encoding::Context) -> usize {
1167            8
1168        }
1169
1170        #[inline(always)]
1171        fn inline_size(_context: fidl::encoding::Context) -> usize {
1172            16
1173        }
1174    }
1175
1176    unsafe impl
1177        fidl::encoding::Encode<
1178            RealmFactoryCreateRealmRequest,
1179            fidl::encoding::DefaultFuchsiaResourceDialect,
1180        > for &mut RealmFactoryCreateRealmRequest
1181    {
1182        unsafe fn encode(
1183            self,
1184            encoder: &mut fidl::encoding::Encoder<
1185                '_,
1186                fidl::encoding::DefaultFuchsiaResourceDialect,
1187            >,
1188            offset: usize,
1189            mut depth: fidl::encoding::Depth,
1190        ) -> fidl::Result<()> {
1191            encoder.debug_check_bounds::<RealmFactoryCreateRealmRequest>(offset);
1192            // Vector header
1193            let max_ordinal: u64 = self.max_ordinal_present();
1194            encoder.write_num(max_ordinal, offset);
1195            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1196            // Calling encoder.out_of_line_offset(0) is not allowed.
1197            if max_ordinal == 0 {
1198                return Ok(());
1199            }
1200            depth.increment()?;
1201            let envelope_size = 8;
1202            let bytes_len = max_ordinal as usize * envelope_size;
1203            #[allow(unused_variables)]
1204            let offset = encoder.out_of_line_offset(bytes_len);
1205            let mut _prev_end_offset: usize = 0;
1206            if 1 > max_ordinal {
1207                return Ok(());
1208            }
1209
1210            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1211            // are envelope_size bytes.
1212            let cur_offset: usize = (1 - 1) * envelope_size;
1213
1214            // Zero reserved fields.
1215            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1216
1217            // Safety:
1218            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1219            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1220            //   envelope_size bytes, there is always sufficient room.
1221            fidl::encoding::encode_in_envelope_optional::<
1222                fidl::encoding::Endpoint<
1223                    fidl::endpoints::ServerEnd<fidl_fuchsia_testing_harness::RealmProxy_Marker>,
1224                >,
1225                fidl::encoding::DefaultFuchsiaResourceDialect,
1226            >(
1227                self.realm_server.as_mut().map(
1228                    <fidl::encoding::Endpoint<
1229                        fidl::endpoints::ServerEnd<fidl_fuchsia_testing_harness::RealmProxy_Marker>,
1230                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1231                ),
1232                encoder,
1233                offset + cur_offset,
1234                depth,
1235            )?;
1236
1237            _prev_end_offset = cur_offset + envelope_size;
1238            if 2 > max_ordinal {
1239                return Ok(());
1240            }
1241
1242            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1243            // are envelope_size bytes.
1244            let cur_offset: usize = (2 - 1) * envelope_size;
1245
1246            // Zero reserved fields.
1247            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1248
1249            // Safety:
1250            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1251            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1252            //   envelope_size bytes, there is always sufficient room.
1253            fidl::encoding::encode_in_envelope_optional::<
1254                u32,
1255                fidl::encoding::DefaultFuchsiaResourceDialect,
1256            >(
1257                self.display_rotation
1258                    .as_ref()
1259                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1260                encoder,
1261                offset + cur_offset,
1262                depth,
1263            )?;
1264
1265            _prev_end_offset = cur_offset + envelope_size;
1266            if 3 > max_ordinal {
1267                return Ok(());
1268            }
1269
1270            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1271            // are envelope_size bytes.
1272            let cur_offset: usize = (3 - 1) * envelope_size;
1273
1274            // Zero reserved fields.
1275            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1276
1277            // Safety:
1278            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1279            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1280            //   envelope_size bytes, there is always sufficient room.
1281            fidl::encoding::encode_in_envelope_optional::<
1282                f32,
1283                fidl::encoding::DefaultFuchsiaResourceDialect,
1284            >(
1285                self.device_pixel_ratio
1286                    .as_ref()
1287                    .map(<f32 as fidl::encoding::ValueTypeMarker>::borrow),
1288                encoder,
1289                offset + cur_offset,
1290                depth,
1291            )?;
1292
1293            _prev_end_offset = cur_offset + envelope_size;
1294            if 4 > max_ordinal {
1295                return Ok(());
1296            }
1297
1298            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1299            // are envelope_size bytes.
1300            let cur_offset: usize = (4 - 1) * envelope_size;
1301
1302            // Zero reserved fields.
1303            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1304
1305            // Safety:
1306            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1307            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1308            //   envelope_size bytes, there is always sufficient room.
1309            fidl::encoding::encode_in_envelope_optional::<
1310                fidl_fuchsia_math::SizeU,
1311                fidl::encoding::DefaultFuchsiaResourceDialect,
1312            >(
1313                self.display_dimensions
1314                    .as_ref()
1315                    .map(<fidl_fuchsia_math::SizeU as fidl::encoding::ValueTypeMarker>::borrow),
1316                encoder,
1317                offset + cur_offset,
1318                depth,
1319            )?;
1320
1321            _prev_end_offset = cur_offset + envelope_size;
1322            if 5 > max_ordinal {
1323                return Ok(());
1324            }
1325
1326            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1327            // are envelope_size bytes.
1328            let cur_offset: usize = (5 - 1) * envelope_size;
1329
1330            // Zero reserved fields.
1331            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1332
1333            // Safety:
1334            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1335            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1336            //   envelope_size bytes, there is always sufficient room.
1337            fidl::encoding::encode_in_envelope_optional::<
1338                u32,
1339                fidl::encoding::DefaultFuchsiaResourceDialect,
1340            >(
1341                self.display_refresh_rate_millihertz
1342                    .as_ref()
1343                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1344                encoder,
1345                offset + cur_offset,
1346                depth,
1347            )?;
1348
1349            _prev_end_offset = cur_offset + envelope_size;
1350            if 6 > max_ordinal {
1351                return Ok(());
1352            }
1353
1354            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1355            // are envelope_size bytes.
1356            let cur_offset: usize = (6 - 1) * envelope_size;
1357
1358            // Zero reserved fields.
1359            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1360
1361            // Safety:
1362            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1363            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1364            //   envelope_size bytes, there is always sufficient room.
1365            fidl::encoding::encode_in_envelope_optional::<
1366                u32,
1367                fidl::encoding::DefaultFuchsiaResourceDialect,
1368            >(
1369                self.display_max_layer_count
1370                    .as_ref()
1371                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1372                encoder,
1373                offset + cur_offset,
1374                depth,
1375            )?;
1376
1377            _prev_end_offset = cur_offset + envelope_size;
1378
1379            Ok(())
1380        }
1381    }
1382
1383    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
1384        for RealmFactoryCreateRealmRequest
1385    {
1386        #[inline(always)]
1387        fn new_empty() -> Self {
1388            Self::default()
1389        }
1390
1391        unsafe fn decode(
1392            &mut self,
1393            decoder: &mut fidl::encoding::Decoder<
1394                '_,
1395                fidl::encoding::DefaultFuchsiaResourceDialect,
1396            >,
1397            offset: usize,
1398            mut depth: fidl::encoding::Depth,
1399        ) -> fidl::Result<()> {
1400            decoder.debug_check_bounds::<Self>(offset);
1401            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1402                None => return Err(fidl::Error::NotNullable),
1403                Some(len) => len,
1404            };
1405            // Calling decoder.out_of_line_offset(0) is not allowed.
1406            if len == 0 {
1407                return Ok(());
1408            };
1409            depth.increment()?;
1410            let envelope_size = 8;
1411            let bytes_len = len * envelope_size;
1412            let offset = decoder.out_of_line_offset(bytes_len)?;
1413            // Decode the envelope for each type.
1414            let mut _next_ordinal_to_read = 0;
1415            let mut next_offset = offset;
1416            let end_offset = offset + bytes_len;
1417            _next_ordinal_to_read += 1;
1418            if next_offset >= end_offset {
1419                return Ok(());
1420            }
1421
1422            // Decode unknown envelopes for gaps in ordinals.
1423            while _next_ordinal_to_read < 1 {
1424                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1425                _next_ordinal_to_read += 1;
1426                next_offset += envelope_size;
1427            }
1428
1429            let next_out_of_line = decoder.next_out_of_line();
1430            let handles_before = decoder.remaining_handles();
1431            if let Some((inlined, num_bytes, num_handles)) =
1432                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1433            {
1434                let member_inline_size = <fidl::encoding::Endpoint<
1435                    fidl::endpoints::ServerEnd<fidl_fuchsia_testing_harness::RealmProxy_Marker>,
1436                > as fidl::encoding::TypeMarker>::inline_size(
1437                    decoder.context
1438                );
1439                if inlined != (member_inline_size <= 4) {
1440                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1441                }
1442                let inner_offset;
1443                let mut inner_depth = depth.clone();
1444                if inlined {
1445                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1446                    inner_offset = next_offset;
1447                } else {
1448                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1449                    inner_depth.increment()?;
1450                }
1451                let val_ref = self.realm_server.get_or_insert_with(|| {
1452                    fidl::new_empty!(
1453                        fidl::encoding::Endpoint<
1454                            fidl::endpoints::ServerEnd<
1455                                fidl_fuchsia_testing_harness::RealmProxy_Marker,
1456                            >,
1457                        >,
1458                        fidl::encoding::DefaultFuchsiaResourceDialect
1459                    )
1460                });
1461                fidl::decode!(
1462                    fidl::encoding::Endpoint<
1463                        fidl::endpoints::ServerEnd<fidl_fuchsia_testing_harness::RealmProxy_Marker>,
1464                    >,
1465                    fidl::encoding::DefaultFuchsiaResourceDialect,
1466                    val_ref,
1467                    decoder,
1468                    inner_offset,
1469                    inner_depth
1470                )?;
1471                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1472                {
1473                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1474                }
1475                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1476                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1477                }
1478            }
1479
1480            next_offset += envelope_size;
1481            _next_ordinal_to_read += 1;
1482            if next_offset >= end_offset {
1483                return Ok(());
1484            }
1485
1486            // Decode unknown envelopes for gaps in ordinals.
1487            while _next_ordinal_to_read < 2 {
1488                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1489                _next_ordinal_to_read += 1;
1490                next_offset += envelope_size;
1491            }
1492
1493            let next_out_of_line = decoder.next_out_of_line();
1494            let handles_before = decoder.remaining_handles();
1495            if let Some((inlined, num_bytes, num_handles)) =
1496                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1497            {
1498                let member_inline_size =
1499                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1500                if inlined != (member_inline_size <= 4) {
1501                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1502                }
1503                let inner_offset;
1504                let mut inner_depth = depth.clone();
1505                if inlined {
1506                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1507                    inner_offset = next_offset;
1508                } else {
1509                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1510                    inner_depth.increment()?;
1511                }
1512                let val_ref = self.display_rotation.get_or_insert_with(|| {
1513                    fidl::new_empty!(u32, fidl::encoding::DefaultFuchsiaResourceDialect)
1514                });
1515                fidl::decode!(
1516                    u32,
1517                    fidl::encoding::DefaultFuchsiaResourceDialect,
1518                    val_ref,
1519                    decoder,
1520                    inner_offset,
1521                    inner_depth
1522                )?;
1523                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1524                {
1525                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1526                }
1527                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1528                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1529                }
1530            }
1531
1532            next_offset += envelope_size;
1533            _next_ordinal_to_read += 1;
1534            if next_offset >= end_offset {
1535                return Ok(());
1536            }
1537
1538            // Decode unknown envelopes for gaps in ordinals.
1539            while _next_ordinal_to_read < 3 {
1540                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1541                _next_ordinal_to_read += 1;
1542                next_offset += envelope_size;
1543            }
1544
1545            let next_out_of_line = decoder.next_out_of_line();
1546            let handles_before = decoder.remaining_handles();
1547            if let Some((inlined, num_bytes, num_handles)) =
1548                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1549            {
1550                let member_inline_size =
1551                    <f32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1552                if inlined != (member_inline_size <= 4) {
1553                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1554                }
1555                let inner_offset;
1556                let mut inner_depth = depth.clone();
1557                if inlined {
1558                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1559                    inner_offset = next_offset;
1560                } else {
1561                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1562                    inner_depth.increment()?;
1563                }
1564                let val_ref = self.device_pixel_ratio.get_or_insert_with(|| {
1565                    fidl::new_empty!(f32, fidl::encoding::DefaultFuchsiaResourceDialect)
1566                });
1567                fidl::decode!(
1568                    f32,
1569                    fidl::encoding::DefaultFuchsiaResourceDialect,
1570                    val_ref,
1571                    decoder,
1572                    inner_offset,
1573                    inner_depth
1574                )?;
1575                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1576                {
1577                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1578                }
1579                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1580                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1581                }
1582            }
1583
1584            next_offset += envelope_size;
1585            _next_ordinal_to_read += 1;
1586            if next_offset >= end_offset {
1587                return Ok(());
1588            }
1589
1590            // Decode unknown envelopes for gaps in ordinals.
1591            while _next_ordinal_to_read < 4 {
1592                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1593                _next_ordinal_to_read += 1;
1594                next_offset += envelope_size;
1595            }
1596
1597            let next_out_of_line = decoder.next_out_of_line();
1598            let handles_before = decoder.remaining_handles();
1599            if let Some((inlined, num_bytes, num_handles)) =
1600                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1601            {
1602                let member_inline_size =
1603                    <fidl_fuchsia_math::SizeU as fidl::encoding::TypeMarker>::inline_size(
1604                        decoder.context,
1605                    );
1606                if inlined != (member_inline_size <= 4) {
1607                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1608                }
1609                let inner_offset;
1610                let mut inner_depth = depth.clone();
1611                if inlined {
1612                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1613                    inner_offset = next_offset;
1614                } else {
1615                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1616                    inner_depth.increment()?;
1617                }
1618                let val_ref = self.display_dimensions.get_or_insert_with(|| {
1619                    fidl::new_empty!(
1620                        fidl_fuchsia_math::SizeU,
1621                        fidl::encoding::DefaultFuchsiaResourceDialect
1622                    )
1623                });
1624                fidl::decode!(
1625                    fidl_fuchsia_math::SizeU,
1626                    fidl::encoding::DefaultFuchsiaResourceDialect,
1627                    val_ref,
1628                    decoder,
1629                    inner_offset,
1630                    inner_depth
1631                )?;
1632                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1633                {
1634                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1635                }
1636                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1637                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1638                }
1639            }
1640
1641            next_offset += envelope_size;
1642            _next_ordinal_to_read += 1;
1643            if next_offset >= end_offset {
1644                return Ok(());
1645            }
1646
1647            // Decode unknown envelopes for gaps in ordinals.
1648            while _next_ordinal_to_read < 5 {
1649                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1650                _next_ordinal_to_read += 1;
1651                next_offset += envelope_size;
1652            }
1653
1654            let next_out_of_line = decoder.next_out_of_line();
1655            let handles_before = decoder.remaining_handles();
1656            if let Some((inlined, num_bytes, num_handles)) =
1657                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1658            {
1659                let member_inline_size =
1660                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1661                if inlined != (member_inline_size <= 4) {
1662                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1663                }
1664                let inner_offset;
1665                let mut inner_depth = depth.clone();
1666                if inlined {
1667                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1668                    inner_offset = next_offset;
1669                } else {
1670                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1671                    inner_depth.increment()?;
1672                }
1673                let val_ref = self.display_refresh_rate_millihertz.get_or_insert_with(|| {
1674                    fidl::new_empty!(u32, fidl::encoding::DefaultFuchsiaResourceDialect)
1675                });
1676                fidl::decode!(
1677                    u32,
1678                    fidl::encoding::DefaultFuchsiaResourceDialect,
1679                    val_ref,
1680                    decoder,
1681                    inner_offset,
1682                    inner_depth
1683                )?;
1684                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1685                {
1686                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1687                }
1688                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1689                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1690                }
1691            }
1692
1693            next_offset += envelope_size;
1694            _next_ordinal_to_read += 1;
1695            if next_offset >= end_offset {
1696                return Ok(());
1697            }
1698
1699            // Decode unknown envelopes for gaps in ordinals.
1700            while _next_ordinal_to_read < 6 {
1701                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1702                _next_ordinal_to_read += 1;
1703                next_offset += envelope_size;
1704            }
1705
1706            let next_out_of_line = decoder.next_out_of_line();
1707            let handles_before = decoder.remaining_handles();
1708            if let Some((inlined, num_bytes, num_handles)) =
1709                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1710            {
1711                let member_inline_size =
1712                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1713                if inlined != (member_inline_size <= 4) {
1714                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1715                }
1716                let inner_offset;
1717                let mut inner_depth = depth.clone();
1718                if inlined {
1719                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1720                    inner_offset = next_offset;
1721                } else {
1722                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1723                    inner_depth.increment()?;
1724                }
1725                let val_ref = self.display_max_layer_count.get_or_insert_with(|| {
1726                    fidl::new_empty!(u32, fidl::encoding::DefaultFuchsiaResourceDialect)
1727                });
1728                fidl::decode!(
1729                    u32,
1730                    fidl::encoding::DefaultFuchsiaResourceDialect,
1731                    val_ref,
1732                    decoder,
1733                    inner_offset,
1734                    inner_depth
1735                )?;
1736                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1737                {
1738                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1739                }
1740                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1741                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1742                }
1743            }
1744
1745            next_offset += envelope_size;
1746
1747            // Decode the remaining unknown envelopes.
1748            while next_offset < end_offset {
1749                _next_ordinal_to_read += 1;
1750                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1751                next_offset += envelope_size;
1752            }
1753
1754            Ok(())
1755        }
1756    }
1757
1758    impl ScenicRealmFactoryCreateRealmRequest {
1759        #[inline(always)]
1760        fn max_ordinal_present(&self) -> u64 {
1761            if let Some(_) = self.display_max_layer_count {
1762                return 7;
1763            }
1764            if let Some(_) = self.display_refresh_rate_millihertz {
1765                return 6;
1766            }
1767            if let Some(_) = self.display_dimensions {
1768                return 5;
1769            }
1770            if let Some(_) = self.display_composition {
1771                return 4;
1772            }
1773            if let Some(_) = self.display_rotation {
1774                return 3;
1775            }
1776            if let Some(_) = self.renderer {
1777                return 2;
1778            }
1779            if let Some(_) = self.realm_server {
1780                return 1;
1781            }
1782            0
1783        }
1784    }
1785
1786    impl fidl::encoding::ResourceTypeMarker for ScenicRealmFactoryCreateRealmRequest {
1787        type Borrowed<'a> = &'a mut Self;
1788        fn take_or_borrow<'a>(
1789            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
1790        ) -> Self::Borrowed<'a> {
1791            value
1792        }
1793    }
1794
1795    unsafe impl fidl::encoding::TypeMarker for ScenicRealmFactoryCreateRealmRequest {
1796        type Owned = Self;
1797
1798        #[inline(always)]
1799        fn inline_align(_context: fidl::encoding::Context) -> usize {
1800            8
1801        }
1802
1803        #[inline(always)]
1804        fn inline_size(_context: fidl::encoding::Context) -> usize {
1805            16
1806        }
1807    }
1808
1809    unsafe impl
1810        fidl::encoding::Encode<
1811            ScenicRealmFactoryCreateRealmRequest,
1812            fidl::encoding::DefaultFuchsiaResourceDialect,
1813        > for &mut ScenicRealmFactoryCreateRealmRequest
1814    {
1815        unsafe fn encode(
1816            self,
1817            encoder: &mut fidl::encoding::Encoder<
1818                '_,
1819                fidl::encoding::DefaultFuchsiaResourceDialect,
1820            >,
1821            offset: usize,
1822            mut depth: fidl::encoding::Depth,
1823        ) -> fidl::Result<()> {
1824            encoder.debug_check_bounds::<ScenicRealmFactoryCreateRealmRequest>(offset);
1825            // Vector header
1826            let max_ordinal: u64 = self.max_ordinal_present();
1827            encoder.write_num(max_ordinal, offset);
1828            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1829            // Calling encoder.out_of_line_offset(0) is not allowed.
1830            if max_ordinal == 0 {
1831                return Ok(());
1832            }
1833            depth.increment()?;
1834            let envelope_size = 8;
1835            let bytes_len = max_ordinal as usize * envelope_size;
1836            #[allow(unused_variables)]
1837            let offset = encoder.out_of_line_offset(bytes_len);
1838            let mut _prev_end_offset: usize = 0;
1839            if 1 > max_ordinal {
1840                return Ok(());
1841            }
1842
1843            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1844            // are envelope_size bytes.
1845            let cur_offset: usize = (1 - 1) * envelope_size;
1846
1847            // Zero reserved fields.
1848            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1849
1850            // Safety:
1851            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1852            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1853            //   envelope_size bytes, there is always sufficient room.
1854            fidl::encoding::encode_in_envelope_optional::<
1855                fidl::encoding::Endpoint<
1856                    fidl::endpoints::ServerEnd<fidl_fuchsia_testing_harness::RealmProxy_Marker>,
1857                >,
1858                fidl::encoding::DefaultFuchsiaResourceDialect,
1859            >(
1860                self.realm_server.as_mut().map(
1861                    <fidl::encoding::Endpoint<
1862                        fidl::endpoints::ServerEnd<fidl_fuchsia_testing_harness::RealmProxy_Marker>,
1863                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1864                ),
1865                encoder,
1866                offset + cur_offset,
1867                depth,
1868            )?;
1869
1870            _prev_end_offset = cur_offset + envelope_size;
1871            if 2 > max_ordinal {
1872                return Ok(());
1873            }
1874
1875            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1876            // are envelope_size bytes.
1877            let cur_offset: usize = (2 - 1) * envelope_size;
1878
1879            // Zero reserved fields.
1880            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1881
1882            // Safety:
1883            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1884            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1885            //   envelope_size bytes, there is always sufficient room.
1886            fidl::encoding::encode_in_envelope_optional::<
1887                RendererType,
1888                fidl::encoding::DefaultFuchsiaResourceDialect,
1889            >(
1890                self.renderer
1891                    .as_ref()
1892                    .map(<RendererType as fidl::encoding::ValueTypeMarker>::borrow),
1893                encoder,
1894                offset + cur_offset,
1895                depth,
1896            )?;
1897
1898            _prev_end_offset = cur_offset + envelope_size;
1899            if 3 > max_ordinal {
1900                return Ok(());
1901            }
1902
1903            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1904            // are envelope_size bytes.
1905            let cur_offset: usize = (3 - 1) * envelope_size;
1906
1907            // Zero reserved fields.
1908            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1909
1910            // Safety:
1911            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1912            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1913            //   envelope_size bytes, there is always sufficient room.
1914            fidl::encoding::encode_in_envelope_optional::<
1915                u64,
1916                fidl::encoding::DefaultFuchsiaResourceDialect,
1917            >(
1918                self.display_rotation
1919                    .as_ref()
1920                    .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1921                encoder,
1922                offset + cur_offset,
1923                depth,
1924            )?;
1925
1926            _prev_end_offset = cur_offset + envelope_size;
1927            if 4 > max_ordinal {
1928                return Ok(());
1929            }
1930
1931            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1932            // are envelope_size bytes.
1933            let cur_offset: usize = (4 - 1) * envelope_size;
1934
1935            // Zero reserved fields.
1936            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1937
1938            // Safety:
1939            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1940            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1941            //   envelope_size bytes, there is always sufficient room.
1942            fidl::encoding::encode_in_envelope_optional::<
1943                bool,
1944                fidl::encoding::DefaultFuchsiaResourceDialect,
1945            >(
1946                self.display_composition
1947                    .as_ref()
1948                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
1949                encoder,
1950                offset + cur_offset,
1951                depth,
1952            )?;
1953
1954            _prev_end_offset = cur_offset + envelope_size;
1955            if 5 > max_ordinal {
1956                return Ok(());
1957            }
1958
1959            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1960            // are envelope_size bytes.
1961            let cur_offset: usize = (5 - 1) * envelope_size;
1962
1963            // Zero reserved fields.
1964            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1965
1966            // Safety:
1967            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1968            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1969            //   envelope_size bytes, there is always sufficient room.
1970            fidl::encoding::encode_in_envelope_optional::<
1971                fidl_fuchsia_math::SizeU,
1972                fidl::encoding::DefaultFuchsiaResourceDialect,
1973            >(
1974                self.display_dimensions
1975                    .as_ref()
1976                    .map(<fidl_fuchsia_math::SizeU as fidl::encoding::ValueTypeMarker>::borrow),
1977                encoder,
1978                offset + cur_offset,
1979                depth,
1980            )?;
1981
1982            _prev_end_offset = cur_offset + envelope_size;
1983            if 6 > max_ordinal {
1984                return Ok(());
1985            }
1986
1987            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1988            // are envelope_size bytes.
1989            let cur_offset: usize = (6 - 1) * envelope_size;
1990
1991            // Zero reserved fields.
1992            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1993
1994            // Safety:
1995            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1996            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1997            //   envelope_size bytes, there is always sufficient room.
1998            fidl::encoding::encode_in_envelope_optional::<
1999                u32,
2000                fidl::encoding::DefaultFuchsiaResourceDialect,
2001            >(
2002                self.display_refresh_rate_millihertz
2003                    .as_ref()
2004                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2005                encoder,
2006                offset + cur_offset,
2007                depth,
2008            )?;
2009
2010            _prev_end_offset = cur_offset + envelope_size;
2011            if 7 > max_ordinal {
2012                return Ok(());
2013            }
2014
2015            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2016            // are envelope_size bytes.
2017            let cur_offset: usize = (7 - 1) * envelope_size;
2018
2019            // Zero reserved fields.
2020            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2021
2022            // Safety:
2023            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2024            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2025            //   envelope_size bytes, there is always sufficient room.
2026            fidl::encoding::encode_in_envelope_optional::<
2027                u32,
2028                fidl::encoding::DefaultFuchsiaResourceDialect,
2029            >(
2030                self.display_max_layer_count
2031                    .as_ref()
2032                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2033                encoder,
2034                offset + cur_offset,
2035                depth,
2036            )?;
2037
2038            _prev_end_offset = cur_offset + envelope_size;
2039
2040            Ok(())
2041        }
2042    }
2043
2044    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
2045        for ScenicRealmFactoryCreateRealmRequest
2046    {
2047        #[inline(always)]
2048        fn new_empty() -> Self {
2049            Self::default()
2050        }
2051
2052        unsafe fn decode(
2053            &mut self,
2054            decoder: &mut fidl::encoding::Decoder<
2055                '_,
2056                fidl::encoding::DefaultFuchsiaResourceDialect,
2057            >,
2058            offset: usize,
2059            mut depth: fidl::encoding::Depth,
2060        ) -> fidl::Result<()> {
2061            decoder.debug_check_bounds::<Self>(offset);
2062            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2063                None => return Err(fidl::Error::NotNullable),
2064                Some(len) => len,
2065            };
2066            // Calling decoder.out_of_line_offset(0) is not allowed.
2067            if len == 0 {
2068                return Ok(());
2069            };
2070            depth.increment()?;
2071            let envelope_size = 8;
2072            let bytes_len = len * envelope_size;
2073            let offset = decoder.out_of_line_offset(bytes_len)?;
2074            // Decode the envelope for each type.
2075            let mut _next_ordinal_to_read = 0;
2076            let mut next_offset = offset;
2077            let end_offset = offset + bytes_len;
2078            _next_ordinal_to_read += 1;
2079            if next_offset >= end_offset {
2080                return Ok(());
2081            }
2082
2083            // Decode unknown envelopes for gaps in ordinals.
2084            while _next_ordinal_to_read < 1 {
2085                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2086                _next_ordinal_to_read += 1;
2087                next_offset += envelope_size;
2088            }
2089
2090            let next_out_of_line = decoder.next_out_of_line();
2091            let handles_before = decoder.remaining_handles();
2092            if let Some((inlined, num_bytes, num_handles)) =
2093                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2094            {
2095                let member_inline_size = <fidl::encoding::Endpoint<
2096                    fidl::endpoints::ServerEnd<fidl_fuchsia_testing_harness::RealmProxy_Marker>,
2097                > as fidl::encoding::TypeMarker>::inline_size(
2098                    decoder.context
2099                );
2100                if inlined != (member_inline_size <= 4) {
2101                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2102                }
2103                let inner_offset;
2104                let mut inner_depth = depth.clone();
2105                if inlined {
2106                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2107                    inner_offset = next_offset;
2108                } else {
2109                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2110                    inner_depth.increment()?;
2111                }
2112                let val_ref = self.realm_server.get_or_insert_with(|| {
2113                    fidl::new_empty!(
2114                        fidl::encoding::Endpoint<
2115                            fidl::endpoints::ServerEnd<
2116                                fidl_fuchsia_testing_harness::RealmProxy_Marker,
2117                            >,
2118                        >,
2119                        fidl::encoding::DefaultFuchsiaResourceDialect
2120                    )
2121                });
2122                fidl::decode!(
2123                    fidl::encoding::Endpoint<
2124                        fidl::endpoints::ServerEnd<fidl_fuchsia_testing_harness::RealmProxy_Marker>,
2125                    >,
2126                    fidl::encoding::DefaultFuchsiaResourceDialect,
2127                    val_ref,
2128                    decoder,
2129                    inner_offset,
2130                    inner_depth
2131                )?;
2132                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2133                {
2134                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2135                }
2136                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2137                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2138                }
2139            }
2140
2141            next_offset += envelope_size;
2142            _next_ordinal_to_read += 1;
2143            if next_offset >= end_offset {
2144                return Ok(());
2145            }
2146
2147            // Decode unknown envelopes for gaps in ordinals.
2148            while _next_ordinal_to_read < 2 {
2149                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2150                _next_ordinal_to_read += 1;
2151                next_offset += envelope_size;
2152            }
2153
2154            let next_out_of_line = decoder.next_out_of_line();
2155            let handles_before = decoder.remaining_handles();
2156            if let Some((inlined, num_bytes, num_handles)) =
2157                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2158            {
2159                let member_inline_size =
2160                    <RendererType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2161                if inlined != (member_inline_size <= 4) {
2162                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2163                }
2164                let inner_offset;
2165                let mut inner_depth = depth.clone();
2166                if inlined {
2167                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2168                    inner_offset = next_offset;
2169                } else {
2170                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2171                    inner_depth.increment()?;
2172                }
2173                let val_ref = self.renderer.get_or_insert_with(|| {
2174                    fidl::new_empty!(RendererType, fidl::encoding::DefaultFuchsiaResourceDialect)
2175                });
2176                fidl::decode!(
2177                    RendererType,
2178                    fidl::encoding::DefaultFuchsiaResourceDialect,
2179                    val_ref,
2180                    decoder,
2181                    inner_offset,
2182                    inner_depth
2183                )?;
2184                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2185                {
2186                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2187                }
2188                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2189                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2190                }
2191            }
2192
2193            next_offset += envelope_size;
2194            _next_ordinal_to_read += 1;
2195            if next_offset >= end_offset {
2196                return Ok(());
2197            }
2198
2199            // Decode unknown envelopes for gaps in ordinals.
2200            while _next_ordinal_to_read < 3 {
2201                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2202                _next_ordinal_to_read += 1;
2203                next_offset += envelope_size;
2204            }
2205
2206            let next_out_of_line = decoder.next_out_of_line();
2207            let handles_before = decoder.remaining_handles();
2208            if let Some((inlined, num_bytes, num_handles)) =
2209                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2210            {
2211                let member_inline_size =
2212                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2213                if inlined != (member_inline_size <= 4) {
2214                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2215                }
2216                let inner_offset;
2217                let mut inner_depth = depth.clone();
2218                if inlined {
2219                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2220                    inner_offset = next_offset;
2221                } else {
2222                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2223                    inner_depth.increment()?;
2224                }
2225                let val_ref = self.display_rotation.get_or_insert_with(|| {
2226                    fidl::new_empty!(u64, fidl::encoding::DefaultFuchsiaResourceDialect)
2227                });
2228                fidl::decode!(
2229                    u64,
2230                    fidl::encoding::DefaultFuchsiaResourceDialect,
2231                    val_ref,
2232                    decoder,
2233                    inner_offset,
2234                    inner_depth
2235                )?;
2236                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2237                {
2238                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2239                }
2240                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2241                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2242                }
2243            }
2244
2245            next_offset += envelope_size;
2246            _next_ordinal_to_read += 1;
2247            if next_offset >= end_offset {
2248                return Ok(());
2249            }
2250
2251            // Decode unknown envelopes for gaps in ordinals.
2252            while _next_ordinal_to_read < 4 {
2253                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2254                _next_ordinal_to_read += 1;
2255                next_offset += envelope_size;
2256            }
2257
2258            let next_out_of_line = decoder.next_out_of_line();
2259            let handles_before = decoder.remaining_handles();
2260            if let Some((inlined, num_bytes, num_handles)) =
2261                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2262            {
2263                let member_inline_size =
2264                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2265                if inlined != (member_inline_size <= 4) {
2266                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2267                }
2268                let inner_offset;
2269                let mut inner_depth = depth.clone();
2270                if inlined {
2271                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2272                    inner_offset = next_offset;
2273                } else {
2274                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2275                    inner_depth.increment()?;
2276                }
2277                let val_ref = self.display_composition.get_or_insert_with(|| {
2278                    fidl::new_empty!(bool, fidl::encoding::DefaultFuchsiaResourceDialect)
2279                });
2280                fidl::decode!(
2281                    bool,
2282                    fidl::encoding::DefaultFuchsiaResourceDialect,
2283                    val_ref,
2284                    decoder,
2285                    inner_offset,
2286                    inner_depth
2287                )?;
2288                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2289                {
2290                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2291                }
2292                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2293                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2294                }
2295            }
2296
2297            next_offset += envelope_size;
2298            _next_ordinal_to_read += 1;
2299            if next_offset >= end_offset {
2300                return Ok(());
2301            }
2302
2303            // Decode unknown envelopes for gaps in ordinals.
2304            while _next_ordinal_to_read < 5 {
2305                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2306                _next_ordinal_to_read += 1;
2307                next_offset += envelope_size;
2308            }
2309
2310            let next_out_of_line = decoder.next_out_of_line();
2311            let handles_before = decoder.remaining_handles();
2312            if let Some((inlined, num_bytes, num_handles)) =
2313                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2314            {
2315                let member_inline_size =
2316                    <fidl_fuchsia_math::SizeU as fidl::encoding::TypeMarker>::inline_size(
2317                        decoder.context,
2318                    );
2319                if inlined != (member_inline_size <= 4) {
2320                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2321                }
2322                let inner_offset;
2323                let mut inner_depth = depth.clone();
2324                if inlined {
2325                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2326                    inner_offset = next_offset;
2327                } else {
2328                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2329                    inner_depth.increment()?;
2330                }
2331                let val_ref = self.display_dimensions.get_or_insert_with(|| {
2332                    fidl::new_empty!(
2333                        fidl_fuchsia_math::SizeU,
2334                        fidl::encoding::DefaultFuchsiaResourceDialect
2335                    )
2336                });
2337                fidl::decode!(
2338                    fidl_fuchsia_math::SizeU,
2339                    fidl::encoding::DefaultFuchsiaResourceDialect,
2340                    val_ref,
2341                    decoder,
2342                    inner_offset,
2343                    inner_depth
2344                )?;
2345                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2346                {
2347                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2348                }
2349                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2350                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2351                }
2352            }
2353
2354            next_offset += envelope_size;
2355            _next_ordinal_to_read += 1;
2356            if next_offset >= end_offset {
2357                return Ok(());
2358            }
2359
2360            // Decode unknown envelopes for gaps in ordinals.
2361            while _next_ordinal_to_read < 6 {
2362                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2363                _next_ordinal_to_read += 1;
2364                next_offset += envelope_size;
2365            }
2366
2367            let next_out_of_line = decoder.next_out_of_line();
2368            let handles_before = decoder.remaining_handles();
2369            if let Some((inlined, num_bytes, num_handles)) =
2370                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2371            {
2372                let member_inline_size =
2373                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2374                if inlined != (member_inline_size <= 4) {
2375                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2376                }
2377                let inner_offset;
2378                let mut inner_depth = depth.clone();
2379                if inlined {
2380                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2381                    inner_offset = next_offset;
2382                } else {
2383                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2384                    inner_depth.increment()?;
2385                }
2386                let val_ref = self.display_refresh_rate_millihertz.get_or_insert_with(|| {
2387                    fidl::new_empty!(u32, fidl::encoding::DefaultFuchsiaResourceDialect)
2388                });
2389                fidl::decode!(
2390                    u32,
2391                    fidl::encoding::DefaultFuchsiaResourceDialect,
2392                    val_ref,
2393                    decoder,
2394                    inner_offset,
2395                    inner_depth
2396                )?;
2397                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2398                {
2399                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2400                }
2401                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2402                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2403                }
2404            }
2405
2406            next_offset += envelope_size;
2407            _next_ordinal_to_read += 1;
2408            if next_offset >= end_offset {
2409                return Ok(());
2410            }
2411
2412            // Decode unknown envelopes for gaps in ordinals.
2413            while _next_ordinal_to_read < 7 {
2414                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2415                _next_ordinal_to_read += 1;
2416                next_offset += envelope_size;
2417            }
2418
2419            let next_out_of_line = decoder.next_out_of_line();
2420            let handles_before = decoder.remaining_handles();
2421            if let Some((inlined, num_bytes, num_handles)) =
2422                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2423            {
2424                let member_inline_size =
2425                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2426                if inlined != (member_inline_size <= 4) {
2427                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2428                }
2429                let inner_offset;
2430                let mut inner_depth = depth.clone();
2431                if inlined {
2432                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2433                    inner_offset = next_offset;
2434                } else {
2435                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2436                    inner_depth.increment()?;
2437                }
2438                let val_ref = self.display_max_layer_count.get_or_insert_with(|| {
2439                    fidl::new_empty!(u32, fidl::encoding::DefaultFuchsiaResourceDialect)
2440                });
2441                fidl::decode!(
2442                    u32,
2443                    fidl::encoding::DefaultFuchsiaResourceDialect,
2444                    val_ref,
2445                    decoder,
2446                    inner_offset,
2447                    inner_depth
2448                )?;
2449                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2450                {
2451                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2452                }
2453                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2454                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2455                }
2456            }
2457
2458            next_offset += envelope_size;
2459
2460            // Decode the remaining unknown envelopes.
2461            while next_offset < end_offset {
2462                _next_ordinal_to_read += 1;
2463                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2464                next_offset += envelope_size;
2465            }
2466
2467            Ok(())
2468        }
2469    }
2470}