1#![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_app_common::*;
11use futures::future::{self, MaybeDone, TryFutureExt};
12use zx_status;
13
14#[derive(Debug, PartialEq)]
15pub struct ViewProviderCreateView2Request {
16 pub args: CreateView2Args,
17}
18
19impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
20 for ViewProviderCreateView2Request
21{
22}
23
24#[derive(Debug, PartialEq)]
25pub struct ViewProviderCreateViewWithViewRefRequest {
26 pub token: fidl::EventPair,
27 pub view_ref_control: fidl_fuchsia_ui_views::ViewRefControl,
28 pub view_ref: fidl_fuchsia_ui_views::ViewRef,
29}
30
31impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
32 for ViewProviderCreateViewWithViewRefRequest
33{
34}
35
36#[derive(Debug, Default, PartialEq)]
37pub struct CreateView2Args {
38 pub view_creation_token: Option<fidl_fuchsia_ui_views::ViewCreationToken>,
41 #[doc(hidden)]
42 pub __source_breaking: fidl::marker::SourceBreaking,
43}
44
45impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for CreateView2Args {}
46
47#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
48pub struct ViewProviderMarker;
49
50impl fidl::endpoints::ProtocolMarker for ViewProviderMarker {
51 type Proxy = ViewProviderProxy;
52 type RequestStream = ViewProviderRequestStream;
53 #[cfg(target_os = "fuchsia")]
54 type SynchronousProxy = ViewProviderSynchronousProxy;
55
56 const DEBUG_NAME: &'static str = "fuchsia.ui.app.ViewProvider";
57}
58impl fidl::endpoints::DiscoverableProtocolMarker for ViewProviderMarker {}
59
60pub trait ViewProviderProxyInterface: Send + Sync {
61 fn r#create_view_with_view_ref(
62 &self,
63 token: fidl::EventPair,
64 view_ref_control: fidl_fuchsia_ui_views::ViewRefControl,
65 view_ref: fidl_fuchsia_ui_views::ViewRef,
66 ) -> Result<(), fidl::Error>;
67 fn r#create_view2(&self, args: CreateView2Args) -> Result<(), fidl::Error>;
68}
69#[derive(Debug)]
70#[cfg(target_os = "fuchsia")]
71pub struct ViewProviderSynchronousProxy {
72 client: fidl::client::sync::Client,
73}
74
75#[cfg(target_os = "fuchsia")]
76impl fidl::endpoints::SynchronousProxy for ViewProviderSynchronousProxy {
77 type Proxy = ViewProviderProxy;
78 type Protocol = ViewProviderMarker;
79
80 fn from_channel(inner: fidl::Channel) -> Self {
81 Self::new(inner)
82 }
83
84 fn into_channel(self) -> fidl::Channel {
85 self.client.into_channel()
86 }
87
88 fn as_channel(&self) -> &fidl::Channel {
89 self.client.as_channel()
90 }
91}
92
93#[cfg(target_os = "fuchsia")]
94impl ViewProviderSynchronousProxy {
95 pub fn new(channel: fidl::Channel) -> Self {
96 Self { client: fidl::client::sync::Client::new(channel) }
97 }
98
99 pub fn into_channel(self) -> fidl::Channel {
100 self.client.into_channel()
101 }
102
103 pub fn wait_for_event(
106 &self,
107 deadline: zx::MonotonicInstant,
108 ) -> Result<ViewProviderEvent, fidl::Error> {
109 ViewProviderEvent::decode(self.client.wait_for_event::<ViewProviderMarker>(deadline)?)
110 }
111
112 pub fn r#create_view_with_view_ref(
126 &self,
127 mut token: fidl::EventPair,
128 mut view_ref_control: fidl_fuchsia_ui_views::ViewRefControl,
129 mut view_ref: fidl_fuchsia_ui_views::ViewRef,
130 ) -> Result<(), fidl::Error> {
131 self.client.send::<ViewProviderCreateViewWithViewRefRequest>(
132 (token, &mut view_ref_control, &mut view_ref),
133 0x586d23a5e4f69a86,
134 fidl::encoding::DynamicFlags::empty(),
135 )
136 }
137
138 pub fn r#create_view2(&self, mut args: CreateView2Args) -> Result<(), fidl::Error> {
143 self.client.send::<ViewProviderCreateView2Request>(
144 (&mut args,),
145 0x78b4a51b5e630482,
146 fidl::encoding::DynamicFlags::empty(),
147 )
148 }
149}
150
151#[cfg(target_os = "fuchsia")]
152impl From<ViewProviderSynchronousProxy> for zx::NullableHandle {
153 fn from(value: ViewProviderSynchronousProxy) -> Self {
154 value.into_channel().into()
155 }
156}
157
158#[cfg(target_os = "fuchsia")]
159impl From<fidl::Channel> for ViewProviderSynchronousProxy {
160 fn from(value: fidl::Channel) -> Self {
161 Self::new(value)
162 }
163}
164
165#[cfg(target_os = "fuchsia")]
166impl fidl::endpoints::FromClient for ViewProviderSynchronousProxy {
167 type Protocol = ViewProviderMarker;
168
169 fn from_client(value: fidl::endpoints::ClientEnd<ViewProviderMarker>) -> Self {
170 Self::new(value.into_channel())
171 }
172}
173
174#[derive(Debug, Clone)]
175pub struct ViewProviderProxy {
176 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
177}
178
179impl fidl::endpoints::Proxy for ViewProviderProxy {
180 type Protocol = ViewProviderMarker;
181
182 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
183 Self::new(inner)
184 }
185
186 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
187 self.client.into_channel().map_err(|client| Self { client })
188 }
189
190 fn as_channel(&self) -> &::fidl::AsyncChannel {
191 self.client.as_channel()
192 }
193}
194
195impl ViewProviderProxy {
196 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
198 let protocol_name = <ViewProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
199 Self { client: fidl::client::Client::new(channel, protocol_name) }
200 }
201
202 pub fn take_event_stream(&self) -> ViewProviderEventStream {
208 ViewProviderEventStream { event_receiver: self.client.take_event_receiver() }
209 }
210
211 pub fn r#create_view_with_view_ref(
225 &self,
226 mut token: fidl::EventPair,
227 mut view_ref_control: fidl_fuchsia_ui_views::ViewRefControl,
228 mut view_ref: fidl_fuchsia_ui_views::ViewRef,
229 ) -> Result<(), fidl::Error> {
230 ViewProviderProxyInterface::r#create_view_with_view_ref(
231 self,
232 token,
233 view_ref_control,
234 view_ref,
235 )
236 }
237
238 pub fn r#create_view2(&self, mut args: CreateView2Args) -> Result<(), fidl::Error> {
243 ViewProviderProxyInterface::r#create_view2(self, args)
244 }
245}
246
247impl ViewProviderProxyInterface for ViewProviderProxy {
248 fn r#create_view_with_view_ref(
249 &self,
250 mut token: fidl::EventPair,
251 mut view_ref_control: fidl_fuchsia_ui_views::ViewRefControl,
252 mut view_ref: fidl_fuchsia_ui_views::ViewRef,
253 ) -> Result<(), fidl::Error> {
254 self.client.send::<ViewProviderCreateViewWithViewRefRequest>(
255 (token, &mut view_ref_control, &mut view_ref),
256 0x586d23a5e4f69a86,
257 fidl::encoding::DynamicFlags::empty(),
258 )
259 }
260
261 fn r#create_view2(&self, mut args: CreateView2Args) -> Result<(), fidl::Error> {
262 self.client.send::<ViewProviderCreateView2Request>(
263 (&mut args,),
264 0x78b4a51b5e630482,
265 fidl::encoding::DynamicFlags::empty(),
266 )
267 }
268}
269
270pub struct ViewProviderEventStream {
271 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
272}
273
274impl std::marker::Unpin for ViewProviderEventStream {}
275
276impl futures::stream::FusedStream for ViewProviderEventStream {
277 fn is_terminated(&self) -> bool {
278 self.event_receiver.is_terminated()
279 }
280}
281
282impl futures::Stream for ViewProviderEventStream {
283 type Item = Result<ViewProviderEvent, fidl::Error>;
284
285 fn poll_next(
286 mut self: std::pin::Pin<&mut Self>,
287 cx: &mut std::task::Context<'_>,
288 ) -> std::task::Poll<Option<Self::Item>> {
289 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
290 &mut self.event_receiver,
291 cx
292 )?) {
293 Some(buf) => std::task::Poll::Ready(Some(ViewProviderEvent::decode(buf))),
294 None => std::task::Poll::Ready(None),
295 }
296 }
297}
298
299#[derive(Debug)]
300pub enum ViewProviderEvent {}
301
302impl ViewProviderEvent {
303 fn decode(
305 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
306 ) -> Result<ViewProviderEvent, fidl::Error> {
307 let (bytes, _handles) = buf.split_mut();
308 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
309 debug_assert_eq!(tx_header.tx_id, 0);
310 match tx_header.ordinal {
311 _ => Err(fidl::Error::UnknownOrdinal {
312 ordinal: tx_header.ordinal,
313 protocol_name: <ViewProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
314 }),
315 }
316 }
317}
318
319pub struct ViewProviderRequestStream {
321 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
322 is_terminated: bool,
323}
324
325impl std::marker::Unpin for ViewProviderRequestStream {}
326
327impl futures::stream::FusedStream for ViewProviderRequestStream {
328 fn is_terminated(&self) -> bool {
329 self.is_terminated
330 }
331}
332
333impl fidl::endpoints::RequestStream for ViewProviderRequestStream {
334 type Protocol = ViewProviderMarker;
335 type ControlHandle = ViewProviderControlHandle;
336
337 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
338 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
339 }
340
341 fn control_handle(&self) -> Self::ControlHandle {
342 ViewProviderControlHandle { inner: self.inner.clone() }
343 }
344
345 fn into_inner(
346 self,
347 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
348 {
349 (self.inner, self.is_terminated)
350 }
351
352 fn from_inner(
353 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
354 is_terminated: bool,
355 ) -> Self {
356 Self { inner, is_terminated }
357 }
358}
359
360impl futures::Stream for ViewProviderRequestStream {
361 type Item = Result<ViewProviderRequest, fidl::Error>;
362
363 fn poll_next(
364 mut self: std::pin::Pin<&mut Self>,
365 cx: &mut std::task::Context<'_>,
366 ) -> std::task::Poll<Option<Self::Item>> {
367 let this = &mut *self;
368 if this.inner.check_shutdown(cx) {
369 this.is_terminated = true;
370 return std::task::Poll::Ready(None);
371 }
372 if this.is_terminated {
373 panic!("polled ViewProviderRequestStream after completion");
374 }
375 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
376 |bytes, handles| {
377 match this.inner.channel().read_etc(cx, bytes, handles) {
378 std::task::Poll::Ready(Ok(())) => {}
379 std::task::Poll::Pending => return std::task::Poll::Pending,
380 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
381 this.is_terminated = true;
382 return std::task::Poll::Ready(None);
383 }
384 std::task::Poll::Ready(Err(e)) => {
385 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
386 e.into(),
387 ))));
388 }
389 }
390
391 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
393
394 std::task::Poll::Ready(Some(match header.ordinal {
395 0x586d23a5e4f69a86 => {
396 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
397 let mut req = fidl::new_empty!(
398 ViewProviderCreateViewWithViewRefRequest,
399 fidl::encoding::DefaultFuchsiaResourceDialect
400 );
401 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ViewProviderCreateViewWithViewRefRequest>(&header, _body_bytes, handles, &mut req)?;
402 let control_handle =
403 ViewProviderControlHandle { inner: this.inner.clone() };
404 Ok(ViewProviderRequest::CreateViewWithViewRef {
405 token: req.token,
406 view_ref_control: req.view_ref_control,
407 view_ref: req.view_ref,
408
409 control_handle,
410 })
411 }
412 0x78b4a51b5e630482 => {
413 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
414 let mut req = fidl::new_empty!(
415 ViewProviderCreateView2Request,
416 fidl::encoding::DefaultFuchsiaResourceDialect
417 );
418 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ViewProviderCreateView2Request>(&header, _body_bytes, handles, &mut req)?;
419 let control_handle =
420 ViewProviderControlHandle { inner: this.inner.clone() };
421 Ok(ViewProviderRequest::CreateView2 { args: req.args, control_handle })
422 }
423 _ => Err(fidl::Error::UnknownOrdinal {
424 ordinal: header.ordinal,
425 protocol_name:
426 <ViewProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
427 }),
428 }))
429 },
430 )
431 }
432}
433
434#[derive(Debug)]
444pub enum ViewProviderRequest {
445 CreateViewWithViewRef {
459 token: fidl::EventPair,
460 view_ref_control: fidl_fuchsia_ui_views::ViewRefControl,
461 view_ref: fidl_fuchsia_ui_views::ViewRef,
462 control_handle: ViewProviderControlHandle,
463 },
464 CreateView2 { args: CreateView2Args, control_handle: ViewProviderControlHandle },
469}
470
471impl ViewProviderRequest {
472 #[allow(irrefutable_let_patterns)]
473 pub fn into_create_view_with_view_ref(
474 self,
475 ) -> Option<(
476 fidl::EventPair,
477 fidl_fuchsia_ui_views::ViewRefControl,
478 fidl_fuchsia_ui_views::ViewRef,
479 ViewProviderControlHandle,
480 )> {
481 if let ViewProviderRequest::CreateViewWithViewRef {
482 token,
483 view_ref_control,
484 view_ref,
485 control_handle,
486 } = self
487 {
488 Some((token, view_ref_control, view_ref, control_handle))
489 } else {
490 None
491 }
492 }
493
494 #[allow(irrefutable_let_patterns)]
495 pub fn into_create_view2(self) -> Option<(CreateView2Args, ViewProviderControlHandle)> {
496 if let ViewProviderRequest::CreateView2 { args, control_handle } = self {
497 Some((args, control_handle))
498 } else {
499 None
500 }
501 }
502
503 pub fn method_name(&self) -> &'static str {
505 match *self {
506 ViewProviderRequest::CreateViewWithViewRef { .. } => "create_view_with_view_ref",
507 ViewProviderRequest::CreateView2 { .. } => "create_view2",
508 }
509 }
510}
511
512#[derive(Debug, Clone)]
513pub struct ViewProviderControlHandle {
514 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
515}
516
517impl ViewProviderControlHandle {
518 pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
519 self.inner.shutdown_with_epitaph(status.into())
520 }
521}
522
523impl fidl::endpoints::ControlHandle for ViewProviderControlHandle {
524 fn shutdown(&self) {
525 self.inner.shutdown()
526 }
527
528 fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
529 self.inner.shutdown_with_epitaph(status)
530 }
531
532 fn is_closed(&self) -> bool {
533 self.inner.channel().is_closed()
534 }
535 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
536 self.inner.channel().on_closed()
537 }
538
539 #[cfg(target_os = "fuchsia")]
540 fn signal_peer(
541 &self,
542 clear_mask: zx::Signals,
543 set_mask: zx::Signals,
544 ) -> Result<(), zx_status::Status> {
545 use fidl::Peered;
546 self.inner.channel().signal_peer(clear_mask, set_mask)
547 }
548}
549
550impl ViewProviderControlHandle {}
551
552mod internal {
553 use super::*;
554
555 impl fidl::encoding::ResourceTypeMarker for ViewProviderCreateView2Request {
556 type Borrowed<'a> = &'a mut Self;
557 fn take_or_borrow<'a>(
558 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
559 ) -> Self::Borrowed<'a> {
560 value
561 }
562 }
563
564 unsafe impl fidl::encoding::TypeMarker for ViewProviderCreateView2Request {
565 type Owned = Self;
566
567 #[inline(always)]
568 fn inline_align(_context: fidl::encoding::Context) -> usize {
569 8
570 }
571
572 #[inline(always)]
573 fn inline_size(_context: fidl::encoding::Context) -> usize {
574 16
575 }
576 }
577
578 unsafe impl
579 fidl::encoding::Encode<
580 ViewProviderCreateView2Request,
581 fidl::encoding::DefaultFuchsiaResourceDialect,
582 > for &mut ViewProviderCreateView2Request
583 {
584 #[inline]
585 unsafe fn encode(
586 self,
587 encoder: &mut fidl::encoding::Encoder<
588 '_,
589 fidl::encoding::DefaultFuchsiaResourceDialect,
590 >,
591 offset: usize,
592 _depth: fidl::encoding::Depth,
593 ) -> fidl::Result<()> {
594 encoder.debug_check_bounds::<ViewProviderCreateView2Request>(offset);
595 fidl::encoding::Encode::<
597 ViewProviderCreateView2Request,
598 fidl::encoding::DefaultFuchsiaResourceDialect,
599 >::encode(
600 (<CreateView2Args as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
601 &mut self.args,
602 ),),
603 encoder,
604 offset,
605 _depth,
606 )
607 }
608 }
609 unsafe impl<
610 T0: fidl::encoding::Encode<CreateView2Args, fidl::encoding::DefaultFuchsiaResourceDialect>,
611 >
612 fidl::encoding::Encode<
613 ViewProviderCreateView2Request,
614 fidl::encoding::DefaultFuchsiaResourceDialect,
615 > for (T0,)
616 {
617 #[inline]
618 unsafe fn encode(
619 self,
620 encoder: &mut fidl::encoding::Encoder<
621 '_,
622 fidl::encoding::DefaultFuchsiaResourceDialect,
623 >,
624 offset: usize,
625 depth: fidl::encoding::Depth,
626 ) -> fidl::Result<()> {
627 encoder.debug_check_bounds::<ViewProviderCreateView2Request>(offset);
628 self.0.encode(encoder, offset + 0, depth)?;
632 Ok(())
633 }
634 }
635
636 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
637 for ViewProviderCreateView2Request
638 {
639 #[inline(always)]
640 fn new_empty() -> Self {
641 Self {
642 args: fidl::new_empty!(
643 CreateView2Args,
644 fidl::encoding::DefaultFuchsiaResourceDialect
645 ),
646 }
647 }
648
649 #[inline]
650 unsafe fn decode(
651 &mut self,
652 decoder: &mut fidl::encoding::Decoder<
653 '_,
654 fidl::encoding::DefaultFuchsiaResourceDialect,
655 >,
656 offset: usize,
657 _depth: fidl::encoding::Depth,
658 ) -> fidl::Result<()> {
659 decoder.debug_check_bounds::<Self>(offset);
660 fidl::decode!(
662 CreateView2Args,
663 fidl::encoding::DefaultFuchsiaResourceDialect,
664 &mut self.args,
665 decoder,
666 offset + 0,
667 _depth
668 )?;
669 Ok(())
670 }
671 }
672
673 impl fidl::encoding::ResourceTypeMarker for ViewProviderCreateViewWithViewRefRequest {
674 type Borrowed<'a> = &'a mut Self;
675 fn take_or_borrow<'a>(
676 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
677 ) -> Self::Borrowed<'a> {
678 value
679 }
680 }
681
682 unsafe impl fidl::encoding::TypeMarker for ViewProviderCreateViewWithViewRefRequest {
683 type Owned = Self;
684
685 #[inline(always)]
686 fn inline_align(_context: fidl::encoding::Context) -> usize {
687 4
688 }
689
690 #[inline(always)]
691 fn inline_size(_context: fidl::encoding::Context) -> usize {
692 12
693 }
694 }
695
696 unsafe impl
697 fidl::encoding::Encode<
698 ViewProviderCreateViewWithViewRefRequest,
699 fidl::encoding::DefaultFuchsiaResourceDialect,
700 > for &mut ViewProviderCreateViewWithViewRefRequest
701 {
702 #[inline]
703 unsafe fn encode(
704 self,
705 encoder: &mut fidl::encoding::Encoder<
706 '_,
707 fidl::encoding::DefaultFuchsiaResourceDialect,
708 >,
709 offset: usize,
710 _depth: fidl::encoding::Depth,
711 ) -> fidl::Result<()> {
712 encoder.debug_check_bounds::<ViewProviderCreateViewWithViewRefRequest>(offset);
713 fidl::encoding::Encode::<ViewProviderCreateViewWithViewRefRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
715 (
716 <fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.token),
717 <fidl_fuchsia_ui_views::ViewRefControl as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.view_ref_control),
718 <fidl_fuchsia_ui_views::ViewRef as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.view_ref),
719 ),
720 encoder, offset, _depth
721 )
722 }
723 }
724 unsafe impl<
725 T0: fidl::encoding::Encode<
726 fidl::encoding::HandleType<
727 fidl::EventPair,
728 { fidl::ObjectType::EVENTPAIR.into_raw() },
729 2147483648,
730 >,
731 fidl::encoding::DefaultFuchsiaResourceDialect,
732 >,
733 T1: fidl::encoding::Encode<
734 fidl_fuchsia_ui_views::ViewRefControl,
735 fidl::encoding::DefaultFuchsiaResourceDialect,
736 >,
737 T2: fidl::encoding::Encode<
738 fidl_fuchsia_ui_views::ViewRef,
739 fidl::encoding::DefaultFuchsiaResourceDialect,
740 >,
741 >
742 fidl::encoding::Encode<
743 ViewProviderCreateViewWithViewRefRequest,
744 fidl::encoding::DefaultFuchsiaResourceDialect,
745 > for (T0, T1, T2)
746 {
747 #[inline]
748 unsafe fn encode(
749 self,
750 encoder: &mut fidl::encoding::Encoder<
751 '_,
752 fidl::encoding::DefaultFuchsiaResourceDialect,
753 >,
754 offset: usize,
755 depth: fidl::encoding::Depth,
756 ) -> fidl::Result<()> {
757 encoder.debug_check_bounds::<ViewProviderCreateViewWithViewRefRequest>(offset);
758 self.0.encode(encoder, offset + 0, depth)?;
762 self.1.encode(encoder, offset + 4, depth)?;
763 self.2.encode(encoder, offset + 8, depth)?;
764 Ok(())
765 }
766 }
767
768 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
769 for ViewProviderCreateViewWithViewRefRequest
770 {
771 #[inline(always)]
772 fn new_empty() -> Self {
773 Self {
774 token: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
775 view_ref_control: fidl::new_empty!(
776 fidl_fuchsia_ui_views::ViewRefControl,
777 fidl::encoding::DefaultFuchsiaResourceDialect
778 ),
779 view_ref: fidl::new_empty!(
780 fidl_fuchsia_ui_views::ViewRef,
781 fidl::encoding::DefaultFuchsiaResourceDialect
782 ),
783 }
784 }
785
786 #[inline]
787 unsafe fn decode(
788 &mut self,
789 decoder: &mut fidl::encoding::Decoder<
790 '_,
791 fidl::encoding::DefaultFuchsiaResourceDialect,
792 >,
793 offset: usize,
794 _depth: fidl::encoding::Depth,
795 ) -> fidl::Result<()> {
796 decoder.debug_check_bounds::<Self>(offset);
797 fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.token, decoder, offset + 0, _depth)?;
799 fidl::decode!(
800 fidl_fuchsia_ui_views::ViewRefControl,
801 fidl::encoding::DefaultFuchsiaResourceDialect,
802 &mut self.view_ref_control,
803 decoder,
804 offset + 4,
805 _depth
806 )?;
807 fidl::decode!(
808 fidl_fuchsia_ui_views::ViewRef,
809 fidl::encoding::DefaultFuchsiaResourceDialect,
810 &mut self.view_ref,
811 decoder,
812 offset + 8,
813 _depth
814 )?;
815 Ok(())
816 }
817 }
818
819 impl CreateView2Args {
820 #[inline(always)]
821 fn max_ordinal_present(&self) -> u64 {
822 if let Some(_) = self.view_creation_token {
823 return 1;
824 }
825 0
826 }
827 }
828
829 impl fidl::encoding::ResourceTypeMarker for CreateView2Args {
830 type Borrowed<'a> = &'a mut Self;
831 fn take_or_borrow<'a>(
832 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
833 ) -> Self::Borrowed<'a> {
834 value
835 }
836 }
837
838 unsafe impl fidl::encoding::TypeMarker for CreateView2Args {
839 type Owned = Self;
840
841 #[inline(always)]
842 fn inline_align(_context: fidl::encoding::Context) -> usize {
843 8
844 }
845
846 #[inline(always)]
847 fn inline_size(_context: fidl::encoding::Context) -> usize {
848 16
849 }
850 }
851
852 unsafe impl
853 fidl::encoding::Encode<CreateView2Args, fidl::encoding::DefaultFuchsiaResourceDialect>
854 for &mut CreateView2Args
855 {
856 unsafe fn encode(
857 self,
858 encoder: &mut fidl::encoding::Encoder<
859 '_,
860 fidl::encoding::DefaultFuchsiaResourceDialect,
861 >,
862 offset: usize,
863 mut depth: fidl::encoding::Depth,
864 ) -> fidl::Result<()> {
865 encoder.debug_check_bounds::<CreateView2Args>(offset);
866 let max_ordinal: u64 = self.max_ordinal_present();
868 encoder.write_num(max_ordinal, offset);
869 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
870 if max_ordinal == 0 {
872 return Ok(());
873 }
874 depth.increment()?;
875 let envelope_size = 8;
876 let bytes_len = max_ordinal as usize * envelope_size;
877 #[allow(unused_variables)]
878 let offset = encoder.out_of_line_offset(bytes_len);
879 let mut _prev_end_offset: usize = 0;
880 if 1 > max_ordinal {
881 return Ok(());
882 }
883
884 let cur_offset: usize = (1 - 1) * envelope_size;
887
888 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
890
891 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_ui_views::ViewCreationToken, fidl::encoding::DefaultFuchsiaResourceDialect>(
896 self.view_creation_token.as_mut().map(<fidl_fuchsia_ui_views::ViewCreationToken as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
897 encoder, offset + cur_offset, depth
898 )?;
899
900 _prev_end_offset = cur_offset + envelope_size;
901
902 Ok(())
903 }
904 }
905
906 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
907 for CreateView2Args
908 {
909 #[inline(always)]
910 fn new_empty() -> Self {
911 Self::default()
912 }
913
914 unsafe fn decode(
915 &mut self,
916 decoder: &mut fidl::encoding::Decoder<
917 '_,
918 fidl::encoding::DefaultFuchsiaResourceDialect,
919 >,
920 offset: usize,
921 mut depth: fidl::encoding::Depth,
922 ) -> fidl::Result<()> {
923 decoder.debug_check_bounds::<Self>(offset);
924 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
925 None => return Err(fidl::Error::NotNullable),
926 Some(len) => len,
927 };
928 if len == 0 {
930 return Ok(());
931 };
932 depth.increment()?;
933 let envelope_size = 8;
934 let bytes_len = len * envelope_size;
935 let offset = decoder.out_of_line_offset(bytes_len)?;
936 let mut _next_ordinal_to_read = 0;
938 let mut next_offset = offset;
939 let end_offset = offset + bytes_len;
940 _next_ordinal_to_read += 1;
941 if next_offset >= end_offset {
942 return Ok(());
943 }
944
945 while _next_ordinal_to_read < 1 {
947 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
948 _next_ordinal_to_read += 1;
949 next_offset += envelope_size;
950 }
951
952 let next_out_of_line = decoder.next_out_of_line();
953 let handles_before = decoder.remaining_handles();
954 if let Some((inlined, num_bytes, num_handles)) =
955 fidl::encoding::decode_envelope_header(decoder, next_offset)?
956 {
957 let member_inline_size = <fidl_fuchsia_ui_views::ViewCreationToken as fidl::encoding::TypeMarker>::inline_size(decoder.context);
958 if inlined != (member_inline_size <= 4) {
959 return Err(fidl::Error::InvalidInlineBitInEnvelope);
960 }
961 let inner_offset;
962 let mut inner_depth = depth.clone();
963 if inlined {
964 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
965 inner_offset = next_offset;
966 } else {
967 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
968 inner_depth.increment()?;
969 }
970 let val_ref = self.view_creation_token.get_or_insert_with(|| {
971 fidl::new_empty!(
972 fidl_fuchsia_ui_views::ViewCreationToken,
973 fidl::encoding::DefaultFuchsiaResourceDialect
974 )
975 });
976 fidl::decode!(
977 fidl_fuchsia_ui_views::ViewCreationToken,
978 fidl::encoding::DefaultFuchsiaResourceDialect,
979 val_ref,
980 decoder,
981 inner_offset,
982 inner_depth
983 )?;
984 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
985 {
986 return Err(fidl::Error::InvalidNumBytesInEnvelope);
987 }
988 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
989 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
990 }
991 }
992
993 next_offset += envelope_size;
994
995 while next_offset < end_offset {
997 _next_ordinal_to_read += 1;
998 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
999 next_offset += envelope_size;
1000 }
1001
1002 Ok(())
1003 }
1004 }
1005}