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