Skip to main content

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