fidl_fuchsia_web__common/
fidl_fuchsia_web__common.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::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
8use futures::future::{self, MaybeDone, TryFutureExt};
9use zx_status;
10
11pub type CookieName = String;
12
13/// Unique identifier of a navigation. Can be used to correlate different phases for the
14/// same navigation. Guaranteed to be unique for all navigations in the same [`Context`].
15pub type NavigationId = u64;
16
17pub type Url = String;
18
19pub type UrlHostName = String;
20
21pub type UrlSchemeAndHostName = String;
22
23pub type UrlSchemeName = String;
24
25pub const MAX_HEADERS_COUNT: i32 = 4096;
26
27pub const MAX_HOST_LENGTH: i32 = 255;
28
29pub const MAX_RULE_COUNT: i32 = 4096;
30
31pub const MAX_SCHEME_AND_HOST_LENGTH: i32 = 513;
32
33pub const MAX_URL_LENGTH: i32 = 65536;
34
35pub const MAX_URL_SCHEME_NAME_LENGTH: i32 = 255;
36
37bitflags! {
38    /// Feature flags that allow augmenting Context behavior. Some features require additional services
39    /// in the service directory provided during context initialization. See
40    /// [`CreateContextParams.service_directory`].
41    #[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
42    pub struct ContextFeatureFlags: u64 {
43        /// Enables network access. Requires the following services:
44        /// - [`fuchsia.net.interfaces/State`]
45        /// - [`fuchsia.net.name/Lookup`]
46        /// - [`fuchsia.posix.socket/Provider`]
47        const NETWORK = 1;
48        /// Enables audio input and output. Requires the following services:
49        /// - [`fuchsia.media/Audio`]
50        /// - [`fuchsia.media/AudioDeviceEnumerator`]
51        /// - [`fuchsia.media/SessionAudioConsumerFactory`]
52        const AUDIO = 2;
53        /// Enables GPU-accelerated rendering of the web content. Requires the following services:
54        /// - [`fuchsia.vulkan.loader/Loader`]
55        /// The following service is required in order to collect Vulkan trace data.
56        /// - [`fuchsia.tracing.provider.Registry`]
57        const VULKAN = 4;
58        /// Enables hardware video decoding.
59        /// [`ContextFeatureFlags.VULKAN`] must be enabled as well.
60        /// Requires the following service:
61        /// - [`fuchsia.mediacodec/CodecFactory`]
62        const HARDWARE_VIDEO_DECODER = 8;
63        /// Disables video codecs that cannot be decoded in hardware.
64        /// Software decoders will only be used as fallbacks for hardware decoders, such as when
65        /// insufficient resources are available.
66        /// Requires [`ContextFeatureFlags.HARDWARE_VIDEO_DECODER`].
67        const HARDWARE_VIDEO_DECODER_ONLY = 16;
68        /// Enables Widevine CDM modules for EME API.
69        /// [`ContextFeatureFlags.VULKAN`] must be enabled as well.
70        /// Requires [`fuchsia.media.drm/Widevine`] service. Requires that a `cdm_data_directory` be
71        /// specified in [`CreateContextParams`].
72        const WIDEVINE_CDM = 32;
73        /// Allows embedders to render web content without graphical output or Scenic.
74        /// Not compatible with [`ContextFeatureFlags.VULKAN`].
75        const HEADLESS = 64;
76        /// Report telemetry data to the [`fuchsia.legacymetrics/MetricsRecorder`].
77        const LEGACYMETRICS = 128;
78        /// Enables input events for keyboard keypresses.
79        /// Requires [`fuchsia.ui.input3/Keyboard`], from which the events are obtained.
80        const KEYBOARD = 256;
81        /// Enables the use of onscreen virtual keyboards. The implementation will manage the state of
82        /// the keyboard in response to input/focus events in web content.
83        /// Requires the [`fuchsia.input.virtualkeyboard/ControllerCreator`] service and
84        /// [`ContextFeatureFlags.KEYBOARD`].
85        const VIRTUAL_KEYBOARD = 512;
86        /// Disables dynamic generation of machine-code from scripts (e.g. JavaScript) and other
87        /// technologies (e.g. WebAssembly). This should typically result in scripts being executed
88        /// by an interpreter, with associated loss in performance. Other technologies relying on
89        /// dynamic code generation may be provided in a limited form where feasible, or unavailable
90        /// if interpreting would render them unusable (as is likely the case for WebAssembly).
91        /// [`fuchsia.kernel/VmexResource`] is not required if this option is set.
92        const DISABLE_DYNAMIC_CODE_GENERATION = 1024;
93    }
94}
95
96impl ContextFeatureFlags {}
97
98bitflags! {
99    /// Identifies the types of input events which may be handled by a View.
100    #[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
101    pub struct InputTypes: u64 {
102        /// Keyboard events.
103        const KEY = 1;
104        /// Mouse button events, for any button.
105        const MOUSE_CLICK = 2;
106        /// Mouse scroll wheel events.
107        const MOUSE_WHEEL = 4;
108        /// Mouse movement events.
109        const MOUSE_MOVE = 8;
110        /// Single tapping with one finger.
111        const GESTURE_TAP = 16;
112        /// Pinching (for zooming).
113        const GESTURE_PINCH = 32;
114        /// Dragging a finger (for scrolling).
115        const GESTURE_DRAG = 64;
116        /// Matches all input types.
117        const ALL = 9223372036854775808;
118    }
119}
120
121impl InputTypes {}
122
123bitflags! {
124    /// Flags clients can set when connecting a [`NavigationEventListener`] to indicates interest in
125    /// optional features.
126    #[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
127    pub struct NavigationEventListenerFlags: u64 {
128        /// Enables `favicon` field in [`NavigationState`].
129        const FAVICON = 1;
130    }
131}
132
133impl NavigationEventListenerFlags {}
134
135bitflags! {
136    /// Identifies a navigation phase.
137    #[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
138    pub struct NavigationPhase: u32 {
139        /// Navigation is being started.
140        const START = 1;
141        /// Navigation was redirected.
142        const REDIRECT = 2;
143        /// Navigation response is being processed. At this point navigation hasn't been committed
144        /// yet, so it is not too late to cancel it.
145        const PROCESS_RESPONSE = 4;
146        /// Navigation has failed.
147        const FAIL = 8;
148    }
149}
150
151impl NavigationPhase {}
152
153/// Controls whether [`Frame.ConfigureInputTypes()`] should allow or deny processing of the
154/// specified [`InputTypes`].
155#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
156#[repr(i32)]
157pub enum AllowInputState {
158    Allow = 1,
159    Deny = 2,
160}
161
162impl AllowInputState {
163    #[inline]
164    pub fn from_primitive(prim: i32) -> Option<Self> {
165        match prim {
166            1 => Some(Self::Allow),
167            2 => Some(Self::Deny),
168            _ => None,
169        }
170    }
171
172    #[inline]
173    pub const fn into_primitive(self) -> i32 {
174        self as i32
175    }
176}
177
178/// Specifies the policy for automatic (non user-initiated) playback of video and audio content.
179#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
180#[repr(i32)]
181pub enum AutoplayPolicy {
182    /// All media is permitted to autoplay.
183    Allow = 1,
184    /// Allow autoplay when the document has received a user activation. This can be the result of
185    /// user action or [`LoadUrlParams.was_user_activated`] being set.
186    RequireUserActivation = 2,
187}
188
189impl AutoplayPolicy {
190    #[inline]
191    pub fn from_primitive(prim: i32) -> Option<Self> {
192        match prim {
193            1 => Some(Self::Allow),
194            2 => Some(Self::RequireUserActivation),
195            _ => None,
196        }
197    }
198
199    #[inline]
200    pub const fn into_primitive(self) -> i32 {
201        self as i32
202    }
203}
204
205#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
206#[repr(i32)]
207pub enum ConsoleLogLevel {
208    /// No logging.
209    None = 100,
210    /// Outputs messages from `console.debug()` and above levels.
211    Debug = -1,
212    /// Outputs messages from `console.log()`, `console.info()` and above levels.
213    Info = 0,
214    /// Outputs messages from `console.warn()` and `console.error()`.
215    Warn = 1,
216    /// Outputs messages from `console.error()`.
217    Error = 2,
218}
219
220impl ConsoleLogLevel {
221    #[inline]
222    pub fn from_primitive(prim: i32) -> Option<Self> {
223        match prim {
224            100 => Some(Self::None),
225            -1 => Some(Self::Debug),
226            0 => Some(Self::Info),
227            1 => Some(Self::Warn),
228            2 => Some(Self::Error),
229            _ => None,
230        }
231    }
232
233    #[inline]
234    pub const fn into_primitive(self) -> i32 {
235        self as i32
236    }
237}
238
239#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
240#[repr(i32)]
241pub enum ContextError {
242    /// The remote debugging service was not opened.
243    RemoteDebuggingPortNotOpened = 1,
244}
245
246impl ContextError {
247    #[inline]
248    pub fn from_primitive(prim: i32) -> Option<Self> {
249        match prim {
250            1 => Some(Self::RemoteDebuggingPortNotOpened),
251            _ => None,
252        }
253    }
254
255    #[inline]
256    pub const fn into_primitive(self) -> i32 {
257        self as i32
258    }
259}
260
261/// Indicates the reason for the error when `page_type` is set to [`PageType.ERROR`].
262#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
263pub enum ErrorDetail {
264    /// Page has failed to load. No content is rendered.
265    LoadFailed,
266    /// Tried to navigate to a site blocked by the explicit content filter. The corresponding
267    /// error page is rendered, see
268    /// [`CreateFrameParams.explicit_sites_filter_error_page`].
269    ExplicitContentBlocked,
270    /// The renderer process has crashed. No content is rendered.
271    Crash,
272    #[doc(hidden)]
273    __SourceBreaking { unknown_ordinal: u32 },
274}
275
276/// Pattern that matches an unknown `ErrorDetail` member.
277#[macro_export]
278macro_rules! ErrorDetailUnknown {
279    () => {
280        _
281    };
282}
283
284impl ErrorDetail {
285    #[inline]
286    pub fn from_primitive(prim: u32) -> Option<Self> {
287        match prim {
288            0 => Some(Self::LoadFailed),
289            1 => Some(Self::ExplicitContentBlocked),
290            2 => Some(Self::Crash),
291            _ => None,
292        }
293    }
294
295    #[inline]
296    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
297        match prim {
298            0 => Self::LoadFailed,
299            1 => Self::ExplicitContentBlocked,
300            2 => Self::Crash,
301            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
302        }
303    }
304
305    #[inline]
306    pub fn unknown() -> Self {
307        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
308    }
309
310    #[inline]
311    pub const fn into_primitive(self) -> u32 {
312        match self {
313            Self::LoadFailed => 0,
314            Self::ExplicitContentBlocked => 1,
315            Self::Crash => 2,
316            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
317        }
318    }
319
320    #[inline]
321    pub fn is_unknown(&self) -> bool {
322        match self {
323            Self::__SourceBreaking { unknown_ordinal: _ } => true,
324            _ => false,
325        }
326    }
327}
328
329/// Represents the return status of a [`Frame`] method.
330#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
331#[repr(i32)]
332pub enum FrameError {
333    /// An internal error occurred.
334    InternalError = 1,
335    /// The provided buffer is not UTF-8 encoded.
336    BufferNotUtf8 = 2,
337    /// The Frame's URL does not match any of the origins provided by the caller.
338    InvalidOrigin = 3,
339    /// The required `data` property is missing from a [`WebMessage`].
340    NoDataInMessage = 4,
341}
342
343impl FrameError {
344    #[inline]
345    pub fn from_primitive(prim: i32) -> Option<Self> {
346        match prim {
347            1 => Some(Self::InternalError),
348            2 => Some(Self::BufferNotUtf8),
349            3 => Some(Self::InvalidOrigin),
350            4 => Some(Self::NoDataInMessage),
351            _ => None,
352        }
353    }
354
355    #[inline]
356    pub const fn into_primitive(self) -> i32 {
357        self as i32
358    }
359}
360
361/// Characterizes the origin of a [`NavigationController.LoadUrl`] request.
362#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
363#[repr(u32)]
364pub enum LoadUrlReason {
365    /// Navigation was initiated by the user following a link.
366    Link = 0,
367    /// Navigation was initiated by a user-provided URL.
368    Typed = 1,
369}
370
371impl LoadUrlReason {
372    #[inline]
373    pub fn from_primitive(prim: u32) -> Option<Self> {
374        match prim {
375            0 => Some(Self::Link),
376            1 => Some(Self::Typed),
377            _ => None,
378        }
379    }
380
381    #[inline]
382    pub const fn into_primitive(self) -> u32 {
383        self as u32
384    }
385}
386
387/// Represents the return status of a [`NavigationController`] method.
388#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
389#[repr(i32)]
390pub enum NavigationControllerError {
391    /// The provided URL is invalid.
392    InvalidUrl = 1,
393    /// At least one of the provided headers was invalid.
394    InvalidHeader = 2,
395}
396
397impl NavigationControllerError {
398    #[inline]
399    pub fn from_primitive(prim: i32) -> Option<Self> {
400        match prim {
401            1 => Some(Self::InvalidUrl),
402            2 => Some(Self::InvalidHeader),
403            _ => None,
404        }
405    }
406
407    #[inline]
408    pub const fn into_primitive(self) -> i32 {
409        self as i32
410    }
411}
412
413/// Characterizes the page type in a [`NavigationState`].
414#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
415#[repr(u32)]
416pub enum PageType {
417    /// Regular web page.
418    Normal = 0,
419    /// Error page.
420    Error = 1,
421}
422
423impl PageType {
424    #[inline]
425    pub fn from_primitive(prim: u32) -> Option<Self> {
426        match prim {
427            0 => Some(Self::Normal),
428            1 => Some(Self::Error),
429            _ => None,
430        }
431    }
432
433    #[inline]
434    pub const fn into_primitive(self) -> u32 {
435        self as u32
436    }
437}
438
439/// A state for a web permission.
440#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
441#[repr(u8)]
442pub enum PermissionState {
443    /// Permission is denied.
444    Denied = 1,
445    /// Permission is granted.
446    Granted = 2,
447}
448
449impl PermissionState {
450    #[inline]
451    pub fn from_primitive(prim: u8) -> Option<Self> {
452        match prim {
453            1 => Some(Self::Denied),
454            2 => Some(Self::Granted),
455            _ => None,
456        }
457    }
458
459    #[inline]
460    pub const fn into_primitive(self) -> u8 {
461        self as u8
462    }
463}
464
465/// Identifies a type of permission that may be granted to a web origin.
466#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
467#[repr(u16)]
468pub enum PermissionType {
469    /// Permission to access microphone(s).
470    Microphone = 1,
471    /// Permission to access camera(s).
472    Camera = 2,
473    /// Permission to use device identifier(s) for EME.
474    ProtectedMediaIdentifier = 3,
475    /// Permission to use persistent storage.
476    PersistentStorage = 4,
477    /// Permission to display web notifications and use push messaging.
478    ///
479    /// This API does not currently support displaying web notifications, so while the permission
480    /// may be granted, this functionality should not be expected to work until such an API is
481    /// provided. For now, this permission is only meaningful as it pertains to push messaging.
482    Notifications = 5,
483}
484
485impl PermissionType {
486    #[inline]
487    pub fn from_primitive(prim: u16) -> Option<Self> {
488        match prim {
489            1 => Some(Self::Microphone),
490            2 => Some(Self::Camera),
491            3 => Some(Self::ProtectedMediaIdentifier),
492            4 => Some(Self::PersistentStorage),
493            5 => Some(Self::Notifications),
494            _ => None,
495        }
496    }
497
498    #[inline]
499    pub const fn into_primitive(self) -> u16 {
500        self as u16
501    }
502}
503
504/// Characterizes the type of reload.
505#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
506#[repr(u32)]
507pub enum ReloadType {
508    /// Reloads the current entry, bypassing the cache for the main resource.
509    PartialCache = 0,
510    /// Reloads the current entry, bypassing the cache entirely.
511    NoCache = 1,
512}
513
514impl ReloadType {
515    #[inline]
516    pub fn from_primitive(prim: u32) -> Option<Self> {
517        match prim {
518            0 => Some(Self::PartialCache),
519            1 => Some(Self::NoCache),
520            _ => None,
521        }
522    }
523
524    #[inline]
525    pub const fn into_primitive(self) -> u32 {
526        self as u32
527    }
528}
529
530#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
531#[repr(i32)]
532pub enum UrlRequestAction {
533    /// Allow the request to be processed.
534    Allow = 1,
535    /// Block the request.
536    Deny = 2,
537}
538
539impl UrlRequestAction {
540    #[inline]
541    pub fn from_primitive(prim: i32) -> Option<Self> {
542        match prim {
543            1 => Some(Self::Allow),
544            2 => Some(Self::Deny),
545            _ => None,
546        }
547    }
548
549    #[inline]
550    pub const fn into_primitive(self) -> i32 {
551        self as i32
552    }
553}
554
555#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
556#[repr(C)]
557pub struct ContextGetRemoteDebuggingPortResponse {
558    pub port: u16,
559}
560
561impl fidl::Persistable for ContextGetRemoteDebuggingPortResponse {}
562
563#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
564#[repr(C)]
565pub struct DevToolsPerContextListenerOnHttpPortOpenRequest {
566    pub port: u16,
567}
568
569impl fidl::Persistable for DevToolsPerContextListenerOnHttpPortOpenRequest {}
570
571#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
572pub struct FrameConfigureInputTypesRequest {
573    pub types: InputTypes,
574    pub allow: AllowInputState,
575}
576
577impl fidl::Persistable for FrameConfigureInputTypesRequest {}
578
579#[derive(Clone, Debug, PartialEq)]
580pub struct FrameForceContentDimensionsRequest {
581    pub web_dips: Option<Box<fidl_fuchsia_ui_gfx__common::Vec2>>,
582}
583
584impl fidl::Persistable for FrameForceContentDimensionsRequest {}
585
586#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
587#[repr(C)]
588pub struct FrameGetPrivateMemorySizeResponse {
589    pub size_bytes: u64,
590}
591
592impl fidl::Persistable for FrameGetPrivateMemorySizeResponse {}
593
594#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
595#[repr(C)]
596pub struct FrameRemoveBeforeLoadJavaScriptRequest {
597    pub id: u64,
598}
599
600impl fidl::Persistable for FrameRemoveBeforeLoadJavaScriptRequest {}
601
602#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
603pub struct FrameSetBlockMediaLoadingRequest {
604    pub blocked: bool,
605}
606
607impl fidl::Persistable for FrameSetBlockMediaLoadingRequest {}
608
609#[derive(Clone, Debug, PartialEq)]
610pub struct FrameSetContentAreaSettingsRequest {
611    pub settings: ContentAreaSettings,
612}
613
614impl fidl::Persistable for FrameSetContentAreaSettingsRequest {}
615
616#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
617pub struct FrameSetJavaScriptLogLevelRequest {
618    pub level: ConsoleLogLevel,
619}
620
621impl fidl::Persistable for FrameSetJavaScriptLogLevelRequest {}
622
623#[derive(Clone, Debug, PartialEq)]
624pub struct FrameSetMediaSettingsRequest {
625    pub settings: FrameMediaSettings,
626}
627
628impl fidl::Persistable for FrameSetMediaSettingsRequest {}
629
630#[derive(Clone, Debug, PartialEq)]
631pub struct FrameSetPermissionStateRequest {
632    pub permission: PermissionDescriptor,
633    pub web_origin: String,
634    pub state: PermissionState,
635}
636
637impl fidl::Persistable for FrameSetPermissionStateRequest {}
638
639#[derive(Clone, Debug, PartialEq)]
640pub struct FrameSetUrlRequestRewriteRulesRequest {
641    pub rules: Vec<UrlRequestRewriteRule>,
642}
643
644impl fidl::Persistable for FrameSetUrlRequestRewriteRulesRequest {}
645
646#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
647pub struct NavigationControllerReloadRequest {
648    pub type_: ReloadType,
649}
650
651impl fidl::Persistable for NavigationControllerReloadRequest {}
652
653#[derive(Clone, Debug, PartialEq)]
654pub struct NavigationPolicyProviderEvaluateRequestedNavigationRequest {
655    pub requested_navigation: RequestedNavigation,
656}
657
658impl fidl::Persistable for NavigationPolicyProviderEvaluateRequestedNavigationRequest {}
659
660/// Empty struct used in NavigationDecision for actions that don't hav any arguments.
661#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
662pub struct NoArgumentsAction;
663
664impl fidl::Persistable for NoArgumentsAction {}
665
666/// Settings for the web content in the Frame. Popup Frames created by the Frame will have their
667/// settings initialized to the Frame's current settings.
668#[derive(Clone, Debug, Default, PartialEq)]
669pub struct ContentAreaSettings {
670    /// Specifies whether scrollbars are hidden for the Frame. If omitted, the default is false.
671    pub hide_scrollbars: Option<bool>,
672    /// Specifies the autoplay policy for the Frame. If omitted, the default policy is
673    /// `REQUIRE_USER_ACTIVATION`.
674    pub autoplay_policy: Option<AutoplayPolicy>,
675    /// Specifies the color theme reported to web content via the `prefers-color-scheme` media
676    /// query.
677    /// Valid inputs are `LIGHT`, `DARK`, and `DEFAULT`. If omitted, the default is LIGHT theme.
678    /// Specifying `DEFAULT` means using the system settings, and requires that the [`Context`] have
679    /// the [`fuchsia.settings.Display`] service. If the service is not available, the [`Frame`]
680    /// will disconnect with `ZX_ERR_INVALID_ARGS`.
681    pub theme: Option<fidl_fuchsia_settings__common::ThemeType>,
682    /// Sets scale factor (zoom level) that should be applied to web content rendered in this
683    /// frame. Values above 1.0 make all web content (including text and images) larger, while
684    /// values below 1.0 will make it smaller. In other words, values above 1.0 are used to zoom in
685    /// and values below 1.0 zoom out. The overall ratio between physical pixel and CSS pixel is a
686    /// product of the scale set with this method and the scale provided by Scenic (see
687    /// [`fuchsia.ui.gfx.Metrics`]). That product is visible to the web content as
688    /// `window.devicePixelRatio`. If omitted, the default is 1.0.
689    ///
690    /// This setting does not have any effect on the size of the view on the screen and the
691    /// resolution at which the view is rendered. Native (non-web) UI elements, such as default
692    /// scroll bars and default mouse cursor, are not scaled. User may zoom the page further when
693    /// pinch-zoom is enabled (see [`InputTypes.GESTURE_PINCH`]).
694    pub page_scale: Option<f32>,
695    #[doc(hidden)]
696    pub __source_breaking: fidl::marker::SourceBreaking,
697}
698
699impl fidl::Persistable for ContentAreaSettings {}
700
701#[derive(Clone, Debug, Default, PartialEq)]
702pub struct CookieId {
703    /// An RFC2616 "token" chosen by the site to identify the cookie.
704    pub name: Option<String>,
705    /// The RFC1034 "subdomain" to which this cookie is scoped.
706    /// e.g. "example.com" allows access from all *.example.com sub-domains.
707    pub domain: Option<String>,
708    /// The URL "path" prefix to which this cookie is scoped.
709    /// e.g. "/" allows access from all paths.
710    pub path: Option<String>,
711    #[doc(hidden)]
712    pub __source_breaking: fidl::marker::SourceBreaking,
713}
714
715impl fidl::Persistable for CookieId {}
716
717#[derive(Clone, Debug, Default, PartialEq)]
718pub struct FrameCloseRequest {
719    /// Optional.
720    pub timeout: Option<i64>,
721    #[doc(hidden)]
722    pub __source_breaking: fidl::marker::SourceBreaking,
723}
724
725impl fidl::Persistable for FrameCloseRequest {}
726
727#[derive(Clone, Debug, Default, PartialEq)]
728pub struct FrameMediaSettings {
729    /// The [`fuchsia.media/AudioRenderUsage`] to set for every [`fuchsia.media/AudioRenderer`]
730    /// instance created by the [`Frame`]. If not set, the usage is `COMMUNICATION` for WebRTC
731    /// streams and `MEDIA` for all other streams.
732    pub renderer_usage: Option<fidl_fuchsia_media__common::AudioRenderUsage>,
733    /// When set, enables usage of [`fuchsia.media/AudioConsumer`] for audio playback. In that
734    /// case the specified value is passed to [`fuchsia.media/SessionAudioConsumerFactory`].
735    pub audio_consumer_session_id: Option<u64>,
736    /// The [`fuchsia.media/AudioRenderUsage2`] to set for every [`fuchsia.media/AudioRenderer`]
737    /// instance created by the [`Frame`]. If not set, the usage is `COMMUNICATION` for WebRTC
738    /// streams and `MEDIA` for all other streams.
739    pub renderer_usage2: Option<fidl_fuchsia_media__common::AudioRenderUsage2>,
740    #[doc(hidden)]
741    pub __source_breaking: fidl::marker::SourceBreaking,
742}
743
744impl fidl::Persistable for FrameMediaSettings {}
745
746/// Used to specify which navigation events should be delegated to [`NavigationPolicyProvider`].
747#[derive(Clone, Debug, Default, PartialEq)]
748pub struct NavigationPolicyProviderParams {
749    /// Specifies the set of navigation phases in the main frame that should be evaluated.
750    pub main_frame_phases: Option<NavigationPhase>,
751    /// Specifies the set of navigation phases in subframes that should be evaluated.
752    pub subframe_phases: Option<NavigationPhase>,
753    #[doc(hidden)]
754    pub __source_breaking: fidl::marker::SourceBreaking,
755}
756
757impl fidl::Persistable for NavigationPolicyProviderParams {}
758
759/// Describes a web permission. In the future, it may be extended with type-specific fields.
760#[derive(Clone, Debug, Default, PartialEq)]
761pub struct PermissionDescriptor {
762    pub type_: Option<PermissionType>,
763    #[doc(hidden)]
764    pub __source_breaking: fidl::marker::SourceBreaking,
765}
766
767impl fidl::Persistable for PermissionDescriptor {}
768
769#[derive(Clone, Debug, Default, PartialEq)]
770pub struct RequestedNavigation {
771    /// Unique ID of the navigation.
772    pub id: Option<u64>,
773    /// Current navigation phase. Exactly one bit will be set.
774    pub phase: Option<NavigationPhase>,
775    /// Whether the navigation is taking place in the main frame versus in a subframe.
776    pub is_main_frame: Option<bool>,
777    /// Whether the navigation happened without changing the document.
778    pub is_same_document: Option<bool>,
779    /// Whether the navigation is a POST request.
780    pub is_http_post: Option<bool>,
781    /// The current target URL of the navigation. This may change for the same navigation after
782    /// encountering a server redirect.
783    pub url: Option<String>,
784    /// Whether the navigation was initiated by a user gesture.
785    pub has_gesture: Option<bool>,
786    /// Whether the navigation has encountered a server redirect or not.
787    pub was_server_redirect: Option<bool>,
788    #[doc(hidden)]
789    pub __source_breaking: fidl::marker::SourceBreaking,
790}
791
792impl fidl::Persistable for RequestedNavigation {}
793
794/// Adds `headers` to the URL request. If a header is already present in the original URL request,
795/// it will be overwritten.
796/// - `headers` must be set.
797/// - Each [`fuchsia.net.http/Header`] in `headers` must have a valid HTTP header name and value,
798///   per [RFC 7230 section  3.2](https://tools.ietf.org/html/rfc7230#section-3.2).
799#[derive(Clone, Debug, Default, PartialEq)]
800pub struct UrlRequestRewriteAddHeaders {
801    pub headers: Option<Vec<fidl_fuchsia_net_http__common::Header>>,
802    #[doc(hidden)]
803    pub __source_breaking: fidl::marker::SourceBreaking,
804}
805
806impl fidl::Persistable for UrlRequestRewriteAddHeaders {}
807
808/// Appends `query` to the URL's query. If the URL request already has a query, `query` will be
809/// appended to it, preceded by `&`. Otherwise, the URL's query will be set to `query`.
810/// - `query` must be set.
811/// - `query` must be a valid [URL-query string](https://url.spec.whatwg.org/#url-query-string).
812#[derive(Clone, Debug, Default, PartialEq)]
813pub struct UrlRequestRewriteAppendToQuery {
814    pub query: Option<String>,
815    #[doc(hidden)]
816    pub __source_breaking: fidl::marker::SourceBreaking,
817}
818
819impl fidl::Persistable for UrlRequestRewriteAppendToQuery {}
820
821/// If `query_pattern` is in the URL's query, removes `header_name` from the list of headers. If
822/// `query_pattern` is not set, removes `header_name` from the list of headers unconditionally.
823/// - `header_name` must be set.
824/// - `header_name` must be a valid HTTP header name, per
825///   [RFC 7230 section 3.2](https://tools.ietf.org/html/rfc7230#section-3.2).
826#[derive(Clone, Debug, Default, PartialEq)]
827pub struct UrlRequestRewriteRemoveHeader {
828    pub query_pattern: Option<String>,
829    pub header_name: Option<Vec<u8>>,
830    #[doc(hidden)]
831    pub __source_breaking: fidl::marker::SourceBreaking,
832}
833
834impl fidl::Persistable for UrlRequestRewriteRemoveHeader {}
835
836/// If the URL in the URL request ends with `url_ends_with`, rewrites the URL to `new_url`.
837/// - `url_ends_with` and `new_url` must be set.
838/// - `url_ends_with` must be a valid
839///   [path-relative-URL string](https://url.spec.whatwg.org/#path-relative-url-string).
840/// - `new_url` must be a [valid URL string](https://url.spec.whatwg.org/#valid-url-string).
841#[derive(Clone, Debug, Default, PartialEq)]
842pub struct UrlRequestRewriteReplaceUrl {
843    pub url_ends_with: Option<String>,
844    pub new_url: Option<String>,
845    #[doc(hidden)]
846    pub __source_breaking: fidl::marker::SourceBreaking,
847}
848
849impl fidl::Persistable for UrlRequestRewriteReplaceUrl {}
850
851#[derive(Clone, Debug, Default, PartialEq)]
852pub struct UrlRequestRewriteRule {
853    /// Set of hosts to apply the rules to. If not set, the rule will apply to every request,
854    /// independent of host.
855    pub hosts_filter: Option<Vec<String>>,
856    /// Set of schemes to apply the rules to. If not set, the rule will apply to every request,
857    /// independent of scheme.
858    pub schemes_filter: Option<Vec<String>>,
859    /// URL request rewrites to apply.
860    pub rewrites: Option<Vec<UrlRequestRewrite>>,
861    /// Specifies the action to take for requests matching the filter criteria.
862    /// Requests are allowed by default.
863    pub action: Option<UrlRequestAction>,
864    #[doc(hidden)]
865    pub __source_breaking: fidl::marker::SourceBreaking,
866}
867
868impl fidl::Persistable for UrlRequestRewriteRule {}
869
870/// If `pattern` is found in the URL's query, replaces it with `substitution`.
871/// - `pattern` and `substitution` must be set.
872/// - `substitution` must be a valid
873///   [URL-query string](https://url.spec.whatwg.org/#url-query-string).
874#[derive(Clone, Debug, Default, PartialEq)]
875pub struct UrlRequestRewriteSubstituteQueryPattern {
876    pub pattern: Option<String>,
877    pub substitution: Option<String>,
878    #[doc(hidden)]
879    pub __source_breaking: fidl::marker::SourceBreaking,
880}
881
882impl fidl::Persistable for UrlRequestRewriteSubstituteQueryPattern {}
883
884#[derive(Clone, Debug)]
885pub enum UrlRequestRewrite {
886    /// Adds a set of headers to a URL request.
887    AddHeaders(UrlRequestRewriteAddHeaders),
888    /// Removes a header based on the presence of a pattern in the URL's query.
889    RemoveHeader(UrlRequestRewriteRemoveHeader),
890    /// Substitutes a pattern in the URL's query.
891    SubstituteQueryPattern(UrlRequestRewriteSubstituteQueryPattern),
892    /// Replaces a URL if the original URL ends with a pattern.
893    ReplaceUrl(UrlRequestRewriteReplaceUrl),
894    /// Appends to the URL's query.
895    AppendToQuery(UrlRequestRewriteAppendToQuery),
896    #[doc(hidden)]
897    __SourceBreaking { unknown_ordinal: u64 },
898}
899
900/// Pattern that matches an unknown `UrlRequestRewrite` member.
901#[macro_export]
902macro_rules! UrlRequestRewriteUnknown {
903    () => {
904        _
905    };
906}
907
908// Custom PartialEq so that unknown variants are not equal to themselves.
909impl PartialEq for UrlRequestRewrite {
910    fn eq(&self, other: &Self) -> bool {
911        match (self, other) {
912            (Self::AddHeaders(x), Self::AddHeaders(y)) => *x == *y,
913            (Self::RemoveHeader(x), Self::RemoveHeader(y)) => *x == *y,
914            (Self::SubstituteQueryPattern(x), Self::SubstituteQueryPattern(y)) => *x == *y,
915            (Self::ReplaceUrl(x), Self::ReplaceUrl(y)) => *x == *y,
916            (Self::AppendToQuery(x), Self::AppendToQuery(y)) => *x == *y,
917            _ => false,
918        }
919    }
920}
921
922impl UrlRequestRewrite {
923    #[inline]
924    pub fn ordinal(&self) -> u64 {
925        match *self {
926            Self::AddHeaders(_) => 1,
927            Self::RemoveHeader(_) => 2,
928            Self::SubstituteQueryPattern(_) => 3,
929            Self::ReplaceUrl(_) => 4,
930            Self::AppendToQuery(_) => 5,
931            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
932        }
933    }
934
935    #[inline]
936    pub fn unknown_variant_for_testing() -> Self {
937        Self::__SourceBreaking { unknown_ordinal: 0 }
938    }
939
940    #[inline]
941    pub fn is_unknown(&self) -> bool {
942        match self {
943            Self::__SourceBreaking { .. } => true,
944            _ => false,
945        }
946    }
947}
948
949impl fidl::Persistable for UrlRequestRewrite {}
950
951pub mod context_ordinals {
952    pub const CREATE_FRAME: u64 = 0x5440a38db7cd7d8f;
953    pub const CREATE_FRAME_WITH_PARAMS: u64 = 0x2c968a330787be96;
954    pub const GET_COOKIE_MANAGER: u64 = 0x7396cda568e3fca;
955    pub const GET_REMOTE_DEBUGGING_PORT: u64 = 0x4ac6a26fe972f29;
956}
957
958pub mod context_provider_ordinals {
959    pub const CREATE: u64 = 0x6ee6fa35978eb98d;
960}
961
962pub mod cookie_manager_ordinals {
963    pub const OBSERVE_COOKIE_CHANGES: u64 = 0x49d8259726088b2;
964    pub const GET_COOKIE_LIST: u64 = 0x391d79f54044f334;
965}
966
967pub mod cookies_iterator_ordinals {
968    pub const GET_NEXT: u64 = 0x61b55ebf67ec457d;
969}
970
971pub mod debug_ordinals {
972    pub const ENABLE_DEV_TOOLS: u64 = 0x44b5e1f4e4c548e4;
973}
974
975pub mod dev_tools_listener_ordinals {
976    pub const ON_CONTEXT_DEV_TOOLS_AVAILABLE: u64 = 0x4b259fb4d7e49e87;
977}
978
979pub mod dev_tools_per_context_listener_ordinals {
980    pub const ON_HTTP_PORT_OPEN: u64 = 0x5e330939b035553b;
981}
982
983pub mod frame_ordinals {
984    pub const CREATE_VIEW: u64 = 0x6a27859439133264;
985    pub const CREATE_VIEW_WITH_VIEW_REF: u64 = 0x1eb17ab2442326ac;
986    pub const CREATE_VIEW2: u64 = 0x1be7e9512962eb37;
987    pub const ENABLE_HEADLESS_RENDERING: u64 = 0x72a81aaae7a80d2b;
988    pub const DISABLE_HEADLESS_RENDERING: u64 = 0x5ca38a3d1f7f543a;
989    pub const GET_MEDIA_PLAYER: u64 = 0xaafb639fc0b9eb9;
990    pub const GET_NAVIGATION_CONTROLLER: u64 = 0x4521cfe95217a688;
991    pub const EXECUTE_JAVA_SCRIPT: u64 = 0x79abdd4907000542;
992    pub const EXECUTE_JAVA_SCRIPT_NO_RESULT: u64 = 0x16b8491520cbcd63;
993    pub const ADD_BEFORE_LOAD_JAVA_SCRIPT: u64 = 0x540ac0da59d823e;
994    pub const REMOVE_BEFORE_LOAD_JAVA_SCRIPT: u64 = 0x17d92b855b61d23a;
995    pub const POST_MESSAGE: u64 = 0x751d686eb7caa341;
996    pub const SET_NAVIGATION_EVENT_LISTENER: u64 = 0x965ba0fa20e0a56;
997    pub const SET_NAVIGATION_EVENT_LISTENER2: u64 = 0x5f8b40607f1f578f;
998    pub const SET_JAVA_SCRIPT_LOG_LEVEL: u64 = 0x74824b11a71c4b5b;
999    pub const SET_CONSOLE_LOG_SINK: u64 = 0x18f5cbc19fa4687b;
1000    pub const CONFIGURE_INPUT_TYPES: u64 = 0x38e08fe763c6bef6;
1001    pub const SET_POPUP_FRAME_CREATION_LISTENER: u64 = 0x34ddec4e9f11e2aa;
1002    pub const SET_URL_REQUEST_REWRITE_RULES: u64 = 0x2e3f797350ab3281;
1003    pub const SET_MEDIA_SETTINGS: u64 = 0x7da879b6d284c143;
1004    pub const FORCE_CONTENT_DIMENSIONS: u64 = 0x8c7024c7149c901;
1005    pub const SET_PERMISSION_STATE: u64 = 0x19574e92a7033f4f;
1006    pub const SET_BLOCK_MEDIA_LOADING: u64 = 0x211071458fc9cf4f;
1007    pub const GET_PRIVATE_MEMORY_SIZE: u64 = 0x6ad4d43da6c129b0;
1008    pub const SET_NAVIGATION_POLICY_PROVIDER: u64 = 0x602ce35195d66654;
1009    pub const SET_CONTENT_AREA_SETTINGS: u64 = 0x851f4de50c3c27e;
1010    pub const RESET_CONTENT_AREA_SETTINGS: u64 = 0x6807e04f16f8ee5d;
1011    pub const CLOSE: u64 = 0x442e84138e65351;
1012}
1013
1014pub mod frame_host_ordinals {
1015    pub const CREATE_FRAME_WITH_PARAMS: u64 = 0x670186c3a1b3f28;
1016}
1017
1018pub mod message_port_ordinals {
1019    pub const POST_MESSAGE: u64 = 0x2bcf0a6ed30ffd1f;
1020    pub const RECEIVE_MESSAGE: u64 = 0x6c8a6051690be58d;
1021}
1022
1023pub mod navigation_controller_ordinals {
1024    pub const LOAD_URL: u64 = 0x78f2ab0a480d0182;
1025    pub const GO_BACK: u64 = 0x2accdd8d87d89c38;
1026    pub const GO_FORWARD: u64 = 0x39e4ac955ade2781;
1027    pub const STOP: u64 = 0x2383078ffbe6fea;
1028    pub const RELOAD: u64 = 0x33faedfe67d6f00;
1029}
1030
1031pub mod navigation_event_listener_ordinals {
1032    pub const ON_NAVIGATION_STATE_CHANGED: u64 = 0x453ac6bcbc82fbb6;
1033}
1034
1035pub mod navigation_policy_provider_ordinals {
1036    pub const EVALUATE_REQUESTED_NAVIGATION: u64 = 0x54446b50cf3512b6;
1037}
1038
1039pub mod popup_frame_creation_listener_ordinals {
1040    pub const ON_POPUP_FRAME_CREATED: u64 = 0x19b212672dc41d51;
1041}
1042
1043mod internal {
1044    use super::*;
1045    unsafe impl fidl::encoding::TypeMarker for ContextFeatureFlags {
1046        type Owned = Self;
1047
1048        #[inline(always)]
1049        fn inline_align(_context: fidl::encoding::Context) -> usize {
1050            8
1051        }
1052
1053        #[inline(always)]
1054        fn inline_size(_context: fidl::encoding::Context) -> usize {
1055            8
1056        }
1057    }
1058
1059    impl fidl::encoding::ValueTypeMarker for ContextFeatureFlags {
1060        type Borrowed<'a> = Self;
1061        #[inline(always)]
1062        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1063            *value
1064        }
1065    }
1066
1067    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1068        for ContextFeatureFlags
1069    {
1070        #[inline]
1071        unsafe fn encode(
1072            self,
1073            encoder: &mut fidl::encoding::Encoder<'_, D>,
1074            offset: usize,
1075            _depth: fidl::encoding::Depth,
1076        ) -> fidl::Result<()> {
1077            encoder.debug_check_bounds::<Self>(offset);
1078            if self.bits() & Self::all().bits() != self.bits() {
1079                return Err(fidl::Error::InvalidBitsValue);
1080            }
1081            encoder.write_num(self.bits(), offset);
1082            Ok(())
1083        }
1084    }
1085
1086    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ContextFeatureFlags {
1087        #[inline(always)]
1088        fn new_empty() -> Self {
1089            Self::empty()
1090        }
1091
1092        #[inline]
1093        unsafe fn decode(
1094            &mut self,
1095            decoder: &mut fidl::encoding::Decoder<'_, D>,
1096            offset: usize,
1097            _depth: fidl::encoding::Depth,
1098        ) -> fidl::Result<()> {
1099            decoder.debug_check_bounds::<Self>(offset);
1100            let prim = decoder.read_num::<u64>(offset);
1101            *self = Self::from_bits(prim).ok_or(fidl::Error::InvalidBitsValue)?;
1102            Ok(())
1103        }
1104    }
1105    unsafe impl fidl::encoding::TypeMarker for InputTypes {
1106        type Owned = Self;
1107
1108        #[inline(always)]
1109        fn inline_align(_context: fidl::encoding::Context) -> usize {
1110            8
1111        }
1112
1113        #[inline(always)]
1114        fn inline_size(_context: fidl::encoding::Context) -> usize {
1115            8
1116        }
1117    }
1118
1119    impl fidl::encoding::ValueTypeMarker for InputTypes {
1120        type Borrowed<'a> = Self;
1121        #[inline(always)]
1122        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1123            *value
1124        }
1125    }
1126
1127    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for InputTypes {
1128        #[inline]
1129        unsafe fn encode(
1130            self,
1131            encoder: &mut fidl::encoding::Encoder<'_, D>,
1132            offset: usize,
1133            _depth: fidl::encoding::Depth,
1134        ) -> fidl::Result<()> {
1135            encoder.debug_check_bounds::<Self>(offset);
1136            if self.bits() & Self::all().bits() != self.bits() {
1137                return Err(fidl::Error::InvalidBitsValue);
1138            }
1139            encoder.write_num(self.bits(), offset);
1140            Ok(())
1141        }
1142    }
1143
1144    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for InputTypes {
1145        #[inline(always)]
1146        fn new_empty() -> Self {
1147            Self::empty()
1148        }
1149
1150        #[inline]
1151        unsafe fn decode(
1152            &mut self,
1153            decoder: &mut fidl::encoding::Decoder<'_, D>,
1154            offset: usize,
1155            _depth: fidl::encoding::Depth,
1156        ) -> fidl::Result<()> {
1157            decoder.debug_check_bounds::<Self>(offset);
1158            let prim = decoder.read_num::<u64>(offset);
1159            *self = Self::from_bits(prim).ok_or(fidl::Error::InvalidBitsValue)?;
1160            Ok(())
1161        }
1162    }
1163    unsafe impl fidl::encoding::TypeMarker for NavigationEventListenerFlags {
1164        type Owned = Self;
1165
1166        #[inline(always)]
1167        fn inline_align(_context: fidl::encoding::Context) -> usize {
1168            8
1169        }
1170
1171        #[inline(always)]
1172        fn inline_size(_context: fidl::encoding::Context) -> usize {
1173            8
1174        }
1175    }
1176
1177    impl fidl::encoding::ValueTypeMarker for NavigationEventListenerFlags {
1178        type Borrowed<'a> = Self;
1179        #[inline(always)]
1180        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1181            *value
1182        }
1183    }
1184
1185    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1186        for NavigationEventListenerFlags
1187    {
1188        #[inline]
1189        unsafe fn encode(
1190            self,
1191            encoder: &mut fidl::encoding::Encoder<'_, D>,
1192            offset: usize,
1193            _depth: fidl::encoding::Depth,
1194        ) -> fidl::Result<()> {
1195            encoder.debug_check_bounds::<Self>(offset);
1196            if self.bits() & Self::all().bits() != self.bits() {
1197                return Err(fidl::Error::InvalidBitsValue);
1198            }
1199            encoder.write_num(self.bits(), offset);
1200            Ok(())
1201        }
1202    }
1203
1204    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1205        for NavigationEventListenerFlags
1206    {
1207        #[inline(always)]
1208        fn new_empty() -> Self {
1209            Self::empty()
1210        }
1211
1212        #[inline]
1213        unsafe fn decode(
1214            &mut self,
1215            decoder: &mut fidl::encoding::Decoder<'_, D>,
1216            offset: usize,
1217            _depth: fidl::encoding::Depth,
1218        ) -> fidl::Result<()> {
1219            decoder.debug_check_bounds::<Self>(offset);
1220            let prim = decoder.read_num::<u64>(offset);
1221            *self = Self::from_bits(prim).ok_or(fidl::Error::InvalidBitsValue)?;
1222            Ok(())
1223        }
1224    }
1225    unsafe impl fidl::encoding::TypeMarker for NavigationPhase {
1226        type Owned = Self;
1227
1228        #[inline(always)]
1229        fn inline_align(_context: fidl::encoding::Context) -> usize {
1230            4
1231        }
1232
1233        #[inline(always)]
1234        fn inline_size(_context: fidl::encoding::Context) -> usize {
1235            4
1236        }
1237    }
1238
1239    impl fidl::encoding::ValueTypeMarker for NavigationPhase {
1240        type Borrowed<'a> = Self;
1241        #[inline(always)]
1242        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1243            *value
1244        }
1245    }
1246
1247    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1248        for NavigationPhase
1249    {
1250        #[inline]
1251        unsafe fn encode(
1252            self,
1253            encoder: &mut fidl::encoding::Encoder<'_, D>,
1254            offset: usize,
1255            _depth: fidl::encoding::Depth,
1256        ) -> fidl::Result<()> {
1257            encoder.debug_check_bounds::<Self>(offset);
1258            if self.bits() & Self::all().bits() != self.bits() {
1259                return Err(fidl::Error::InvalidBitsValue);
1260            }
1261            encoder.write_num(self.bits(), offset);
1262            Ok(())
1263        }
1264    }
1265
1266    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NavigationPhase {
1267        #[inline(always)]
1268        fn new_empty() -> Self {
1269            Self::empty()
1270        }
1271
1272        #[inline]
1273        unsafe fn decode(
1274            &mut self,
1275            decoder: &mut fidl::encoding::Decoder<'_, D>,
1276            offset: usize,
1277            _depth: fidl::encoding::Depth,
1278        ) -> fidl::Result<()> {
1279            decoder.debug_check_bounds::<Self>(offset);
1280            let prim = decoder.read_num::<u32>(offset);
1281            *self = Self::from_bits(prim).ok_or(fidl::Error::InvalidBitsValue)?;
1282            Ok(())
1283        }
1284    }
1285    unsafe impl fidl::encoding::TypeMarker for AllowInputState {
1286        type Owned = Self;
1287
1288        #[inline(always)]
1289        fn inline_align(_context: fidl::encoding::Context) -> usize {
1290            std::mem::align_of::<i32>()
1291        }
1292
1293        #[inline(always)]
1294        fn inline_size(_context: fidl::encoding::Context) -> usize {
1295            std::mem::size_of::<i32>()
1296        }
1297
1298        #[inline(always)]
1299        fn encode_is_copy() -> bool {
1300            true
1301        }
1302
1303        #[inline(always)]
1304        fn decode_is_copy() -> bool {
1305            false
1306        }
1307    }
1308
1309    impl fidl::encoding::ValueTypeMarker for AllowInputState {
1310        type Borrowed<'a> = Self;
1311        #[inline(always)]
1312        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1313            *value
1314        }
1315    }
1316
1317    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1318        for AllowInputState
1319    {
1320        #[inline]
1321        unsafe fn encode(
1322            self,
1323            encoder: &mut fidl::encoding::Encoder<'_, D>,
1324            offset: usize,
1325            _depth: fidl::encoding::Depth,
1326        ) -> fidl::Result<()> {
1327            encoder.debug_check_bounds::<Self>(offset);
1328            encoder.write_num(self.into_primitive(), offset);
1329            Ok(())
1330        }
1331    }
1332
1333    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllowInputState {
1334        #[inline(always)]
1335        fn new_empty() -> Self {
1336            Self::Allow
1337        }
1338
1339        #[inline]
1340        unsafe fn decode(
1341            &mut self,
1342            decoder: &mut fidl::encoding::Decoder<'_, D>,
1343            offset: usize,
1344            _depth: fidl::encoding::Depth,
1345        ) -> fidl::Result<()> {
1346            decoder.debug_check_bounds::<Self>(offset);
1347            let prim = decoder.read_num::<i32>(offset);
1348
1349            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1350            Ok(())
1351        }
1352    }
1353    unsafe impl fidl::encoding::TypeMarker for AutoplayPolicy {
1354        type Owned = Self;
1355
1356        #[inline(always)]
1357        fn inline_align(_context: fidl::encoding::Context) -> usize {
1358            std::mem::align_of::<i32>()
1359        }
1360
1361        #[inline(always)]
1362        fn inline_size(_context: fidl::encoding::Context) -> usize {
1363            std::mem::size_of::<i32>()
1364        }
1365
1366        #[inline(always)]
1367        fn encode_is_copy() -> bool {
1368            true
1369        }
1370
1371        #[inline(always)]
1372        fn decode_is_copy() -> bool {
1373            false
1374        }
1375    }
1376
1377    impl fidl::encoding::ValueTypeMarker for AutoplayPolicy {
1378        type Borrowed<'a> = Self;
1379        #[inline(always)]
1380        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1381            *value
1382        }
1383    }
1384
1385    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for AutoplayPolicy {
1386        #[inline]
1387        unsafe fn encode(
1388            self,
1389            encoder: &mut fidl::encoding::Encoder<'_, D>,
1390            offset: usize,
1391            _depth: fidl::encoding::Depth,
1392        ) -> fidl::Result<()> {
1393            encoder.debug_check_bounds::<Self>(offset);
1394            encoder.write_num(self.into_primitive(), offset);
1395            Ok(())
1396        }
1397    }
1398
1399    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AutoplayPolicy {
1400        #[inline(always)]
1401        fn new_empty() -> Self {
1402            Self::Allow
1403        }
1404
1405        #[inline]
1406        unsafe fn decode(
1407            &mut self,
1408            decoder: &mut fidl::encoding::Decoder<'_, D>,
1409            offset: usize,
1410            _depth: fidl::encoding::Depth,
1411        ) -> fidl::Result<()> {
1412            decoder.debug_check_bounds::<Self>(offset);
1413            let prim = decoder.read_num::<i32>(offset);
1414
1415            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1416            Ok(())
1417        }
1418    }
1419    unsafe impl fidl::encoding::TypeMarker for ConsoleLogLevel {
1420        type Owned = Self;
1421
1422        #[inline(always)]
1423        fn inline_align(_context: fidl::encoding::Context) -> usize {
1424            std::mem::align_of::<i32>()
1425        }
1426
1427        #[inline(always)]
1428        fn inline_size(_context: fidl::encoding::Context) -> usize {
1429            std::mem::size_of::<i32>()
1430        }
1431
1432        #[inline(always)]
1433        fn encode_is_copy() -> bool {
1434            true
1435        }
1436
1437        #[inline(always)]
1438        fn decode_is_copy() -> bool {
1439            false
1440        }
1441    }
1442
1443    impl fidl::encoding::ValueTypeMarker for ConsoleLogLevel {
1444        type Borrowed<'a> = Self;
1445        #[inline(always)]
1446        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1447            *value
1448        }
1449    }
1450
1451    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1452        for ConsoleLogLevel
1453    {
1454        #[inline]
1455        unsafe fn encode(
1456            self,
1457            encoder: &mut fidl::encoding::Encoder<'_, D>,
1458            offset: usize,
1459            _depth: fidl::encoding::Depth,
1460        ) -> fidl::Result<()> {
1461            encoder.debug_check_bounds::<Self>(offset);
1462            encoder.write_num(self.into_primitive(), offset);
1463            Ok(())
1464        }
1465    }
1466
1467    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConsoleLogLevel {
1468        #[inline(always)]
1469        fn new_empty() -> Self {
1470            Self::Debug
1471        }
1472
1473        #[inline]
1474        unsafe fn decode(
1475            &mut self,
1476            decoder: &mut fidl::encoding::Decoder<'_, D>,
1477            offset: usize,
1478            _depth: fidl::encoding::Depth,
1479        ) -> fidl::Result<()> {
1480            decoder.debug_check_bounds::<Self>(offset);
1481            let prim = decoder.read_num::<i32>(offset);
1482
1483            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1484            Ok(())
1485        }
1486    }
1487    unsafe impl fidl::encoding::TypeMarker for ContextError {
1488        type Owned = Self;
1489
1490        #[inline(always)]
1491        fn inline_align(_context: fidl::encoding::Context) -> usize {
1492            std::mem::align_of::<i32>()
1493        }
1494
1495        #[inline(always)]
1496        fn inline_size(_context: fidl::encoding::Context) -> usize {
1497            std::mem::size_of::<i32>()
1498        }
1499
1500        #[inline(always)]
1501        fn encode_is_copy() -> bool {
1502            true
1503        }
1504
1505        #[inline(always)]
1506        fn decode_is_copy() -> bool {
1507            false
1508        }
1509    }
1510
1511    impl fidl::encoding::ValueTypeMarker for ContextError {
1512        type Borrowed<'a> = Self;
1513        #[inline(always)]
1514        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1515            *value
1516        }
1517    }
1518
1519    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ContextError {
1520        #[inline]
1521        unsafe fn encode(
1522            self,
1523            encoder: &mut fidl::encoding::Encoder<'_, D>,
1524            offset: usize,
1525            _depth: fidl::encoding::Depth,
1526        ) -> fidl::Result<()> {
1527            encoder.debug_check_bounds::<Self>(offset);
1528            encoder.write_num(self.into_primitive(), offset);
1529            Ok(())
1530        }
1531    }
1532
1533    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ContextError {
1534        #[inline(always)]
1535        fn new_empty() -> Self {
1536            Self::RemoteDebuggingPortNotOpened
1537        }
1538
1539        #[inline]
1540        unsafe fn decode(
1541            &mut self,
1542            decoder: &mut fidl::encoding::Decoder<'_, D>,
1543            offset: usize,
1544            _depth: fidl::encoding::Depth,
1545        ) -> fidl::Result<()> {
1546            decoder.debug_check_bounds::<Self>(offset);
1547            let prim = decoder.read_num::<i32>(offset);
1548
1549            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1550            Ok(())
1551        }
1552    }
1553    unsafe impl fidl::encoding::TypeMarker for ErrorDetail {
1554        type Owned = Self;
1555
1556        #[inline(always)]
1557        fn inline_align(_context: fidl::encoding::Context) -> usize {
1558            std::mem::align_of::<u32>()
1559        }
1560
1561        #[inline(always)]
1562        fn inline_size(_context: fidl::encoding::Context) -> usize {
1563            std::mem::size_of::<u32>()
1564        }
1565
1566        #[inline(always)]
1567        fn encode_is_copy() -> bool {
1568            false
1569        }
1570
1571        #[inline(always)]
1572        fn decode_is_copy() -> bool {
1573            false
1574        }
1575    }
1576
1577    impl fidl::encoding::ValueTypeMarker for ErrorDetail {
1578        type Borrowed<'a> = Self;
1579        #[inline(always)]
1580        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1581            *value
1582        }
1583    }
1584
1585    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ErrorDetail {
1586        #[inline]
1587        unsafe fn encode(
1588            self,
1589            encoder: &mut fidl::encoding::Encoder<'_, D>,
1590            offset: usize,
1591            _depth: fidl::encoding::Depth,
1592        ) -> fidl::Result<()> {
1593            encoder.debug_check_bounds::<Self>(offset);
1594            encoder.write_num(self.into_primitive(), offset);
1595            Ok(())
1596        }
1597    }
1598
1599    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ErrorDetail {
1600        #[inline(always)]
1601        fn new_empty() -> Self {
1602            Self::unknown()
1603        }
1604
1605        #[inline]
1606        unsafe fn decode(
1607            &mut self,
1608            decoder: &mut fidl::encoding::Decoder<'_, D>,
1609            offset: usize,
1610            _depth: fidl::encoding::Depth,
1611        ) -> fidl::Result<()> {
1612            decoder.debug_check_bounds::<Self>(offset);
1613            let prim = decoder.read_num::<u32>(offset);
1614
1615            *self = Self::from_primitive_allow_unknown(prim);
1616            Ok(())
1617        }
1618    }
1619    unsafe impl fidl::encoding::TypeMarker for FrameError {
1620        type Owned = Self;
1621
1622        #[inline(always)]
1623        fn inline_align(_context: fidl::encoding::Context) -> usize {
1624            std::mem::align_of::<i32>()
1625        }
1626
1627        #[inline(always)]
1628        fn inline_size(_context: fidl::encoding::Context) -> usize {
1629            std::mem::size_of::<i32>()
1630        }
1631
1632        #[inline(always)]
1633        fn encode_is_copy() -> bool {
1634            true
1635        }
1636
1637        #[inline(always)]
1638        fn decode_is_copy() -> bool {
1639            false
1640        }
1641    }
1642
1643    impl fidl::encoding::ValueTypeMarker for FrameError {
1644        type Borrowed<'a> = Self;
1645        #[inline(always)]
1646        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1647            *value
1648        }
1649    }
1650
1651    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for FrameError {
1652        #[inline]
1653        unsafe fn encode(
1654            self,
1655            encoder: &mut fidl::encoding::Encoder<'_, D>,
1656            offset: usize,
1657            _depth: fidl::encoding::Depth,
1658        ) -> fidl::Result<()> {
1659            encoder.debug_check_bounds::<Self>(offset);
1660            encoder.write_num(self.into_primitive(), offset);
1661            Ok(())
1662        }
1663    }
1664
1665    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for FrameError {
1666        #[inline(always)]
1667        fn new_empty() -> Self {
1668            Self::InternalError
1669        }
1670
1671        #[inline]
1672        unsafe fn decode(
1673            &mut self,
1674            decoder: &mut fidl::encoding::Decoder<'_, D>,
1675            offset: usize,
1676            _depth: fidl::encoding::Depth,
1677        ) -> fidl::Result<()> {
1678            decoder.debug_check_bounds::<Self>(offset);
1679            let prim = decoder.read_num::<i32>(offset);
1680
1681            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1682            Ok(())
1683        }
1684    }
1685    unsafe impl fidl::encoding::TypeMarker for LoadUrlReason {
1686        type Owned = Self;
1687
1688        #[inline(always)]
1689        fn inline_align(_context: fidl::encoding::Context) -> usize {
1690            std::mem::align_of::<u32>()
1691        }
1692
1693        #[inline(always)]
1694        fn inline_size(_context: fidl::encoding::Context) -> usize {
1695            std::mem::size_of::<u32>()
1696        }
1697
1698        #[inline(always)]
1699        fn encode_is_copy() -> bool {
1700            true
1701        }
1702
1703        #[inline(always)]
1704        fn decode_is_copy() -> bool {
1705            false
1706        }
1707    }
1708
1709    impl fidl::encoding::ValueTypeMarker for LoadUrlReason {
1710        type Borrowed<'a> = Self;
1711        #[inline(always)]
1712        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1713            *value
1714        }
1715    }
1716
1717    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for LoadUrlReason {
1718        #[inline]
1719        unsafe fn encode(
1720            self,
1721            encoder: &mut fidl::encoding::Encoder<'_, D>,
1722            offset: usize,
1723            _depth: fidl::encoding::Depth,
1724        ) -> fidl::Result<()> {
1725            encoder.debug_check_bounds::<Self>(offset);
1726            encoder.write_num(self.into_primitive(), offset);
1727            Ok(())
1728        }
1729    }
1730
1731    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LoadUrlReason {
1732        #[inline(always)]
1733        fn new_empty() -> Self {
1734            Self::Link
1735        }
1736
1737        #[inline]
1738        unsafe fn decode(
1739            &mut self,
1740            decoder: &mut fidl::encoding::Decoder<'_, D>,
1741            offset: usize,
1742            _depth: fidl::encoding::Depth,
1743        ) -> fidl::Result<()> {
1744            decoder.debug_check_bounds::<Self>(offset);
1745            let prim = decoder.read_num::<u32>(offset);
1746
1747            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1748            Ok(())
1749        }
1750    }
1751    unsafe impl fidl::encoding::TypeMarker for NavigationControllerError {
1752        type Owned = Self;
1753
1754        #[inline(always)]
1755        fn inline_align(_context: fidl::encoding::Context) -> usize {
1756            std::mem::align_of::<i32>()
1757        }
1758
1759        #[inline(always)]
1760        fn inline_size(_context: fidl::encoding::Context) -> usize {
1761            std::mem::size_of::<i32>()
1762        }
1763
1764        #[inline(always)]
1765        fn encode_is_copy() -> bool {
1766            true
1767        }
1768
1769        #[inline(always)]
1770        fn decode_is_copy() -> bool {
1771            false
1772        }
1773    }
1774
1775    impl fidl::encoding::ValueTypeMarker for NavigationControllerError {
1776        type Borrowed<'a> = Self;
1777        #[inline(always)]
1778        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1779            *value
1780        }
1781    }
1782
1783    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1784        for NavigationControllerError
1785    {
1786        #[inline]
1787        unsafe fn encode(
1788            self,
1789            encoder: &mut fidl::encoding::Encoder<'_, D>,
1790            offset: usize,
1791            _depth: fidl::encoding::Depth,
1792        ) -> fidl::Result<()> {
1793            encoder.debug_check_bounds::<Self>(offset);
1794            encoder.write_num(self.into_primitive(), offset);
1795            Ok(())
1796        }
1797    }
1798
1799    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1800        for NavigationControllerError
1801    {
1802        #[inline(always)]
1803        fn new_empty() -> Self {
1804            Self::InvalidUrl
1805        }
1806
1807        #[inline]
1808        unsafe fn decode(
1809            &mut self,
1810            decoder: &mut fidl::encoding::Decoder<'_, D>,
1811            offset: usize,
1812            _depth: fidl::encoding::Depth,
1813        ) -> fidl::Result<()> {
1814            decoder.debug_check_bounds::<Self>(offset);
1815            let prim = decoder.read_num::<i32>(offset);
1816
1817            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1818            Ok(())
1819        }
1820    }
1821    unsafe impl fidl::encoding::TypeMarker for PageType {
1822        type Owned = Self;
1823
1824        #[inline(always)]
1825        fn inline_align(_context: fidl::encoding::Context) -> usize {
1826            std::mem::align_of::<u32>()
1827        }
1828
1829        #[inline(always)]
1830        fn inline_size(_context: fidl::encoding::Context) -> usize {
1831            std::mem::size_of::<u32>()
1832        }
1833
1834        #[inline(always)]
1835        fn encode_is_copy() -> bool {
1836            true
1837        }
1838
1839        #[inline(always)]
1840        fn decode_is_copy() -> bool {
1841            false
1842        }
1843    }
1844
1845    impl fidl::encoding::ValueTypeMarker for PageType {
1846        type Borrowed<'a> = Self;
1847        #[inline(always)]
1848        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1849            *value
1850        }
1851    }
1852
1853    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for PageType {
1854        #[inline]
1855        unsafe fn encode(
1856            self,
1857            encoder: &mut fidl::encoding::Encoder<'_, D>,
1858            offset: usize,
1859            _depth: fidl::encoding::Depth,
1860        ) -> fidl::Result<()> {
1861            encoder.debug_check_bounds::<Self>(offset);
1862            encoder.write_num(self.into_primitive(), offset);
1863            Ok(())
1864        }
1865    }
1866
1867    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PageType {
1868        #[inline(always)]
1869        fn new_empty() -> Self {
1870            Self::Normal
1871        }
1872
1873        #[inline]
1874        unsafe fn decode(
1875            &mut self,
1876            decoder: &mut fidl::encoding::Decoder<'_, D>,
1877            offset: usize,
1878            _depth: fidl::encoding::Depth,
1879        ) -> fidl::Result<()> {
1880            decoder.debug_check_bounds::<Self>(offset);
1881            let prim = decoder.read_num::<u32>(offset);
1882
1883            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1884            Ok(())
1885        }
1886    }
1887    unsafe impl fidl::encoding::TypeMarker for PermissionState {
1888        type Owned = Self;
1889
1890        #[inline(always)]
1891        fn inline_align(_context: fidl::encoding::Context) -> usize {
1892            std::mem::align_of::<u8>()
1893        }
1894
1895        #[inline(always)]
1896        fn inline_size(_context: fidl::encoding::Context) -> usize {
1897            std::mem::size_of::<u8>()
1898        }
1899
1900        #[inline(always)]
1901        fn encode_is_copy() -> bool {
1902            true
1903        }
1904
1905        #[inline(always)]
1906        fn decode_is_copy() -> bool {
1907            false
1908        }
1909    }
1910
1911    impl fidl::encoding::ValueTypeMarker for PermissionState {
1912        type Borrowed<'a> = Self;
1913        #[inline(always)]
1914        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1915            *value
1916        }
1917    }
1918
1919    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1920        for PermissionState
1921    {
1922        #[inline]
1923        unsafe fn encode(
1924            self,
1925            encoder: &mut fidl::encoding::Encoder<'_, D>,
1926            offset: usize,
1927            _depth: fidl::encoding::Depth,
1928        ) -> fidl::Result<()> {
1929            encoder.debug_check_bounds::<Self>(offset);
1930            encoder.write_num(self.into_primitive(), offset);
1931            Ok(())
1932        }
1933    }
1934
1935    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PermissionState {
1936        #[inline(always)]
1937        fn new_empty() -> Self {
1938            Self::Denied
1939        }
1940
1941        #[inline]
1942        unsafe fn decode(
1943            &mut self,
1944            decoder: &mut fidl::encoding::Decoder<'_, D>,
1945            offset: usize,
1946            _depth: fidl::encoding::Depth,
1947        ) -> fidl::Result<()> {
1948            decoder.debug_check_bounds::<Self>(offset);
1949            let prim = decoder.read_num::<u8>(offset);
1950
1951            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1952            Ok(())
1953        }
1954    }
1955    unsafe impl fidl::encoding::TypeMarker for PermissionType {
1956        type Owned = Self;
1957
1958        #[inline(always)]
1959        fn inline_align(_context: fidl::encoding::Context) -> usize {
1960            std::mem::align_of::<u16>()
1961        }
1962
1963        #[inline(always)]
1964        fn inline_size(_context: fidl::encoding::Context) -> usize {
1965            std::mem::size_of::<u16>()
1966        }
1967
1968        #[inline(always)]
1969        fn encode_is_copy() -> bool {
1970            true
1971        }
1972
1973        #[inline(always)]
1974        fn decode_is_copy() -> bool {
1975            false
1976        }
1977    }
1978
1979    impl fidl::encoding::ValueTypeMarker for PermissionType {
1980        type Borrowed<'a> = Self;
1981        #[inline(always)]
1982        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1983            *value
1984        }
1985    }
1986
1987    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for PermissionType {
1988        #[inline]
1989        unsafe fn encode(
1990            self,
1991            encoder: &mut fidl::encoding::Encoder<'_, D>,
1992            offset: usize,
1993            _depth: fidl::encoding::Depth,
1994        ) -> fidl::Result<()> {
1995            encoder.debug_check_bounds::<Self>(offset);
1996            encoder.write_num(self.into_primitive(), offset);
1997            Ok(())
1998        }
1999    }
2000
2001    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PermissionType {
2002        #[inline(always)]
2003        fn new_empty() -> Self {
2004            Self::Microphone
2005        }
2006
2007        #[inline]
2008        unsafe fn decode(
2009            &mut self,
2010            decoder: &mut fidl::encoding::Decoder<'_, D>,
2011            offset: usize,
2012            _depth: fidl::encoding::Depth,
2013        ) -> fidl::Result<()> {
2014            decoder.debug_check_bounds::<Self>(offset);
2015            let prim = decoder.read_num::<u16>(offset);
2016
2017            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
2018            Ok(())
2019        }
2020    }
2021    unsafe impl fidl::encoding::TypeMarker for ReloadType {
2022        type Owned = Self;
2023
2024        #[inline(always)]
2025        fn inline_align(_context: fidl::encoding::Context) -> usize {
2026            std::mem::align_of::<u32>()
2027        }
2028
2029        #[inline(always)]
2030        fn inline_size(_context: fidl::encoding::Context) -> usize {
2031            std::mem::size_of::<u32>()
2032        }
2033
2034        #[inline(always)]
2035        fn encode_is_copy() -> bool {
2036            true
2037        }
2038
2039        #[inline(always)]
2040        fn decode_is_copy() -> bool {
2041            false
2042        }
2043    }
2044
2045    impl fidl::encoding::ValueTypeMarker for ReloadType {
2046        type Borrowed<'a> = Self;
2047        #[inline(always)]
2048        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2049            *value
2050        }
2051    }
2052
2053    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ReloadType {
2054        #[inline]
2055        unsafe fn encode(
2056            self,
2057            encoder: &mut fidl::encoding::Encoder<'_, D>,
2058            offset: usize,
2059            _depth: fidl::encoding::Depth,
2060        ) -> fidl::Result<()> {
2061            encoder.debug_check_bounds::<Self>(offset);
2062            encoder.write_num(self.into_primitive(), offset);
2063            Ok(())
2064        }
2065    }
2066
2067    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ReloadType {
2068        #[inline(always)]
2069        fn new_empty() -> Self {
2070            Self::PartialCache
2071        }
2072
2073        #[inline]
2074        unsafe fn decode(
2075            &mut self,
2076            decoder: &mut fidl::encoding::Decoder<'_, D>,
2077            offset: usize,
2078            _depth: fidl::encoding::Depth,
2079        ) -> fidl::Result<()> {
2080            decoder.debug_check_bounds::<Self>(offset);
2081            let prim = decoder.read_num::<u32>(offset);
2082
2083            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
2084            Ok(())
2085        }
2086    }
2087    unsafe impl fidl::encoding::TypeMarker for UrlRequestAction {
2088        type Owned = Self;
2089
2090        #[inline(always)]
2091        fn inline_align(_context: fidl::encoding::Context) -> usize {
2092            std::mem::align_of::<i32>()
2093        }
2094
2095        #[inline(always)]
2096        fn inline_size(_context: fidl::encoding::Context) -> usize {
2097            std::mem::size_of::<i32>()
2098        }
2099
2100        #[inline(always)]
2101        fn encode_is_copy() -> bool {
2102            true
2103        }
2104
2105        #[inline(always)]
2106        fn decode_is_copy() -> bool {
2107            false
2108        }
2109    }
2110
2111    impl fidl::encoding::ValueTypeMarker for UrlRequestAction {
2112        type Borrowed<'a> = Self;
2113        #[inline(always)]
2114        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2115            *value
2116        }
2117    }
2118
2119    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2120        for UrlRequestAction
2121    {
2122        #[inline]
2123        unsafe fn encode(
2124            self,
2125            encoder: &mut fidl::encoding::Encoder<'_, D>,
2126            offset: usize,
2127            _depth: fidl::encoding::Depth,
2128        ) -> fidl::Result<()> {
2129            encoder.debug_check_bounds::<Self>(offset);
2130            encoder.write_num(self.into_primitive(), offset);
2131            Ok(())
2132        }
2133    }
2134
2135    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UrlRequestAction {
2136        #[inline(always)]
2137        fn new_empty() -> Self {
2138            Self::Allow
2139        }
2140
2141        #[inline]
2142        unsafe fn decode(
2143            &mut self,
2144            decoder: &mut fidl::encoding::Decoder<'_, D>,
2145            offset: usize,
2146            _depth: fidl::encoding::Depth,
2147        ) -> fidl::Result<()> {
2148            decoder.debug_check_bounds::<Self>(offset);
2149            let prim = decoder.read_num::<i32>(offset);
2150
2151            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
2152            Ok(())
2153        }
2154    }
2155
2156    impl fidl::encoding::ValueTypeMarker for ContextGetRemoteDebuggingPortResponse {
2157        type Borrowed<'a> = &'a Self;
2158        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2159            value
2160        }
2161    }
2162
2163    unsafe impl fidl::encoding::TypeMarker for ContextGetRemoteDebuggingPortResponse {
2164        type Owned = Self;
2165
2166        #[inline(always)]
2167        fn inline_align(_context: fidl::encoding::Context) -> usize {
2168            2
2169        }
2170
2171        #[inline(always)]
2172        fn inline_size(_context: fidl::encoding::Context) -> usize {
2173            2
2174        }
2175        #[inline(always)]
2176        fn encode_is_copy() -> bool {
2177            true
2178        }
2179
2180        #[inline(always)]
2181        fn decode_is_copy() -> bool {
2182            true
2183        }
2184    }
2185
2186    unsafe impl<D: fidl::encoding::ResourceDialect>
2187        fidl::encoding::Encode<ContextGetRemoteDebuggingPortResponse, D>
2188        for &ContextGetRemoteDebuggingPortResponse
2189    {
2190        #[inline]
2191        unsafe fn encode(
2192            self,
2193            encoder: &mut fidl::encoding::Encoder<'_, D>,
2194            offset: usize,
2195            _depth: fidl::encoding::Depth,
2196        ) -> fidl::Result<()> {
2197            encoder.debug_check_bounds::<ContextGetRemoteDebuggingPortResponse>(offset);
2198            unsafe {
2199                // Copy the object into the buffer.
2200                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2201                (buf_ptr as *mut ContextGetRemoteDebuggingPortResponse)
2202                    .write_unaligned((self as *const ContextGetRemoteDebuggingPortResponse).read());
2203                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
2204                // done second because the memcpy will write garbage to these bytes.
2205            }
2206            Ok(())
2207        }
2208    }
2209    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u16, D>>
2210        fidl::encoding::Encode<ContextGetRemoteDebuggingPortResponse, D> for (T0,)
2211    {
2212        #[inline]
2213        unsafe fn encode(
2214            self,
2215            encoder: &mut fidl::encoding::Encoder<'_, D>,
2216            offset: usize,
2217            depth: fidl::encoding::Depth,
2218        ) -> fidl::Result<()> {
2219            encoder.debug_check_bounds::<ContextGetRemoteDebuggingPortResponse>(offset);
2220            // Zero out padding regions. There's no need to apply masks
2221            // because the unmasked parts will be overwritten by fields.
2222            // Write the fields.
2223            self.0.encode(encoder, offset + 0, depth)?;
2224            Ok(())
2225        }
2226    }
2227
2228    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2229        for ContextGetRemoteDebuggingPortResponse
2230    {
2231        #[inline(always)]
2232        fn new_empty() -> Self {
2233            Self { port: fidl::new_empty!(u16, D) }
2234        }
2235
2236        #[inline]
2237        unsafe fn decode(
2238            &mut self,
2239            decoder: &mut fidl::encoding::Decoder<'_, D>,
2240            offset: usize,
2241            _depth: fidl::encoding::Depth,
2242        ) -> fidl::Result<()> {
2243            decoder.debug_check_bounds::<Self>(offset);
2244            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2245            // Verify that padding bytes are zero.
2246            // Copy from the buffer into the object.
2247            unsafe {
2248                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 2);
2249            }
2250            Ok(())
2251        }
2252    }
2253
2254    impl fidl::encoding::ValueTypeMarker for DevToolsPerContextListenerOnHttpPortOpenRequest {
2255        type Borrowed<'a> = &'a Self;
2256        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2257            value
2258        }
2259    }
2260
2261    unsafe impl fidl::encoding::TypeMarker for DevToolsPerContextListenerOnHttpPortOpenRequest {
2262        type Owned = Self;
2263
2264        #[inline(always)]
2265        fn inline_align(_context: fidl::encoding::Context) -> usize {
2266            2
2267        }
2268
2269        #[inline(always)]
2270        fn inline_size(_context: fidl::encoding::Context) -> usize {
2271            2
2272        }
2273        #[inline(always)]
2274        fn encode_is_copy() -> bool {
2275            true
2276        }
2277
2278        #[inline(always)]
2279        fn decode_is_copy() -> bool {
2280            true
2281        }
2282    }
2283
2284    unsafe impl<D: fidl::encoding::ResourceDialect>
2285        fidl::encoding::Encode<DevToolsPerContextListenerOnHttpPortOpenRequest, D>
2286        for &DevToolsPerContextListenerOnHttpPortOpenRequest
2287    {
2288        #[inline]
2289        unsafe fn encode(
2290            self,
2291            encoder: &mut fidl::encoding::Encoder<'_, D>,
2292            offset: usize,
2293            _depth: fidl::encoding::Depth,
2294        ) -> fidl::Result<()> {
2295            encoder.debug_check_bounds::<DevToolsPerContextListenerOnHttpPortOpenRequest>(offset);
2296            unsafe {
2297                // Copy the object into the buffer.
2298                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2299                (buf_ptr as *mut DevToolsPerContextListenerOnHttpPortOpenRequest).write_unaligned(
2300                    (self as *const DevToolsPerContextListenerOnHttpPortOpenRequest).read(),
2301                );
2302                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
2303                // done second because the memcpy will write garbage to these bytes.
2304            }
2305            Ok(())
2306        }
2307    }
2308    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u16, D>>
2309        fidl::encoding::Encode<DevToolsPerContextListenerOnHttpPortOpenRequest, D> for (T0,)
2310    {
2311        #[inline]
2312        unsafe fn encode(
2313            self,
2314            encoder: &mut fidl::encoding::Encoder<'_, D>,
2315            offset: usize,
2316            depth: fidl::encoding::Depth,
2317        ) -> fidl::Result<()> {
2318            encoder.debug_check_bounds::<DevToolsPerContextListenerOnHttpPortOpenRequest>(offset);
2319            // Zero out padding regions. There's no need to apply masks
2320            // because the unmasked parts will be overwritten by fields.
2321            // Write the fields.
2322            self.0.encode(encoder, offset + 0, depth)?;
2323            Ok(())
2324        }
2325    }
2326
2327    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2328        for DevToolsPerContextListenerOnHttpPortOpenRequest
2329    {
2330        #[inline(always)]
2331        fn new_empty() -> Self {
2332            Self { port: fidl::new_empty!(u16, D) }
2333        }
2334
2335        #[inline]
2336        unsafe fn decode(
2337            &mut self,
2338            decoder: &mut fidl::encoding::Decoder<'_, D>,
2339            offset: usize,
2340            _depth: fidl::encoding::Depth,
2341        ) -> fidl::Result<()> {
2342            decoder.debug_check_bounds::<Self>(offset);
2343            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2344            // Verify that padding bytes are zero.
2345            // Copy from the buffer into the object.
2346            unsafe {
2347                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 2);
2348            }
2349            Ok(())
2350        }
2351    }
2352
2353    impl fidl::encoding::ValueTypeMarker for FrameConfigureInputTypesRequest {
2354        type Borrowed<'a> = &'a Self;
2355        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2356            value
2357        }
2358    }
2359
2360    unsafe impl fidl::encoding::TypeMarker for FrameConfigureInputTypesRequest {
2361        type Owned = Self;
2362
2363        #[inline(always)]
2364        fn inline_align(_context: fidl::encoding::Context) -> usize {
2365            8
2366        }
2367
2368        #[inline(always)]
2369        fn inline_size(_context: fidl::encoding::Context) -> usize {
2370            16
2371        }
2372    }
2373
2374    unsafe impl<D: fidl::encoding::ResourceDialect>
2375        fidl::encoding::Encode<FrameConfigureInputTypesRequest, D>
2376        for &FrameConfigureInputTypesRequest
2377    {
2378        #[inline]
2379        unsafe fn encode(
2380            self,
2381            encoder: &mut fidl::encoding::Encoder<'_, D>,
2382            offset: usize,
2383            _depth: fidl::encoding::Depth,
2384        ) -> fidl::Result<()> {
2385            encoder.debug_check_bounds::<FrameConfigureInputTypesRequest>(offset);
2386            // Delegate to tuple encoding.
2387            fidl::encoding::Encode::<FrameConfigureInputTypesRequest, D>::encode(
2388                (
2389                    <InputTypes as fidl::encoding::ValueTypeMarker>::borrow(&self.types),
2390                    <AllowInputState as fidl::encoding::ValueTypeMarker>::borrow(&self.allow),
2391                ),
2392                encoder,
2393                offset,
2394                _depth,
2395            )
2396        }
2397    }
2398    unsafe impl<
2399        D: fidl::encoding::ResourceDialect,
2400        T0: fidl::encoding::Encode<InputTypes, D>,
2401        T1: fidl::encoding::Encode<AllowInputState, D>,
2402    > fidl::encoding::Encode<FrameConfigureInputTypesRequest, D> for (T0, T1)
2403    {
2404        #[inline]
2405        unsafe fn encode(
2406            self,
2407            encoder: &mut fidl::encoding::Encoder<'_, D>,
2408            offset: usize,
2409            depth: fidl::encoding::Depth,
2410        ) -> fidl::Result<()> {
2411            encoder.debug_check_bounds::<FrameConfigureInputTypesRequest>(offset);
2412            // Zero out padding regions. There's no need to apply masks
2413            // because the unmasked parts will be overwritten by fields.
2414            unsafe {
2415                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
2416                (ptr as *mut u64).write_unaligned(0);
2417            }
2418            // Write the fields.
2419            self.0.encode(encoder, offset + 0, depth)?;
2420            self.1.encode(encoder, offset + 8, depth)?;
2421            Ok(())
2422        }
2423    }
2424
2425    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2426        for FrameConfigureInputTypesRequest
2427    {
2428        #[inline(always)]
2429        fn new_empty() -> Self {
2430            Self {
2431                types: fidl::new_empty!(InputTypes, D),
2432                allow: fidl::new_empty!(AllowInputState, D),
2433            }
2434        }
2435
2436        #[inline]
2437        unsafe fn decode(
2438            &mut self,
2439            decoder: &mut fidl::encoding::Decoder<'_, D>,
2440            offset: usize,
2441            _depth: fidl::encoding::Depth,
2442        ) -> fidl::Result<()> {
2443            decoder.debug_check_bounds::<Self>(offset);
2444            // Verify that padding bytes are zero.
2445            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
2446            let padval = unsafe { (ptr as *const u64).read_unaligned() };
2447            let mask = 0xffffffff00000000u64;
2448            let maskedval = padval & mask;
2449            if maskedval != 0 {
2450                return Err(fidl::Error::NonZeroPadding {
2451                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
2452                });
2453            }
2454            fidl::decode!(InputTypes, D, &mut self.types, decoder, offset + 0, _depth)?;
2455            fidl::decode!(AllowInputState, D, &mut self.allow, decoder, offset + 8, _depth)?;
2456            Ok(())
2457        }
2458    }
2459
2460    impl fidl::encoding::ValueTypeMarker for FrameForceContentDimensionsRequest {
2461        type Borrowed<'a> = &'a Self;
2462        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2463            value
2464        }
2465    }
2466
2467    unsafe impl fidl::encoding::TypeMarker for FrameForceContentDimensionsRequest {
2468        type Owned = Self;
2469
2470        #[inline(always)]
2471        fn inline_align(_context: fidl::encoding::Context) -> usize {
2472            8
2473        }
2474
2475        #[inline(always)]
2476        fn inline_size(_context: fidl::encoding::Context) -> usize {
2477            8
2478        }
2479    }
2480
2481    unsafe impl<D: fidl::encoding::ResourceDialect>
2482        fidl::encoding::Encode<FrameForceContentDimensionsRequest, D>
2483        for &FrameForceContentDimensionsRequest
2484    {
2485        #[inline]
2486        unsafe fn encode(
2487            self,
2488            encoder: &mut fidl::encoding::Encoder<'_, D>,
2489            offset: usize,
2490            _depth: fidl::encoding::Depth,
2491        ) -> fidl::Result<()> {
2492            encoder.debug_check_bounds::<FrameForceContentDimensionsRequest>(offset);
2493            // Delegate to tuple encoding.
2494            fidl::encoding::Encode::<FrameForceContentDimensionsRequest, D>::encode(
2495                (
2496                    <fidl::encoding::Boxed<fidl_fuchsia_ui_gfx__common::Vec2> as fidl::encoding::ValueTypeMarker>::borrow(&self.web_dips),
2497                ),
2498                encoder, offset, _depth
2499            )
2500        }
2501    }
2502    unsafe impl<
2503        D: fidl::encoding::ResourceDialect,
2504        T0: fidl::encoding::Encode<fidl::encoding::Boxed<fidl_fuchsia_ui_gfx__common::Vec2>, D>,
2505    > fidl::encoding::Encode<FrameForceContentDimensionsRequest, D> for (T0,)
2506    {
2507        #[inline]
2508        unsafe fn encode(
2509            self,
2510            encoder: &mut fidl::encoding::Encoder<'_, D>,
2511            offset: usize,
2512            depth: fidl::encoding::Depth,
2513        ) -> fidl::Result<()> {
2514            encoder.debug_check_bounds::<FrameForceContentDimensionsRequest>(offset);
2515            // Zero out padding regions. There's no need to apply masks
2516            // because the unmasked parts will be overwritten by fields.
2517            // Write the fields.
2518            self.0.encode(encoder, offset + 0, depth)?;
2519            Ok(())
2520        }
2521    }
2522
2523    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2524        for FrameForceContentDimensionsRequest
2525    {
2526        #[inline(always)]
2527        fn new_empty() -> Self {
2528            Self {
2529                web_dips: fidl::new_empty!(
2530                    fidl::encoding::Boxed<fidl_fuchsia_ui_gfx__common::Vec2>,
2531                    D
2532                ),
2533            }
2534        }
2535
2536        #[inline]
2537        unsafe fn decode(
2538            &mut self,
2539            decoder: &mut fidl::encoding::Decoder<'_, D>,
2540            offset: usize,
2541            _depth: fidl::encoding::Depth,
2542        ) -> fidl::Result<()> {
2543            decoder.debug_check_bounds::<Self>(offset);
2544            // Verify that padding bytes are zero.
2545            fidl::decode!(
2546                fidl::encoding::Boxed<fidl_fuchsia_ui_gfx__common::Vec2>,
2547                D,
2548                &mut self.web_dips,
2549                decoder,
2550                offset + 0,
2551                _depth
2552            )?;
2553            Ok(())
2554        }
2555    }
2556
2557    impl fidl::encoding::ValueTypeMarker for FrameGetPrivateMemorySizeResponse {
2558        type Borrowed<'a> = &'a Self;
2559        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2560            value
2561        }
2562    }
2563
2564    unsafe impl fidl::encoding::TypeMarker for FrameGetPrivateMemorySizeResponse {
2565        type Owned = Self;
2566
2567        #[inline(always)]
2568        fn inline_align(_context: fidl::encoding::Context) -> usize {
2569            8
2570        }
2571
2572        #[inline(always)]
2573        fn inline_size(_context: fidl::encoding::Context) -> usize {
2574            8
2575        }
2576        #[inline(always)]
2577        fn encode_is_copy() -> bool {
2578            true
2579        }
2580
2581        #[inline(always)]
2582        fn decode_is_copy() -> bool {
2583            true
2584        }
2585    }
2586
2587    unsafe impl<D: fidl::encoding::ResourceDialect>
2588        fidl::encoding::Encode<FrameGetPrivateMemorySizeResponse, D>
2589        for &FrameGetPrivateMemorySizeResponse
2590    {
2591        #[inline]
2592        unsafe fn encode(
2593            self,
2594            encoder: &mut fidl::encoding::Encoder<'_, D>,
2595            offset: usize,
2596            _depth: fidl::encoding::Depth,
2597        ) -> fidl::Result<()> {
2598            encoder.debug_check_bounds::<FrameGetPrivateMemorySizeResponse>(offset);
2599            unsafe {
2600                // Copy the object into the buffer.
2601                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2602                (buf_ptr as *mut FrameGetPrivateMemorySizeResponse)
2603                    .write_unaligned((self as *const FrameGetPrivateMemorySizeResponse).read());
2604                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
2605                // done second because the memcpy will write garbage to these bytes.
2606            }
2607            Ok(())
2608        }
2609    }
2610    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u64, D>>
2611        fidl::encoding::Encode<FrameGetPrivateMemorySizeResponse, D> for (T0,)
2612    {
2613        #[inline]
2614        unsafe fn encode(
2615            self,
2616            encoder: &mut fidl::encoding::Encoder<'_, D>,
2617            offset: usize,
2618            depth: fidl::encoding::Depth,
2619        ) -> fidl::Result<()> {
2620            encoder.debug_check_bounds::<FrameGetPrivateMemorySizeResponse>(offset);
2621            // Zero out padding regions. There's no need to apply masks
2622            // because the unmasked parts will be overwritten by fields.
2623            // Write the fields.
2624            self.0.encode(encoder, offset + 0, depth)?;
2625            Ok(())
2626        }
2627    }
2628
2629    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2630        for FrameGetPrivateMemorySizeResponse
2631    {
2632        #[inline(always)]
2633        fn new_empty() -> Self {
2634            Self { size_bytes: fidl::new_empty!(u64, D) }
2635        }
2636
2637        #[inline]
2638        unsafe fn decode(
2639            &mut self,
2640            decoder: &mut fidl::encoding::Decoder<'_, D>,
2641            offset: usize,
2642            _depth: fidl::encoding::Depth,
2643        ) -> fidl::Result<()> {
2644            decoder.debug_check_bounds::<Self>(offset);
2645            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2646            // Verify that padding bytes are zero.
2647            // Copy from the buffer into the object.
2648            unsafe {
2649                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
2650            }
2651            Ok(())
2652        }
2653    }
2654
2655    impl fidl::encoding::ValueTypeMarker for FrameRemoveBeforeLoadJavaScriptRequest {
2656        type Borrowed<'a> = &'a Self;
2657        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2658            value
2659        }
2660    }
2661
2662    unsafe impl fidl::encoding::TypeMarker for FrameRemoveBeforeLoadJavaScriptRequest {
2663        type Owned = Self;
2664
2665        #[inline(always)]
2666        fn inline_align(_context: fidl::encoding::Context) -> usize {
2667            8
2668        }
2669
2670        #[inline(always)]
2671        fn inline_size(_context: fidl::encoding::Context) -> usize {
2672            8
2673        }
2674        #[inline(always)]
2675        fn encode_is_copy() -> bool {
2676            true
2677        }
2678
2679        #[inline(always)]
2680        fn decode_is_copy() -> bool {
2681            true
2682        }
2683    }
2684
2685    unsafe impl<D: fidl::encoding::ResourceDialect>
2686        fidl::encoding::Encode<FrameRemoveBeforeLoadJavaScriptRequest, D>
2687        for &FrameRemoveBeforeLoadJavaScriptRequest
2688    {
2689        #[inline]
2690        unsafe fn encode(
2691            self,
2692            encoder: &mut fidl::encoding::Encoder<'_, D>,
2693            offset: usize,
2694            _depth: fidl::encoding::Depth,
2695        ) -> fidl::Result<()> {
2696            encoder.debug_check_bounds::<FrameRemoveBeforeLoadJavaScriptRequest>(offset);
2697            unsafe {
2698                // Copy the object into the buffer.
2699                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2700                (buf_ptr as *mut FrameRemoveBeforeLoadJavaScriptRequest).write_unaligned(
2701                    (self as *const FrameRemoveBeforeLoadJavaScriptRequest).read(),
2702                );
2703                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
2704                // done second because the memcpy will write garbage to these bytes.
2705            }
2706            Ok(())
2707        }
2708    }
2709    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u64, D>>
2710        fidl::encoding::Encode<FrameRemoveBeforeLoadJavaScriptRequest, D> for (T0,)
2711    {
2712        #[inline]
2713        unsafe fn encode(
2714            self,
2715            encoder: &mut fidl::encoding::Encoder<'_, D>,
2716            offset: usize,
2717            depth: fidl::encoding::Depth,
2718        ) -> fidl::Result<()> {
2719            encoder.debug_check_bounds::<FrameRemoveBeforeLoadJavaScriptRequest>(offset);
2720            // Zero out padding regions. There's no need to apply masks
2721            // because the unmasked parts will be overwritten by fields.
2722            // Write the fields.
2723            self.0.encode(encoder, offset + 0, depth)?;
2724            Ok(())
2725        }
2726    }
2727
2728    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2729        for FrameRemoveBeforeLoadJavaScriptRequest
2730    {
2731        #[inline(always)]
2732        fn new_empty() -> Self {
2733            Self { id: fidl::new_empty!(u64, D) }
2734        }
2735
2736        #[inline]
2737        unsafe fn decode(
2738            &mut self,
2739            decoder: &mut fidl::encoding::Decoder<'_, D>,
2740            offset: usize,
2741            _depth: fidl::encoding::Depth,
2742        ) -> fidl::Result<()> {
2743            decoder.debug_check_bounds::<Self>(offset);
2744            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2745            // Verify that padding bytes are zero.
2746            // Copy from the buffer into the object.
2747            unsafe {
2748                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
2749            }
2750            Ok(())
2751        }
2752    }
2753
2754    impl fidl::encoding::ValueTypeMarker for FrameSetBlockMediaLoadingRequest {
2755        type Borrowed<'a> = &'a Self;
2756        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2757            value
2758        }
2759    }
2760
2761    unsafe impl fidl::encoding::TypeMarker for FrameSetBlockMediaLoadingRequest {
2762        type Owned = Self;
2763
2764        #[inline(always)]
2765        fn inline_align(_context: fidl::encoding::Context) -> usize {
2766            1
2767        }
2768
2769        #[inline(always)]
2770        fn inline_size(_context: fidl::encoding::Context) -> usize {
2771            1
2772        }
2773    }
2774
2775    unsafe impl<D: fidl::encoding::ResourceDialect>
2776        fidl::encoding::Encode<FrameSetBlockMediaLoadingRequest, D>
2777        for &FrameSetBlockMediaLoadingRequest
2778    {
2779        #[inline]
2780        unsafe fn encode(
2781            self,
2782            encoder: &mut fidl::encoding::Encoder<'_, D>,
2783            offset: usize,
2784            _depth: fidl::encoding::Depth,
2785        ) -> fidl::Result<()> {
2786            encoder.debug_check_bounds::<FrameSetBlockMediaLoadingRequest>(offset);
2787            // Delegate to tuple encoding.
2788            fidl::encoding::Encode::<FrameSetBlockMediaLoadingRequest, D>::encode(
2789                (<bool as fidl::encoding::ValueTypeMarker>::borrow(&self.blocked),),
2790                encoder,
2791                offset,
2792                _depth,
2793            )
2794        }
2795    }
2796    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<bool, D>>
2797        fidl::encoding::Encode<FrameSetBlockMediaLoadingRequest, D> for (T0,)
2798    {
2799        #[inline]
2800        unsafe fn encode(
2801            self,
2802            encoder: &mut fidl::encoding::Encoder<'_, D>,
2803            offset: usize,
2804            depth: fidl::encoding::Depth,
2805        ) -> fidl::Result<()> {
2806            encoder.debug_check_bounds::<FrameSetBlockMediaLoadingRequest>(offset);
2807            // Zero out padding regions. There's no need to apply masks
2808            // because the unmasked parts will be overwritten by fields.
2809            // Write the fields.
2810            self.0.encode(encoder, offset + 0, depth)?;
2811            Ok(())
2812        }
2813    }
2814
2815    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2816        for FrameSetBlockMediaLoadingRequest
2817    {
2818        #[inline(always)]
2819        fn new_empty() -> Self {
2820            Self { blocked: fidl::new_empty!(bool, D) }
2821        }
2822
2823        #[inline]
2824        unsafe fn decode(
2825            &mut self,
2826            decoder: &mut fidl::encoding::Decoder<'_, D>,
2827            offset: usize,
2828            _depth: fidl::encoding::Depth,
2829        ) -> fidl::Result<()> {
2830            decoder.debug_check_bounds::<Self>(offset);
2831            // Verify that padding bytes are zero.
2832            fidl::decode!(bool, D, &mut self.blocked, decoder, offset + 0, _depth)?;
2833            Ok(())
2834        }
2835    }
2836
2837    impl fidl::encoding::ValueTypeMarker for FrameSetContentAreaSettingsRequest {
2838        type Borrowed<'a> = &'a Self;
2839        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2840            value
2841        }
2842    }
2843
2844    unsafe impl fidl::encoding::TypeMarker for FrameSetContentAreaSettingsRequest {
2845        type Owned = Self;
2846
2847        #[inline(always)]
2848        fn inline_align(_context: fidl::encoding::Context) -> usize {
2849            8
2850        }
2851
2852        #[inline(always)]
2853        fn inline_size(_context: fidl::encoding::Context) -> usize {
2854            16
2855        }
2856    }
2857
2858    unsafe impl<D: fidl::encoding::ResourceDialect>
2859        fidl::encoding::Encode<FrameSetContentAreaSettingsRequest, D>
2860        for &FrameSetContentAreaSettingsRequest
2861    {
2862        #[inline]
2863        unsafe fn encode(
2864            self,
2865            encoder: &mut fidl::encoding::Encoder<'_, D>,
2866            offset: usize,
2867            _depth: fidl::encoding::Depth,
2868        ) -> fidl::Result<()> {
2869            encoder.debug_check_bounds::<FrameSetContentAreaSettingsRequest>(offset);
2870            // Delegate to tuple encoding.
2871            fidl::encoding::Encode::<FrameSetContentAreaSettingsRequest, D>::encode(
2872                (<ContentAreaSettings as fidl::encoding::ValueTypeMarker>::borrow(&self.settings),),
2873                encoder,
2874                offset,
2875                _depth,
2876            )
2877        }
2878    }
2879    unsafe impl<
2880        D: fidl::encoding::ResourceDialect,
2881        T0: fidl::encoding::Encode<ContentAreaSettings, D>,
2882    > fidl::encoding::Encode<FrameSetContentAreaSettingsRequest, D> for (T0,)
2883    {
2884        #[inline]
2885        unsafe fn encode(
2886            self,
2887            encoder: &mut fidl::encoding::Encoder<'_, D>,
2888            offset: usize,
2889            depth: fidl::encoding::Depth,
2890        ) -> fidl::Result<()> {
2891            encoder.debug_check_bounds::<FrameSetContentAreaSettingsRequest>(offset);
2892            // Zero out padding regions. There's no need to apply masks
2893            // because the unmasked parts will be overwritten by fields.
2894            // Write the fields.
2895            self.0.encode(encoder, offset + 0, depth)?;
2896            Ok(())
2897        }
2898    }
2899
2900    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2901        for FrameSetContentAreaSettingsRequest
2902    {
2903        #[inline(always)]
2904        fn new_empty() -> Self {
2905            Self { settings: fidl::new_empty!(ContentAreaSettings, D) }
2906        }
2907
2908        #[inline]
2909        unsafe fn decode(
2910            &mut self,
2911            decoder: &mut fidl::encoding::Decoder<'_, D>,
2912            offset: usize,
2913            _depth: fidl::encoding::Depth,
2914        ) -> fidl::Result<()> {
2915            decoder.debug_check_bounds::<Self>(offset);
2916            // Verify that padding bytes are zero.
2917            fidl::decode!(ContentAreaSettings, D, &mut self.settings, decoder, offset + 0, _depth)?;
2918            Ok(())
2919        }
2920    }
2921
2922    impl fidl::encoding::ValueTypeMarker for FrameSetJavaScriptLogLevelRequest {
2923        type Borrowed<'a> = &'a Self;
2924        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2925            value
2926        }
2927    }
2928
2929    unsafe impl fidl::encoding::TypeMarker for FrameSetJavaScriptLogLevelRequest {
2930        type Owned = Self;
2931
2932        #[inline(always)]
2933        fn inline_align(_context: fidl::encoding::Context) -> usize {
2934            4
2935        }
2936
2937        #[inline(always)]
2938        fn inline_size(_context: fidl::encoding::Context) -> usize {
2939            4
2940        }
2941    }
2942
2943    unsafe impl<D: fidl::encoding::ResourceDialect>
2944        fidl::encoding::Encode<FrameSetJavaScriptLogLevelRequest, D>
2945        for &FrameSetJavaScriptLogLevelRequest
2946    {
2947        #[inline]
2948        unsafe fn encode(
2949            self,
2950            encoder: &mut fidl::encoding::Encoder<'_, D>,
2951            offset: usize,
2952            _depth: fidl::encoding::Depth,
2953        ) -> fidl::Result<()> {
2954            encoder.debug_check_bounds::<FrameSetJavaScriptLogLevelRequest>(offset);
2955            // Delegate to tuple encoding.
2956            fidl::encoding::Encode::<FrameSetJavaScriptLogLevelRequest, D>::encode(
2957                (<ConsoleLogLevel as fidl::encoding::ValueTypeMarker>::borrow(&self.level),),
2958                encoder,
2959                offset,
2960                _depth,
2961            )
2962        }
2963    }
2964    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ConsoleLogLevel, D>>
2965        fidl::encoding::Encode<FrameSetJavaScriptLogLevelRequest, D> for (T0,)
2966    {
2967        #[inline]
2968        unsafe fn encode(
2969            self,
2970            encoder: &mut fidl::encoding::Encoder<'_, D>,
2971            offset: usize,
2972            depth: fidl::encoding::Depth,
2973        ) -> fidl::Result<()> {
2974            encoder.debug_check_bounds::<FrameSetJavaScriptLogLevelRequest>(offset);
2975            // Zero out padding regions. There's no need to apply masks
2976            // because the unmasked parts will be overwritten by fields.
2977            // Write the fields.
2978            self.0.encode(encoder, offset + 0, depth)?;
2979            Ok(())
2980        }
2981    }
2982
2983    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2984        for FrameSetJavaScriptLogLevelRequest
2985    {
2986        #[inline(always)]
2987        fn new_empty() -> Self {
2988            Self { level: fidl::new_empty!(ConsoleLogLevel, D) }
2989        }
2990
2991        #[inline]
2992        unsafe fn decode(
2993            &mut self,
2994            decoder: &mut fidl::encoding::Decoder<'_, D>,
2995            offset: usize,
2996            _depth: fidl::encoding::Depth,
2997        ) -> fidl::Result<()> {
2998            decoder.debug_check_bounds::<Self>(offset);
2999            // Verify that padding bytes are zero.
3000            fidl::decode!(ConsoleLogLevel, D, &mut self.level, decoder, offset + 0, _depth)?;
3001            Ok(())
3002        }
3003    }
3004
3005    impl fidl::encoding::ValueTypeMarker for FrameSetMediaSettingsRequest {
3006        type Borrowed<'a> = &'a Self;
3007        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3008            value
3009        }
3010    }
3011
3012    unsafe impl fidl::encoding::TypeMarker for FrameSetMediaSettingsRequest {
3013        type Owned = Self;
3014
3015        #[inline(always)]
3016        fn inline_align(_context: fidl::encoding::Context) -> usize {
3017            8
3018        }
3019
3020        #[inline(always)]
3021        fn inline_size(_context: fidl::encoding::Context) -> usize {
3022            16
3023        }
3024    }
3025
3026    unsafe impl<D: fidl::encoding::ResourceDialect>
3027        fidl::encoding::Encode<FrameSetMediaSettingsRequest, D> for &FrameSetMediaSettingsRequest
3028    {
3029        #[inline]
3030        unsafe fn encode(
3031            self,
3032            encoder: &mut fidl::encoding::Encoder<'_, D>,
3033            offset: usize,
3034            _depth: fidl::encoding::Depth,
3035        ) -> fidl::Result<()> {
3036            encoder.debug_check_bounds::<FrameSetMediaSettingsRequest>(offset);
3037            // Delegate to tuple encoding.
3038            fidl::encoding::Encode::<FrameSetMediaSettingsRequest, D>::encode(
3039                (<FrameMediaSettings as fidl::encoding::ValueTypeMarker>::borrow(&self.settings),),
3040                encoder,
3041                offset,
3042                _depth,
3043            )
3044        }
3045    }
3046    unsafe impl<
3047        D: fidl::encoding::ResourceDialect,
3048        T0: fidl::encoding::Encode<FrameMediaSettings, D>,
3049    > fidl::encoding::Encode<FrameSetMediaSettingsRequest, D> for (T0,)
3050    {
3051        #[inline]
3052        unsafe fn encode(
3053            self,
3054            encoder: &mut fidl::encoding::Encoder<'_, D>,
3055            offset: usize,
3056            depth: fidl::encoding::Depth,
3057        ) -> fidl::Result<()> {
3058            encoder.debug_check_bounds::<FrameSetMediaSettingsRequest>(offset);
3059            // Zero out padding regions. There's no need to apply masks
3060            // because the unmasked parts will be overwritten by fields.
3061            // Write the fields.
3062            self.0.encode(encoder, offset + 0, depth)?;
3063            Ok(())
3064        }
3065    }
3066
3067    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3068        for FrameSetMediaSettingsRequest
3069    {
3070        #[inline(always)]
3071        fn new_empty() -> Self {
3072            Self { settings: fidl::new_empty!(FrameMediaSettings, D) }
3073        }
3074
3075        #[inline]
3076        unsafe fn decode(
3077            &mut self,
3078            decoder: &mut fidl::encoding::Decoder<'_, D>,
3079            offset: usize,
3080            _depth: fidl::encoding::Depth,
3081        ) -> fidl::Result<()> {
3082            decoder.debug_check_bounds::<Self>(offset);
3083            // Verify that padding bytes are zero.
3084            fidl::decode!(FrameMediaSettings, D, &mut self.settings, decoder, offset + 0, _depth)?;
3085            Ok(())
3086        }
3087    }
3088
3089    impl fidl::encoding::ValueTypeMarker for FrameSetPermissionStateRequest {
3090        type Borrowed<'a> = &'a Self;
3091        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3092            value
3093        }
3094    }
3095
3096    unsafe impl fidl::encoding::TypeMarker for FrameSetPermissionStateRequest {
3097        type Owned = Self;
3098
3099        #[inline(always)]
3100        fn inline_align(_context: fidl::encoding::Context) -> usize {
3101            8
3102        }
3103
3104        #[inline(always)]
3105        fn inline_size(_context: fidl::encoding::Context) -> usize {
3106            40
3107        }
3108    }
3109
3110    unsafe impl<D: fidl::encoding::ResourceDialect>
3111        fidl::encoding::Encode<FrameSetPermissionStateRequest, D>
3112        for &FrameSetPermissionStateRequest
3113    {
3114        #[inline]
3115        unsafe fn encode(
3116            self,
3117            encoder: &mut fidl::encoding::Encoder<'_, D>,
3118            offset: usize,
3119            _depth: fidl::encoding::Depth,
3120        ) -> fidl::Result<()> {
3121            encoder.debug_check_bounds::<FrameSetPermissionStateRequest>(offset);
3122            // Delegate to tuple encoding.
3123            fidl::encoding::Encode::<FrameSetPermissionStateRequest, D>::encode(
3124                (
3125                    <PermissionDescriptor as fidl::encoding::ValueTypeMarker>::borrow(&self.permission),
3126                    <fidl::encoding::BoundedString<65536> as fidl::encoding::ValueTypeMarker>::borrow(&self.web_origin),
3127                    <PermissionState as fidl::encoding::ValueTypeMarker>::borrow(&self.state),
3128                ),
3129                encoder, offset, _depth
3130            )
3131        }
3132    }
3133    unsafe impl<
3134        D: fidl::encoding::ResourceDialect,
3135        T0: fidl::encoding::Encode<PermissionDescriptor, D>,
3136        T1: fidl::encoding::Encode<fidl::encoding::BoundedString<65536>, D>,
3137        T2: fidl::encoding::Encode<PermissionState, D>,
3138    > fidl::encoding::Encode<FrameSetPermissionStateRequest, D> for (T0, T1, T2)
3139    {
3140        #[inline]
3141        unsafe fn encode(
3142            self,
3143            encoder: &mut fidl::encoding::Encoder<'_, D>,
3144            offset: usize,
3145            depth: fidl::encoding::Depth,
3146        ) -> fidl::Result<()> {
3147            encoder.debug_check_bounds::<FrameSetPermissionStateRequest>(offset);
3148            // Zero out padding regions. There's no need to apply masks
3149            // because the unmasked parts will be overwritten by fields.
3150            unsafe {
3151                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(32);
3152                (ptr as *mut u64).write_unaligned(0);
3153            }
3154            // Write the fields.
3155            self.0.encode(encoder, offset + 0, depth)?;
3156            self.1.encode(encoder, offset + 16, depth)?;
3157            self.2.encode(encoder, offset + 32, depth)?;
3158            Ok(())
3159        }
3160    }
3161
3162    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3163        for FrameSetPermissionStateRequest
3164    {
3165        #[inline(always)]
3166        fn new_empty() -> Self {
3167            Self {
3168                permission: fidl::new_empty!(PermissionDescriptor, D),
3169                web_origin: fidl::new_empty!(fidl::encoding::BoundedString<65536>, D),
3170                state: fidl::new_empty!(PermissionState, D),
3171            }
3172        }
3173
3174        #[inline]
3175        unsafe fn decode(
3176            &mut self,
3177            decoder: &mut fidl::encoding::Decoder<'_, D>,
3178            offset: usize,
3179            _depth: fidl::encoding::Depth,
3180        ) -> fidl::Result<()> {
3181            decoder.debug_check_bounds::<Self>(offset);
3182            // Verify that padding bytes are zero.
3183            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(32) };
3184            let padval = unsafe { (ptr as *const u64).read_unaligned() };
3185            let mask = 0xffffffffffffff00u64;
3186            let maskedval = padval & mask;
3187            if maskedval != 0 {
3188                return Err(fidl::Error::NonZeroPadding {
3189                    padding_start: offset + 32 + ((mask as u64).trailing_zeros() / 8) as usize,
3190                });
3191            }
3192            fidl::decode!(
3193                PermissionDescriptor,
3194                D,
3195                &mut self.permission,
3196                decoder,
3197                offset + 0,
3198                _depth
3199            )?;
3200            fidl::decode!(
3201                fidl::encoding::BoundedString<65536>,
3202                D,
3203                &mut self.web_origin,
3204                decoder,
3205                offset + 16,
3206                _depth
3207            )?;
3208            fidl::decode!(PermissionState, D, &mut self.state, decoder, offset + 32, _depth)?;
3209            Ok(())
3210        }
3211    }
3212
3213    impl fidl::encoding::ValueTypeMarker for FrameSetUrlRequestRewriteRulesRequest {
3214        type Borrowed<'a> = &'a Self;
3215        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3216            value
3217        }
3218    }
3219
3220    unsafe impl fidl::encoding::TypeMarker for FrameSetUrlRequestRewriteRulesRequest {
3221        type Owned = Self;
3222
3223        #[inline(always)]
3224        fn inline_align(_context: fidl::encoding::Context) -> usize {
3225            8
3226        }
3227
3228        #[inline(always)]
3229        fn inline_size(_context: fidl::encoding::Context) -> usize {
3230            16
3231        }
3232    }
3233
3234    unsafe impl<D: fidl::encoding::ResourceDialect>
3235        fidl::encoding::Encode<FrameSetUrlRequestRewriteRulesRequest, D>
3236        for &FrameSetUrlRequestRewriteRulesRequest
3237    {
3238        #[inline]
3239        unsafe fn encode(
3240            self,
3241            encoder: &mut fidl::encoding::Encoder<'_, D>,
3242            offset: usize,
3243            _depth: fidl::encoding::Depth,
3244        ) -> fidl::Result<()> {
3245            encoder.debug_check_bounds::<FrameSetUrlRequestRewriteRulesRequest>(offset);
3246            // Delegate to tuple encoding.
3247            fidl::encoding::Encode::<FrameSetUrlRequestRewriteRulesRequest, D>::encode(
3248                (
3249                    <fidl::encoding::Vector<UrlRequestRewriteRule, 4096> as fidl::encoding::ValueTypeMarker>::borrow(&self.rules),
3250                ),
3251                encoder, offset, _depth
3252            )
3253        }
3254    }
3255    unsafe impl<
3256        D: fidl::encoding::ResourceDialect,
3257        T0: fidl::encoding::Encode<fidl::encoding::Vector<UrlRequestRewriteRule, 4096>, D>,
3258    > fidl::encoding::Encode<FrameSetUrlRequestRewriteRulesRequest, D> for (T0,)
3259    {
3260        #[inline]
3261        unsafe fn encode(
3262            self,
3263            encoder: &mut fidl::encoding::Encoder<'_, D>,
3264            offset: usize,
3265            depth: fidl::encoding::Depth,
3266        ) -> fidl::Result<()> {
3267            encoder.debug_check_bounds::<FrameSetUrlRequestRewriteRulesRequest>(offset);
3268            // Zero out padding regions. There's no need to apply masks
3269            // because the unmasked parts will be overwritten by fields.
3270            // Write the fields.
3271            self.0.encode(encoder, offset + 0, depth)?;
3272            Ok(())
3273        }
3274    }
3275
3276    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3277        for FrameSetUrlRequestRewriteRulesRequest
3278    {
3279        #[inline(always)]
3280        fn new_empty() -> Self {
3281            Self { rules: fidl::new_empty!(fidl::encoding::Vector<UrlRequestRewriteRule, 4096>, D) }
3282        }
3283
3284        #[inline]
3285        unsafe fn decode(
3286            &mut self,
3287            decoder: &mut fidl::encoding::Decoder<'_, D>,
3288            offset: usize,
3289            _depth: fidl::encoding::Depth,
3290        ) -> fidl::Result<()> {
3291            decoder.debug_check_bounds::<Self>(offset);
3292            // Verify that padding bytes are zero.
3293            fidl::decode!(fidl::encoding::Vector<UrlRequestRewriteRule, 4096>, D, &mut self.rules, decoder, offset + 0, _depth)?;
3294            Ok(())
3295        }
3296    }
3297
3298    impl fidl::encoding::ValueTypeMarker for NavigationControllerReloadRequest {
3299        type Borrowed<'a> = &'a Self;
3300        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3301            value
3302        }
3303    }
3304
3305    unsafe impl fidl::encoding::TypeMarker for NavigationControllerReloadRequest {
3306        type Owned = Self;
3307
3308        #[inline(always)]
3309        fn inline_align(_context: fidl::encoding::Context) -> usize {
3310            4
3311        }
3312
3313        #[inline(always)]
3314        fn inline_size(_context: fidl::encoding::Context) -> usize {
3315            4
3316        }
3317    }
3318
3319    unsafe impl<D: fidl::encoding::ResourceDialect>
3320        fidl::encoding::Encode<NavigationControllerReloadRequest, D>
3321        for &NavigationControllerReloadRequest
3322    {
3323        #[inline]
3324        unsafe fn encode(
3325            self,
3326            encoder: &mut fidl::encoding::Encoder<'_, D>,
3327            offset: usize,
3328            _depth: fidl::encoding::Depth,
3329        ) -> fidl::Result<()> {
3330            encoder.debug_check_bounds::<NavigationControllerReloadRequest>(offset);
3331            // Delegate to tuple encoding.
3332            fidl::encoding::Encode::<NavigationControllerReloadRequest, D>::encode(
3333                (<ReloadType as fidl::encoding::ValueTypeMarker>::borrow(&self.type_),),
3334                encoder,
3335                offset,
3336                _depth,
3337            )
3338        }
3339    }
3340    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ReloadType, D>>
3341        fidl::encoding::Encode<NavigationControllerReloadRequest, D> for (T0,)
3342    {
3343        #[inline]
3344        unsafe fn encode(
3345            self,
3346            encoder: &mut fidl::encoding::Encoder<'_, D>,
3347            offset: usize,
3348            depth: fidl::encoding::Depth,
3349        ) -> fidl::Result<()> {
3350            encoder.debug_check_bounds::<NavigationControllerReloadRequest>(offset);
3351            // Zero out padding regions. There's no need to apply masks
3352            // because the unmasked parts will be overwritten by fields.
3353            // Write the fields.
3354            self.0.encode(encoder, offset + 0, depth)?;
3355            Ok(())
3356        }
3357    }
3358
3359    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3360        for NavigationControllerReloadRequest
3361    {
3362        #[inline(always)]
3363        fn new_empty() -> Self {
3364            Self { type_: fidl::new_empty!(ReloadType, D) }
3365        }
3366
3367        #[inline]
3368        unsafe fn decode(
3369            &mut self,
3370            decoder: &mut fidl::encoding::Decoder<'_, D>,
3371            offset: usize,
3372            _depth: fidl::encoding::Depth,
3373        ) -> fidl::Result<()> {
3374            decoder.debug_check_bounds::<Self>(offset);
3375            // Verify that padding bytes are zero.
3376            fidl::decode!(ReloadType, D, &mut self.type_, decoder, offset + 0, _depth)?;
3377            Ok(())
3378        }
3379    }
3380
3381    impl fidl::encoding::ValueTypeMarker
3382        for NavigationPolicyProviderEvaluateRequestedNavigationRequest
3383    {
3384        type Borrowed<'a> = &'a Self;
3385        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3386            value
3387        }
3388    }
3389
3390    unsafe impl fidl::encoding::TypeMarker
3391        for NavigationPolicyProviderEvaluateRequestedNavigationRequest
3392    {
3393        type Owned = Self;
3394
3395        #[inline(always)]
3396        fn inline_align(_context: fidl::encoding::Context) -> usize {
3397            8
3398        }
3399
3400        #[inline(always)]
3401        fn inline_size(_context: fidl::encoding::Context) -> usize {
3402            16
3403        }
3404    }
3405
3406    unsafe impl<D: fidl::encoding::ResourceDialect>
3407        fidl::encoding::Encode<NavigationPolicyProviderEvaluateRequestedNavigationRequest, D>
3408        for &NavigationPolicyProviderEvaluateRequestedNavigationRequest
3409    {
3410        #[inline]
3411        unsafe fn encode(
3412            self,
3413            encoder: &mut fidl::encoding::Encoder<'_, D>,
3414            offset: usize,
3415            _depth: fidl::encoding::Depth,
3416        ) -> fidl::Result<()> {
3417            encoder
3418                .debug_check_bounds::<NavigationPolicyProviderEvaluateRequestedNavigationRequest>(
3419                    offset,
3420                );
3421            // Delegate to tuple encoding.
3422            fidl::encoding::Encode::<NavigationPolicyProviderEvaluateRequestedNavigationRequest, D>::encode(
3423                (
3424                    <RequestedNavigation as fidl::encoding::ValueTypeMarker>::borrow(&self.requested_navigation),
3425                ),
3426                encoder, offset, _depth
3427            )
3428        }
3429    }
3430    unsafe impl<
3431        D: fidl::encoding::ResourceDialect,
3432        T0: fidl::encoding::Encode<RequestedNavigation, D>,
3433    > fidl::encoding::Encode<NavigationPolicyProviderEvaluateRequestedNavigationRequest, D>
3434        for (T0,)
3435    {
3436        #[inline]
3437        unsafe fn encode(
3438            self,
3439            encoder: &mut fidl::encoding::Encoder<'_, D>,
3440            offset: usize,
3441            depth: fidl::encoding::Depth,
3442        ) -> fidl::Result<()> {
3443            encoder
3444                .debug_check_bounds::<NavigationPolicyProviderEvaluateRequestedNavigationRequest>(
3445                    offset,
3446                );
3447            // Zero out padding regions. There's no need to apply masks
3448            // because the unmasked parts will be overwritten by fields.
3449            // Write the fields.
3450            self.0.encode(encoder, offset + 0, depth)?;
3451            Ok(())
3452        }
3453    }
3454
3455    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3456        for NavigationPolicyProviderEvaluateRequestedNavigationRequest
3457    {
3458        #[inline(always)]
3459        fn new_empty() -> Self {
3460            Self { requested_navigation: fidl::new_empty!(RequestedNavigation, D) }
3461        }
3462
3463        #[inline]
3464        unsafe fn decode(
3465            &mut self,
3466            decoder: &mut fidl::encoding::Decoder<'_, D>,
3467            offset: usize,
3468            _depth: fidl::encoding::Depth,
3469        ) -> fidl::Result<()> {
3470            decoder.debug_check_bounds::<Self>(offset);
3471            // Verify that padding bytes are zero.
3472            fidl::decode!(
3473                RequestedNavigation,
3474                D,
3475                &mut self.requested_navigation,
3476                decoder,
3477                offset + 0,
3478                _depth
3479            )?;
3480            Ok(())
3481        }
3482    }
3483
3484    impl fidl::encoding::ValueTypeMarker for NoArgumentsAction {
3485        type Borrowed<'a> = &'a Self;
3486        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3487            value
3488        }
3489    }
3490
3491    unsafe impl fidl::encoding::TypeMarker for NoArgumentsAction {
3492        type Owned = Self;
3493
3494        #[inline(always)]
3495        fn inline_align(_context: fidl::encoding::Context) -> usize {
3496            1
3497        }
3498
3499        #[inline(always)]
3500        fn inline_size(_context: fidl::encoding::Context) -> usize {
3501            1
3502        }
3503    }
3504
3505    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NoArgumentsAction, D>
3506        for &NoArgumentsAction
3507    {
3508        #[inline]
3509        unsafe fn encode(
3510            self,
3511            encoder: &mut fidl::encoding::Encoder<'_, D>,
3512            offset: usize,
3513            _depth: fidl::encoding::Depth,
3514        ) -> fidl::Result<()> {
3515            encoder.debug_check_bounds::<NoArgumentsAction>(offset);
3516            encoder.write_num(0u8, offset);
3517            Ok(())
3518        }
3519    }
3520
3521    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NoArgumentsAction {
3522        #[inline(always)]
3523        fn new_empty() -> Self {
3524            Self
3525        }
3526
3527        #[inline]
3528        unsafe fn decode(
3529            &mut self,
3530            decoder: &mut fidl::encoding::Decoder<'_, D>,
3531            offset: usize,
3532            _depth: fidl::encoding::Depth,
3533        ) -> fidl::Result<()> {
3534            decoder.debug_check_bounds::<Self>(offset);
3535            match decoder.read_num::<u8>(offset) {
3536                0 => Ok(()),
3537                _ => Err(fidl::Error::Invalid),
3538            }
3539        }
3540    }
3541
3542    impl ContentAreaSettings {
3543        #[inline(always)]
3544        fn max_ordinal_present(&self) -> u64 {
3545            if let Some(_) = self.page_scale {
3546                return 4;
3547            }
3548            if let Some(_) = self.theme {
3549                return 3;
3550            }
3551            if let Some(_) = self.autoplay_policy {
3552                return 2;
3553            }
3554            if let Some(_) = self.hide_scrollbars {
3555                return 1;
3556            }
3557            0
3558        }
3559    }
3560
3561    impl fidl::encoding::ValueTypeMarker for ContentAreaSettings {
3562        type Borrowed<'a> = &'a Self;
3563        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3564            value
3565        }
3566    }
3567
3568    unsafe impl fidl::encoding::TypeMarker for ContentAreaSettings {
3569        type Owned = Self;
3570
3571        #[inline(always)]
3572        fn inline_align(_context: fidl::encoding::Context) -> usize {
3573            8
3574        }
3575
3576        #[inline(always)]
3577        fn inline_size(_context: fidl::encoding::Context) -> usize {
3578            16
3579        }
3580    }
3581
3582    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ContentAreaSettings, D>
3583        for &ContentAreaSettings
3584    {
3585        unsafe fn encode(
3586            self,
3587            encoder: &mut fidl::encoding::Encoder<'_, D>,
3588            offset: usize,
3589            mut depth: fidl::encoding::Depth,
3590        ) -> fidl::Result<()> {
3591            encoder.debug_check_bounds::<ContentAreaSettings>(offset);
3592            // Vector header
3593            let max_ordinal: u64 = self.max_ordinal_present();
3594            encoder.write_num(max_ordinal, offset);
3595            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3596            // Calling encoder.out_of_line_offset(0) is not allowed.
3597            if max_ordinal == 0 {
3598                return Ok(());
3599            }
3600            depth.increment()?;
3601            let envelope_size = 8;
3602            let bytes_len = max_ordinal as usize * envelope_size;
3603            #[allow(unused_variables)]
3604            let offset = encoder.out_of_line_offset(bytes_len);
3605            let mut _prev_end_offset: usize = 0;
3606            if 1 > max_ordinal {
3607                return Ok(());
3608            }
3609
3610            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3611            // are envelope_size bytes.
3612            let cur_offset: usize = (1 - 1) * envelope_size;
3613
3614            // Zero reserved fields.
3615            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3616
3617            // Safety:
3618            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3619            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3620            //   envelope_size bytes, there is always sufficient room.
3621            fidl::encoding::encode_in_envelope_optional::<bool, D>(
3622                self.hide_scrollbars
3623                    .as_ref()
3624                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3625                encoder,
3626                offset + cur_offset,
3627                depth,
3628            )?;
3629
3630            _prev_end_offset = cur_offset + envelope_size;
3631            if 2 > max_ordinal {
3632                return Ok(());
3633            }
3634
3635            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3636            // are envelope_size bytes.
3637            let cur_offset: usize = (2 - 1) * envelope_size;
3638
3639            // Zero reserved fields.
3640            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3641
3642            // Safety:
3643            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3644            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3645            //   envelope_size bytes, there is always sufficient room.
3646            fidl::encoding::encode_in_envelope_optional::<AutoplayPolicy, D>(
3647                self.autoplay_policy
3648                    .as_ref()
3649                    .map(<AutoplayPolicy as fidl::encoding::ValueTypeMarker>::borrow),
3650                encoder,
3651                offset + cur_offset,
3652                depth,
3653            )?;
3654
3655            _prev_end_offset = cur_offset + envelope_size;
3656            if 3 > max_ordinal {
3657                return Ok(());
3658            }
3659
3660            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3661            // are envelope_size bytes.
3662            let cur_offset: usize = (3 - 1) * envelope_size;
3663
3664            // Zero reserved fields.
3665            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3666
3667            // Safety:
3668            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3669            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3670            //   envelope_size bytes, there is always sufficient room.
3671            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_settings__common::ThemeType, D>(
3672            self.theme.as_ref().map(<fidl_fuchsia_settings__common::ThemeType as fidl::encoding::ValueTypeMarker>::borrow),
3673            encoder, offset + cur_offset, depth
3674        )?;
3675
3676            _prev_end_offset = cur_offset + envelope_size;
3677            if 4 > max_ordinal {
3678                return Ok(());
3679            }
3680
3681            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3682            // are envelope_size bytes.
3683            let cur_offset: usize = (4 - 1) * envelope_size;
3684
3685            // Zero reserved fields.
3686            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3687
3688            // Safety:
3689            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3690            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3691            //   envelope_size bytes, there is always sufficient room.
3692            fidl::encoding::encode_in_envelope_optional::<f32, D>(
3693                self.page_scale.as_ref().map(<f32 as fidl::encoding::ValueTypeMarker>::borrow),
3694                encoder,
3695                offset + cur_offset,
3696                depth,
3697            )?;
3698
3699            _prev_end_offset = cur_offset + envelope_size;
3700
3701            Ok(())
3702        }
3703    }
3704
3705    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ContentAreaSettings {
3706        #[inline(always)]
3707        fn new_empty() -> Self {
3708            Self::default()
3709        }
3710
3711        unsafe fn decode(
3712            &mut self,
3713            decoder: &mut fidl::encoding::Decoder<'_, D>,
3714            offset: usize,
3715            mut depth: fidl::encoding::Depth,
3716        ) -> fidl::Result<()> {
3717            decoder.debug_check_bounds::<Self>(offset);
3718            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3719                None => return Err(fidl::Error::NotNullable),
3720                Some(len) => len,
3721            };
3722            // Calling decoder.out_of_line_offset(0) is not allowed.
3723            if len == 0 {
3724                return Ok(());
3725            };
3726            depth.increment()?;
3727            let envelope_size = 8;
3728            let bytes_len = len * envelope_size;
3729            let offset = decoder.out_of_line_offset(bytes_len)?;
3730            // Decode the envelope for each type.
3731            let mut _next_ordinal_to_read = 0;
3732            let mut next_offset = offset;
3733            let end_offset = offset + bytes_len;
3734            _next_ordinal_to_read += 1;
3735            if next_offset >= end_offset {
3736                return Ok(());
3737            }
3738
3739            // Decode unknown envelopes for gaps in ordinals.
3740            while _next_ordinal_to_read < 1 {
3741                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3742                _next_ordinal_to_read += 1;
3743                next_offset += envelope_size;
3744            }
3745
3746            let next_out_of_line = decoder.next_out_of_line();
3747            let handles_before = decoder.remaining_handles();
3748            if let Some((inlined, num_bytes, num_handles)) =
3749                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3750            {
3751                let member_inline_size =
3752                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3753                if inlined != (member_inline_size <= 4) {
3754                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3755                }
3756                let inner_offset;
3757                let mut inner_depth = depth.clone();
3758                if inlined {
3759                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3760                    inner_offset = next_offset;
3761                } else {
3762                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3763                    inner_depth.increment()?;
3764                }
3765                let val_ref = self.hide_scrollbars.get_or_insert_with(|| fidl::new_empty!(bool, D));
3766                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3767                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3768                {
3769                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3770                }
3771                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3772                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3773                }
3774            }
3775
3776            next_offset += envelope_size;
3777            _next_ordinal_to_read += 1;
3778            if next_offset >= end_offset {
3779                return Ok(());
3780            }
3781
3782            // Decode unknown envelopes for gaps in ordinals.
3783            while _next_ordinal_to_read < 2 {
3784                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3785                _next_ordinal_to_read += 1;
3786                next_offset += envelope_size;
3787            }
3788
3789            let next_out_of_line = decoder.next_out_of_line();
3790            let handles_before = decoder.remaining_handles();
3791            if let Some((inlined, num_bytes, num_handles)) =
3792                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3793            {
3794                let member_inline_size =
3795                    <AutoplayPolicy as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3796                if inlined != (member_inline_size <= 4) {
3797                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3798                }
3799                let inner_offset;
3800                let mut inner_depth = depth.clone();
3801                if inlined {
3802                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3803                    inner_offset = next_offset;
3804                } else {
3805                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3806                    inner_depth.increment()?;
3807                }
3808                let val_ref =
3809                    self.autoplay_policy.get_or_insert_with(|| fidl::new_empty!(AutoplayPolicy, D));
3810                fidl::decode!(AutoplayPolicy, D, val_ref, decoder, inner_offset, inner_depth)?;
3811                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3812                {
3813                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3814                }
3815                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3816                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3817                }
3818            }
3819
3820            next_offset += envelope_size;
3821            _next_ordinal_to_read += 1;
3822            if next_offset >= end_offset {
3823                return Ok(());
3824            }
3825
3826            // Decode unknown envelopes for gaps in ordinals.
3827            while _next_ordinal_to_read < 3 {
3828                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3829                _next_ordinal_to_read += 1;
3830                next_offset += envelope_size;
3831            }
3832
3833            let next_out_of_line = decoder.next_out_of_line();
3834            let handles_before = decoder.remaining_handles();
3835            if let Some((inlined, num_bytes, num_handles)) =
3836                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3837            {
3838                let member_inline_size = <fidl_fuchsia_settings__common::ThemeType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3839                if inlined != (member_inline_size <= 4) {
3840                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3841                }
3842                let inner_offset;
3843                let mut inner_depth = depth.clone();
3844                if inlined {
3845                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3846                    inner_offset = next_offset;
3847                } else {
3848                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3849                    inner_depth.increment()?;
3850                }
3851                let val_ref = self.theme.get_or_insert_with(|| {
3852                    fidl::new_empty!(fidl_fuchsia_settings__common::ThemeType, D)
3853                });
3854                fidl::decode!(
3855                    fidl_fuchsia_settings__common::ThemeType,
3856                    D,
3857                    val_ref,
3858                    decoder,
3859                    inner_offset,
3860                    inner_depth
3861                )?;
3862                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3863                {
3864                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3865                }
3866                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3867                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3868                }
3869            }
3870
3871            next_offset += envelope_size;
3872            _next_ordinal_to_read += 1;
3873            if next_offset >= end_offset {
3874                return Ok(());
3875            }
3876
3877            // Decode unknown envelopes for gaps in ordinals.
3878            while _next_ordinal_to_read < 4 {
3879                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3880                _next_ordinal_to_read += 1;
3881                next_offset += envelope_size;
3882            }
3883
3884            let next_out_of_line = decoder.next_out_of_line();
3885            let handles_before = decoder.remaining_handles();
3886            if let Some((inlined, num_bytes, num_handles)) =
3887                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3888            {
3889                let member_inline_size =
3890                    <f32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3891                if inlined != (member_inline_size <= 4) {
3892                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3893                }
3894                let inner_offset;
3895                let mut inner_depth = depth.clone();
3896                if inlined {
3897                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3898                    inner_offset = next_offset;
3899                } else {
3900                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3901                    inner_depth.increment()?;
3902                }
3903                let val_ref = self.page_scale.get_or_insert_with(|| fidl::new_empty!(f32, D));
3904                fidl::decode!(f32, D, val_ref, decoder, inner_offset, inner_depth)?;
3905                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3906                {
3907                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3908                }
3909                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3910                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3911                }
3912            }
3913
3914            next_offset += envelope_size;
3915
3916            // Decode the remaining unknown envelopes.
3917            while next_offset < end_offset {
3918                _next_ordinal_to_read += 1;
3919                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3920                next_offset += envelope_size;
3921            }
3922
3923            Ok(())
3924        }
3925    }
3926
3927    impl CookieId {
3928        #[inline(always)]
3929        fn max_ordinal_present(&self) -> u64 {
3930            if let Some(_) = self.path {
3931                return 3;
3932            }
3933            if let Some(_) = self.domain {
3934                return 2;
3935            }
3936            if let Some(_) = self.name {
3937                return 1;
3938            }
3939            0
3940        }
3941    }
3942
3943    impl fidl::encoding::ValueTypeMarker for CookieId {
3944        type Borrowed<'a> = &'a Self;
3945        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3946            value
3947        }
3948    }
3949
3950    unsafe impl fidl::encoding::TypeMarker for CookieId {
3951        type Owned = Self;
3952
3953        #[inline(always)]
3954        fn inline_align(_context: fidl::encoding::Context) -> usize {
3955            8
3956        }
3957
3958        #[inline(always)]
3959        fn inline_size(_context: fidl::encoding::Context) -> usize {
3960            16
3961        }
3962    }
3963
3964    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CookieId, D> for &CookieId {
3965        unsafe fn encode(
3966            self,
3967            encoder: &mut fidl::encoding::Encoder<'_, D>,
3968            offset: usize,
3969            mut depth: fidl::encoding::Depth,
3970        ) -> fidl::Result<()> {
3971            encoder.debug_check_bounds::<CookieId>(offset);
3972            // Vector header
3973            let max_ordinal: u64 = self.max_ordinal_present();
3974            encoder.write_num(max_ordinal, offset);
3975            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3976            // Calling encoder.out_of_line_offset(0) is not allowed.
3977            if max_ordinal == 0 {
3978                return Ok(());
3979            }
3980            depth.increment()?;
3981            let envelope_size = 8;
3982            let bytes_len = max_ordinal as usize * envelope_size;
3983            #[allow(unused_variables)]
3984            let offset = encoder.out_of_line_offset(bytes_len);
3985            let mut _prev_end_offset: usize = 0;
3986            if 1 > max_ordinal {
3987                return Ok(());
3988            }
3989
3990            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3991            // are envelope_size bytes.
3992            let cur_offset: usize = (1 - 1) * envelope_size;
3993
3994            // Zero reserved fields.
3995            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3996
3997            // Safety:
3998            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3999            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4000            //   envelope_size bytes, there is always sufficient room.
4001            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
4002                self.name.as_ref().map(
4003                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
4004                ),
4005                encoder,
4006                offset + cur_offset,
4007                depth,
4008            )?;
4009
4010            _prev_end_offset = cur_offset + envelope_size;
4011            if 2 > max_ordinal {
4012                return Ok(());
4013            }
4014
4015            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4016            // are envelope_size bytes.
4017            let cur_offset: usize = (2 - 1) * envelope_size;
4018
4019            // Zero reserved fields.
4020            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4021
4022            // Safety:
4023            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4024            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4025            //   envelope_size bytes, there is always sufficient room.
4026            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
4027                self.domain.as_ref().map(
4028                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
4029                ),
4030                encoder,
4031                offset + cur_offset,
4032                depth,
4033            )?;
4034
4035            _prev_end_offset = cur_offset + envelope_size;
4036            if 3 > max_ordinal {
4037                return Ok(());
4038            }
4039
4040            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4041            // are envelope_size bytes.
4042            let cur_offset: usize = (3 - 1) * envelope_size;
4043
4044            // Zero reserved fields.
4045            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4046
4047            // Safety:
4048            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4049            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4050            //   envelope_size bytes, there is always sufficient room.
4051            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<65536>, D>(
4052            self.path.as_ref().map(<fidl::encoding::BoundedString<65536> as fidl::encoding::ValueTypeMarker>::borrow),
4053            encoder, offset + cur_offset, depth
4054        )?;
4055
4056            _prev_end_offset = cur_offset + envelope_size;
4057
4058            Ok(())
4059        }
4060    }
4061
4062    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CookieId {
4063        #[inline(always)]
4064        fn new_empty() -> Self {
4065            Self::default()
4066        }
4067
4068        unsafe fn decode(
4069            &mut self,
4070            decoder: &mut fidl::encoding::Decoder<'_, D>,
4071            offset: usize,
4072            mut depth: fidl::encoding::Depth,
4073        ) -> fidl::Result<()> {
4074            decoder.debug_check_bounds::<Self>(offset);
4075            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4076                None => return Err(fidl::Error::NotNullable),
4077                Some(len) => len,
4078            };
4079            // Calling decoder.out_of_line_offset(0) is not allowed.
4080            if len == 0 {
4081                return Ok(());
4082            };
4083            depth.increment()?;
4084            let envelope_size = 8;
4085            let bytes_len = len * envelope_size;
4086            let offset = decoder.out_of_line_offset(bytes_len)?;
4087            // Decode the envelope for each type.
4088            let mut _next_ordinal_to_read = 0;
4089            let mut next_offset = offset;
4090            let end_offset = offset + bytes_len;
4091            _next_ordinal_to_read += 1;
4092            if next_offset >= end_offset {
4093                return Ok(());
4094            }
4095
4096            // Decode unknown envelopes for gaps in ordinals.
4097            while _next_ordinal_to_read < 1 {
4098                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4099                _next_ordinal_to_read += 1;
4100                next_offset += envelope_size;
4101            }
4102
4103            let next_out_of_line = decoder.next_out_of_line();
4104            let handles_before = decoder.remaining_handles();
4105            if let Some((inlined, num_bytes, num_handles)) =
4106                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4107            {
4108                let member_inline_size =
4109                    <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
4110                        decoder.context,
4111                    );
4112                if inlined != (member_inline_size <= 4) {
4113                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4114                }
4115                let inner_offset;
4116                let mut inner_depth = depth.clone();
4117                if inlined {
4118                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4119                    inner_offset = next_offset;
4120                } else {
4121                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4122                    inner_depth.increment()?;
4123                }
4124                let val_ref = self
4125                    .name
4126                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
4127                fidl::decode!(
4128                    fidl::encoding::UnboundedString,
4129                    D,
4130                    val_ref,
4131                    decoder,
4132                    inner_offset,
4133                    inner_depth
4134                )?;
4135                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4136                {
4137                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4138                }
4139                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4140                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4141                }
4142            }
4143
4144            next_offset += envelope_size;
4145            _next_ordinal_to_read += 1;
4146            if next_offset >= end_offset {
4147                return Ok(());
4148            }
4149
4150            // Decode unknown envelopes for gaps in ordinals.
4151            while _next_ordinal_to_read < 2 {
4152                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4153                _next_ordinal_to_read += 1;
4154                next_offset += envelope_size;
4155            }
4156
4157            let next_out_of_line = decoder.next_out_of_line();
4158            let handles_before = decoder.remaining_handles();
4159            if let Some((inlined, num_bytes, num_handles)) =
4160                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4161            {
4162                let member_inline_size =
4163                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
4164                        decoder.context,
4165                    );
4166                if inlined != (member_inline_size <= 4) {
4167                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4168                }
4169                let inner_offset;
4170                let mut inner_depth = depth.clone();
4171                if inlined {
4172                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4173                    inner_offset = next_offset;
4174                } else {
4175                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4176                    inner_depth.increment()?;
4177                }
4178                let val_ref = self
4179                    .domain
4180                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
4181                fidl::decode!(
4182                    fidl::encoding::BoundedString<255>,
4183                    D,
4184                    val_ref,
4185                    decoder,
4186                    inner_offset,
4187                    inner_depth
4188                )?;
4189                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4190                {
4191                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4192                }
4193                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4194                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4195                }
4196            }
4197
4198            next_offset += envelope_size;
4199            _next_ordinal_to_read += 1;
4200            if next_offset >= end_offset {
4201                return Ok(());
4202            }
4203
4204            // Decode unknown envelopes for gaps in ordinals.
4205            while _next_ordinal_to_read < 3 {
4206                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4207                _next_ordinal_to_read += 1;
4208                next_offset += envelope_size;
4209            }
4210
4211            let next_out_of_line = decoder.next_out_of_line();
4212            let handles_before = decoder.remaining_handles();
4213            if let Some((inlined, num_bytes, num_handles)) =
4214                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4215            {
4216                let member_inline_size = <fidl::encoding::BoundedString<65536> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4217                if inlined != (member_inline_size <= 4) {
4218                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4219                }
4220                let inner_offset;
4221                let mut inner_depth = depth.clone();
4222                if inlined {
4223                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4224                    inner_offset = next_offset;
4225                } else {
4226                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4227                    inner_depth.increment()?;
4228                }
4229                let val_ref = self.path.get_or_insert_with(|| {
4230                    fidl::new_empty!(fidl::encoding::BoundedString<65536>, D)
4231                });
4232                fidl::decode!(
4233                    fidl::encoding::BoundedString<65536>,
4234                    D,
4235                    val_ref,
4236                    decoder,
4237                    inner_offset,
4238                    inner_depth
4239                )?;
4240                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4241                {
4242                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4243                }
4244                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4245                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4246                }
4247            }
4248
4249            next_offset += envelope_size;
4250
4251            // Decode the remaining unknown envelopes.
4252            while next_offset < end_offset {
4253                _next_ordinal_to_read += 1;
4254                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4255                next_offset += envelope_size;
4256            }
4257
4258            Ok(())
4259        }
4260    }
4261
4262    impl FrameCloseRequest {
4263        #[inline(always)]
4264        fn max_ordinal_present(&self) -> u64 {
4265            if let Some(_) = self.timeout {
4266                return 1;
4267            }
4268            0
4269        }
4270    }
4271
4272    impl fidl::encoding::ValueTypeMarker for FrameCloseRequest {
4273        type Borrowed<'a> = &'a Self;
4274        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4275            value
4276        }
4277    }
4278
4279    unsafe impl fidl::encoding::TypeMarker for FrameCloseRequest {
4280        type Owned = Self;
4281
4282        #[inline(always)]
4283        fn inline_align(_context: fidl::encoding::Context) -> usize {
4284            8
4285        }
4286
4287        #[inline(always)]
4288        fn inline_size(_context: fidl::encoding::Context) -> usize {
4289            16
4290        }
4291    }
4292
4293    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<FrameCloseRequest, D>
4294        for &FrameCloseRequest
4295    {
4296        unsafe fn encode(
4297            self,
4298            encoder: &mut fidl::encoding::Encoder<'_, D>,
4299            offset: usize,
4300            mut depth: fidl::encoding::Depth,
4301        ) -> fidl::Result<()> {
4302            encoder.debug_check_bounds::<FrameCloseRequest>(offset);
4303            // Vector header
4304            let max_ordinal: u64 = self.max_ordinal_present();
4305            encoder.write_num(max_ordinal, offset);
4306            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4307            // Calling encoder.out_of_line_offset(0) is not allowed.
4308            if max_ordinal == 0 {
4309                return Ok(());
4310            }
4311            depth.increment()?;
4312            let envelope_size = 8;
4313            let bytes_len = max_ordinal as usize * envelope_size;
4314            #[allow(unused_variables)]
4315            let offset = encoder.out_of_line_offset(bytes_len);
4316            let mut _prev_end_offset: usize = 0;
4317            if 1 > max_ordinal {
4318                return Ok(());
4319            }
4320
4321            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4322            // are envelope_size bytes.
4323            let cur_offset: usize = (1 - 1) * envelope_size;
4324
4325            // Zero reserved fields.
4326            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4327
4328            // Safety:
4329            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4330            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4331            //   envelope_size bytes, there is always sufficient room.
4332            fidl::encoding::encode_in_envelope_optional::<i64, D>(
4333                self.timeout.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
4334                encoder,
4335                offset + cur_offset,
4336                depth,
4337            )?;
4338
4339            _prev_end_offset = cur_offset + envelope_size;
4340
4341            Ok(())
4342        }
4343    }
4344
4345    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for FrameCloseRequest {
4346        #[inline(always)]
4347        fn new_empty() -> Self {
4348            Self::default()
4349        }
4350
4351        unsafe fn decode(
4352            &mut self,
4353            decoder: &mut fidl::encoding::Decoder<'_, D>,
4354            offset: usize,
4355            mut depth: fidl::encoding::Depth,
4356        ) -> fidl::Result<()> {
4357            decoder.debug_check_bounds::<Self>(offset);
4358            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4359                None => return Err(fidl::Error::NotNullable),
4360                Some(len) => len,
4361            };
4362            // Calling decoder.out_of_line_offset(0) is not allowed.
4363            if len == 0 {
4364                return Ok(());
4365            };
4366            depth.increment()?;
4367            let envelope_size = 8;
4368            let bytes_len = len * envelope_size;
4369            let offset = decoder.out_of_line_offset(bytes_len)?;
4370            // Decode the envelope for each type.
4371            let mut _next_ordinal_to_read = 0;
4372            let mut next_offset = offset;
4373            let end_offset = offset + bytes_len;
4374            _next_ordinal_to_read += 1;
4375            if next_offset >= end_offset {
4376                return Ok(());
4377            }
4378
4379            // Decode unknown envelopes for gaps in ordinals.
4380            while _next_ordinal_to_read < 1 {
4381                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4382                _next_ordinal_to_read += 1;
4383                next_offset += envelope_size;
4384            }
4385
4386            let next_out_of_line = decoder.next_out_of_line();
4387            let handles_before = decoder.remaining_handles();
4388            if let Some((inlined, num_bytes, num_handles)) =
4389                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4390            {
4391                let member_inline_size =
4392                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4393                if inlined != (member_inline_size <= 4) {
4394                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4395                }
4396                let inner_offset;
4397                let mut inner_depth = depth.clone();
4398                if inlined {
4399                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4400                    inner_offset = next_offset;
4401                } else {
4402                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4403                    inner_depth.increment()?;
4404                }
4405                let val_ref = self.timeout.get_or_insert_with(|| fidl::new_empty!(i64, D));
4406                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
4407                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4408                {
4409                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4410                }
4411                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4412                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4413                }
4414            }
4415
4416            next_offset += envelope_size;
4417
4418            // Decode the remaining unknown envelopes.
4419            while next_offset < end_offset {
4420                _next_ordinal_to_read += 1;
4421                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4422                next_offset += envelope_size;
4423            }
4424
4425            Ok(())
4426        }
4427    }
4428
4429    impl FrameMediaSettings {
4430        #[inline(always)]
4431        fn max_ordinal_present(&self) -> u64 {
4432            if let Some(_) = self.renderer_usage2 {
4433                return 3;
4434            }
4435            if let Some(_) = self.audio_consumer_session_id {
4436                return 2;
4437            }
4438            if let Some(_) = self.renderer_usage {
4439                return 1;
4440            }
4441            0
4442        }
4443    }
4444
4445    impl fidl::encoding::ValueTypeMarker for FrameMediaSettings {
4446        type Borrowed<'a> = &'a Self;
4447        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4448            value
4449        }
4450    }
4451
4452    unsafe impl fidl::encoding::TypeMarker for FrameMediaSettings {
4453        type Owned = Self;
4454
4455        #[inline(always)]
4456        fn inline_align(_context: fidl::encoding::Context) -> usize {
4457            8
4458        }
4459
4460        #[inline(always)]
4461        fn inline_size(_context: fidl::encoding::Context) -> usize {
4462            16
4463        }
4464    }
4465
4466    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<FrameMediaSettings, D>
4467        for &FrameMediaSettings
4468    {
4469        unsafe fn encode(
4470            self,
4471            encoder: &mut fidl::encoding::Encoder<'_, D>,
4472            offset: usize,
4473            mut depth: fidl::encoding::Depth,
4474        ) -> fidl::Result<()> {
4475            encoder.debug_check_bounds::<FrameMediaSettings>(offset);
4476            // Vector header
4477            let max_ordinal: u64 = self.max_ordinal_present();
4478            encoder.write_num(max_ordinal, offset);
4479            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4480            // Calling encoder.out_of_line_offset(0) is not allowed.
4481            if max_ordinal == 0 {
4482                return Ok(());
4483            }
4484            depth.increment()?;
4485            let envelope_size = 8;
4486            let bytes_len = max_ordinal as usize * envelope_size;
4487            #[allow(unused_variables)]
4488            let offset = encoder.out_of_line_offset(bytes_len);
4489            let mut _prev_end_offset: usize = 0;
4490            if 1 > max_ordinal {
4491                return Ok(());
4492            }
4493
4494            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4495            // are envelope_size bytes.
4496            let cur_offset: usize = (1 - 1) * envelope_size;
4497
4498            // Zero reserved fields.
4499            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4500
4501            // Safety:
4502            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4503            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4504            //   envelope_size bytes, there is always sufficient room.
4505            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_media__common::AudioRenderUsage, D>(
4506            self.renderer_usage.as_ref().map(<fidl_fuchsia_media__common::AudioRenderUsage as fidl::encoding::ValueTypeMarker>::borrow),
4507            encoder, offset + cur_offset, depth
4508        )?;
4509
4510            _prev_end_offset = cur_offset + envelope_size;
4511            if 2 > max_ordinal {
4512                return Ok(());
4513            }
4514
4515            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4516            // are envelope_size bytes.
4517            let cur_offset: usize = (2 - 1) * envelope_size;
4518
4519            // Zero reserved fields.
4520            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4521
4522            // Safety:
4523            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4524            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4525            //   envelope_size bytes, there is always sufficient room.
4526            fidl::encoding::encode_in_envelope_optional::<u64, D>(
4527                self.audio_consumer_session_id
4528                    .as_ref()
4529                    .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4530                encoder,
4531                offset + cur_offset,
4532                depth,
4533            )?;
4534
4535            _prev_end_offset = cur_offset + envelope_size;
4536            if 3 > max_ordinal {
4537                return Ok(());
4538            }
4539
4540            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4541            // are envelope_size bytes.
4542            let cur_offset: usize = (3 - 1) * envelope_size;
4543
4544            // Zero reserved fields.
4545            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4546
4547            // Safety:
4548            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4549            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4550            //   envelope_size bytes, there is always sufficient room.
4551            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_media__common::AudioRenderUsage2, D>(
4552            self.renderer_usage2.as_ref().map(<fidl_fuchsia_media__common::AudioRenderUsage2 as fidl::encoding::ValueTypeMarker>::borrow),
4553            encoder, offset + cur_offset, depth
4554        )?;
4555
4556            _prev_end_offset = cur_offset + envelope_size;
4557
4558            Ok(())
4559        }
4560    }
4561
4562    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for FrameMediaSettings {
4563        #[inline(always)]
4564        fn new_empty() -> Self {
4565            Self::default()
4566        }
4567
4568        unsafe fn decode(
4569            &mut self,
4570            decoder: &mut fidl::encoding::Decoder<'_, D>,
4571            offset: usize,
4572            mut depth: fidl::encoding::Depth,
4573        ) -> fidl::Result<()> {
4574            decoder.debug_check_bounds::<Self>(offset);
4575            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4576                None => return Err(fidl::Error::NotNullable),
4577                Some(len) => len,
4578            };
4579            // Calling decoder.out_of_line_offset(0) is not allowed.
4580            if len == 0 {
4581                return Ok(());
4582            };
4583            depth.increment()?;
4584            let envelope_size = 8;
4585            let bytes_len = len * envelope_size;
4586            let offset = decoder.out_of_line_offset(bytes_len)?;
4587            // Decode the envelope for each type.
4588            let mut _next_ordinal_to_read = 0;
4589            let mut next_offset = offset;
4590            let end_offset = offset + bytes_len;
4591            _next_ordinal_to_read += 1;
4592            if next_offset >= end_offset {
4593                return Ok(());
4594            }
4595
4596            // Decode unknown envelopes for gaps in ordinals.
4597            while _next_ordinal_to_read < 1 {
4598                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4599                _next_ordinal_to_read += 1;
4600                next_offset += envelope_size;
4601            }
4602
4603            let next_out_of_line = decoder.next_out_of_line();
4604            let handles_before = decoder.remaining_handles();
4605            if let Some((inlined, num_bytes, num_handles)) =
4606                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4607            {
4608                let member_inline_size = <fidl_fuchsia_media__common::AudioRenderUsage as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4609                if inlined != (member_inline_size <= 4) {
4610                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4611                }
4612                let inner_offset;
4613                let mut inner_depth = depth.clone();
4614                if inlined {
4615                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4616                    inner_offset = next_offset;
4617                } else {
4618                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4619                    inner_depth.increment()?;
4620                }
4621                let val_ref = self.renderer_usage.get_or_insert_with(|| {
4622                    fidl::new_empty!(fidl_fuchsia_media__common::AudioRenderUsage, D)
4623                });
4624                fidl::decode!(
4625                    fidl_fuchsia_media__common::AudioRenderUsage,
4626                    D,
4627                    val_ref,
4628                    decoder,
4629                    inner_offset,
4630                    inner_depth
4631                )?;
4632                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4633                {
4634                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4635                }
4636                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4637                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4638                }
4639            }
4640
4641            next_offset += envelope_size;
4642            _next_ordinal_to_read += 1;
4643            if next_offset >= end_offset {
4644                return Ok(());
4645            }
4646
4647            // Decode unknown envelopes for gaps in ordinals.
4648            while _next_ordinal_to_read < 2 {
4649                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4650                _next_ordinal_to_read += 1;
4651                next_offset += envelope_size;
4652            }
4653
4654            let next_out_of_line = decoder.next_out_of_line();
4655            let handles_before = decoder.remaining_handles();
4656            if let Some((inlined, num_bytes, num_handles)) =
4657                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4658            {
4659                let member_inline_size =
4660                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4661                if inlined != (member_inline_size <= 4) {
4662                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4663                }
4664                let inner_offset;
4665                let mut inner_depth = depth.clone();
4666                if inlined {
4667                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4668                    inner_offset = next_offset;
4669                } else {
4670                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4671                    inner_depth.increment()?;
4672                }
4673                let val_ref =
4674                    self.audio_consumer_session_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
4675                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4676                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4677                {
4678                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4679                }
4680                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4681                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4682                }
4683            }
4684
4685            next_offset += envelope_size;
4686            _next_ordinal_to_read += 1;
4687            if next_offset >= end_offset {
4688                return Ok(());
4689            }
4690
4691            // Decode unknown envelopes for gaps in ordinals.
4692            while _next_ordinal_to_read < 3 {
4693                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4694                _next_ordinal_to_read += 1;
4695                next_offset += envelope_size;
4696            }
4697
4698            let next_out_of_line = decoder.next_out_of_line();
4699            let handles_before = decoder.remaining_handles();
4700            if let Some((inlined, num_bytes, num_handles)) =
4701                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4702            {
4703                let member_inline_size = <fidl_fuchsia_media__common::AudioRenderUsage2 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4704                if inlined != (member_inline_size <= 4) {
4705                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4706                }
4707                let inner_offset;
4708                let mut inner_depth = depth.clone();
4709                if inlined {
4710                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4711                    inner_offset = next_offset;
4712                } else {
4713                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4714                    inner_depth.increment()?;
4715                }
4716                let val_ref = self.renderer_usage2.get_or_insert_with(|| {
4717                    fidl::new_empty!(fidl_fuchsia_media__common::AudioRenderUsage2, D)
4718                });
4719                fidl::decode!(
4720                    fidl_fuchsia_media__common::AudioRenderUsage2,
4721                    D,
4722                    val_ref,
4723                    decoder,
4724                    inner_offset,
4725                    inner_depth
4726                )?;
4727                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4728                {
4729                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4730                }
4731                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4732                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4733                }
4734            }
4735
4736            next_offset += envelope_size;
4737
4738            // Decode the remaining unknown envelopes.
4739            while next_offset < end_offset {
4740                _next_ordinal_to_read += 1;
4741                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4742                next_offset += envelope_size;
4743            }
4744
4745            Ok(())
4746        }
4747    }
4748
4749    impl NavigationPolicyProviderParams {
4750        #[inline(always)]
4751        fn max_ordinal_present(&self) -> u64 {
4752            if let Some(_) = self.subframe_phases {
4753                return 2;
4754            }
4755            if let Some(_) = self.main_frame_phases {
4756                return 1;
4757            }
4758            0
4759        }
4760    }
4761
4762    impl fidl::encoding::ValueTypeMarker for NavigationPolicyProviderParams {
4763        type Borrowed<'a> = &'a Self;
4764        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4765            value
4766        }
4767    }
4768
4769    unsafe impl fidl::encoding::TypeMarker for NavigationPolicyProviderParams {
4770        type Owned = Self;
4771
4772        #[inline(always)]
4773        fn inline_align(_context: fidl::encoding::Context) -> usize {
4774            8
4775        }
4776
4777        #[inline(always)]
4778        fn inline_size(_context: fidl::encoding::Context) -> usize {
4779            16
4780        }
4781    }
4782
4783    unsafe impl<D: fidl::encoding::ResourceDialect>
4784        fidl::encoding::Encode<NavigationPolicyProviderParams, D>
4785        for &NavigationPolicyProviderParams
4786    {
4787        unsafe fn encode(
4788            self,
4789            encoder: &mut fidl::encoding::Encoder<'_, D>,
4790            offset: usize,
4791            mut depth: fidl::encoding::Depth,
4792        ) -> fidl::Result<()> {
4793            encoder.debug_check_bounds::<NavigationPolicyProviderParams>(offset);
4794            // Vector header
4795            let max_ordinal: u64 = self.max_ordinal_present();
4796            encoder.write_num(max_ordinal, offset);
4797            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4798            // Calling encoder.out_of_line_offset(0) is not allowed.
4799            if max_ordinal == 0 {
4800                return Ok(());
4801            }
4802            depth.increment()?;
4803            let envelope_size = 8;
4804            let bytes_len = max_ordinal as usize * envelope_size;
4805            #[allow(unused_variables)]
4806            let offset = encoder.out_of_line_offset(bytes_len);
4807            let mut _prev_end_offset: usize = 0;
4808            if 1 > max_ordinal {
4809                return Ok(());
4810            }
4811
4812            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4813            // are envelope_size bytes.
4814            let cur_offset: usize = (1 - 1) * envelope_size;
4815
4816            // Zero reserved fields.
4817            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4818
4819            // Safety:
4820            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4821            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4822            //   envelope_size bytes, there is always sufficient room.
4823            fidl::encoding::encode_in_envelope_optional::<NavigationPhase, D>(
4824                self.main_frame_phases
4825                    .as_ref()
4826                    .map(<NavigationPhase as fidl::encoding::ValueTypeMarker>::borrow),
4827                encoder,
4828                offset + cur_offset,
4829                depth,
4830            )?;
4831
4832            _prev_end_offset = cur_offset + envelope_size;
4833            if 2 > max_ordinal {
4834                return Ok(());
4835            }
4836
4837            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4838            // are envelope_size bytes.
4839            let cur_offset: usize = (2 - 1) * envelope_size;
4840
4841            // Zero reserved fields.
4842            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4843
4844            // Safety:
4845            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4846            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4847            //   envelope_size bytes, there is always sufficient room.
4848            fidl::encoding::encode_in_envelope_optional::<NavigationPhase, D>(
4849                self.subframe_phases
4850                    .as_ref()
4851                    .map(<NavigationPhase as fidl::encoding::ValueTypeMarker>::borrow),
4852                encoder,
4853                offset + cur_offset,
4854                depth,
4855            )?;
4856
4857            _prev_end_offset = cur_offset + envelope_size;
4858
4859            Ok(())
4860        }
4861    }
4862
4863    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4864        for NavigationPolicyProviderParams
4865    {
4866        #[inline(always)]
4867        fn new_empty() -> Self {
4868            Self::default()
4869        }
4870
4871        unsafe fn decode(
4872            &mut self,
4873            decoder: &mut fidl::encoding::Decoder<'_, D>,
4874            offset: usize,
4875            mut depth: fidl::encoding::Depth,
4876        ) -> fidl::Result<()> {
4877            decoder.debug_check_bounds::<Self>(offset);
4878            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4879                None => return Err(fidl::Error::NotNullable),
4880                Some(len) => len,
4881            };
4882            // Calling decoder.out_of_line_offset(0) is not allowed.
4883            if len == 0 {
4884                return Ok(());
4885            };
4886            depth.increment()?;
4887            let envelope_size = 8;
4888            let bytes_len = len * envelope_size;
4889            let offset = decoder.out_of_line_offset(bytes_len)?;
4890            // Decode the envelope for each type.
4891            let mut _next_ordinal_to_read = 0;
4892            let mut next_offset = offset;
4893            let end_offset = offset + bytes_len;
4894            _next_ordinal_to_read += 1;
4895            if next_offset >= end_offset {
4896                return Ok(());
4897            }
4898
4899            // Decode unknown envelopes for gaps in ordinals.
4900            while _next_ordinal_to_read < 1 {
4901                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4902                _next_ordinal_to_read += 1;
4903                next_offset += envelope_size;
4904            }
4905
4906            let next_out_of_line = decoder.next_out_of_line();
4907            let handles_before = decoder.remaining_handles();
4908            if let Some((inlined, num_bytes, num_handles)) =
4909                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4910            {
4911                let member_inline_size =
4912                    <NavigationPhase as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4913                if inlined != (member_inline_size <= 4) {
4914                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4915                }
4916                let inner_offset;
4917                let mut inner_depth = depth.clone();
4918                if inlined {
4919                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4920                    inner_offset = next_offset;
4921                } else {
4922                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4923                    inner_depth.increment()?;
4924                }
4925                let val_ref = self
4926                    .main_frame_phases
4927                    .get_or_insert_with(|| fidl::new_empty!(NavigationPhase, D));
4928                fidl::decode!(NavigationPhase, D, val_ref, decoder, inner_offset, inner_depth)?;
4929                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4930                {
4931                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4932                }
4933                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4934                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4935                }
4936            }
4937
4938            next_offset += envelope_size;
4939            _next_ordinal_to_read += 1;
4940            if next_offset >= end_offset {
4941                return Ok(());
4942            }
4943
4944            // Decode unknown envelopes for gaps in ordinals.
4945            while _next_ordinal_to_read < 2 {
4946                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4947                _next_ordinal_to_read += 1;
4948                next_offset += envelope_size;
4949            }
4950
4951            let next_out_of_line = decoder.next_out_of_line();
4952            let handles_before = decoder.remaining_handles();
4953            if let Some((inlined, num_bytes, num_handles)) =
4954                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4955            {
4956                let member_inline_size =
4957                    <NavigationPhase as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4958                if inlined != (member_inline_size <= 4) {
4959                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4960                }
4961                let inner_offset;
4962                let mut inner_depth = depth.clone();
4963                if inlined {
4964                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4965                    inner_offset = next_offset;
4966                } else {
4967                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4968                    inner_depth.increment()?;
4969                }
4970                let val_ref = self
4971                    .subframe_phases
4972                    .get_or_insert_with(|| fidl::new_empty!(NavigationPhase, D));
4973                fidl::decode!(NavigationPhase, D, val_ref, decoder, inner_offset, inner_depth)?;
4974                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4975                {
4976                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4977                }
4978                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4979                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4980                }
4981            }
4982
4983            next_offset += envelope_size;
4984
4985            // Decode the remaining unknown envelopes.
4986            while next_offset < end_offset {
4987                _next_ordinal_to_read += 1;
4988                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4989                next_offset += envelope_size;
4990            }
4991
4992            Ok(())
4993        }
4994    }
4995
4996    impl PermissionDescriptor {
4997        #[inline(always)]
4998        fn max_ordinal_present(&self) -> u64 {
4999            if let Some(_) = self.type_ {
5000                return 1;
5001            }
5002            0
5003        }
5004    }
5005
5006    impl fidl::encoding::ValueTypeMarker for PermissionDescriptor {
5007        type Borrowed<'a> = &'a Self;
5008        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5009            value
5010        }
5011    }
5012
5013    unsafe impl fidl::encoding::TypeMarker for PermissionDescriptor {
5014        type Owned = Self;
5015
5016        #[inline(always)]
5017        fn inline_align(_context: fidl::encoding::Context) -> usize {
5018            8
5019        }
5020
5021        #[inline(always)]
5022        fn inline_size(_context: fidl::encoding::Context) -> usize {
5023            16
5024        }
5025    }
5026
5027    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PermissionDescriptor, D>
5028        for &PermissionDescriptor
5029    {
5030        unsafe fn encode(
5031            self,
5032            encoder: &mut fidl::encoding::Encoder<'_, D>,
5033            offset: usize,
5034            mut depth: fidl::encoding::Depth,
5035        ) -> fidl::Result<()> {
5036            encoder.debug_check_bounds::<PermissionDescriptor>(offset);
5037            // Vector header
5038            let max_ordinal: u64 = self.max_ordinal_present();
5039            encoder.write_num(max_ordinal, offset);
5040            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5041            // Calling encoder.out_of_line_offset(0) is not allowed.
5042            if max_ordinal == 0 {
5043                return Ok(());
5044            }
5045            depth.increment()?;
5046            let envelope_size = 8;
5047            let bytes_len = max_ordinal as usize * envelope_size;
5048            #[allow(unused_variables)]
5049            let offset = encoder.out_of_line_offset(bytes_len);
5050            let mut _prev_end_offset: usize = 0;
5051            if 1 > max_ordinal {
5052                return Ok(());
5053            }
5054
5055            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5056            // are envelope_size bytes.
5057            let cur_offset: usize = (1 - 1) * envelope_size;
5058
5059            // Zero reserved fields.
5060            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5061
5062            // Safety:
5063            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5064            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5065            //   envelope_size bytes, there is always sufficient room.
5066            fidl::encoding::encode_in_envelope_optional::<PermissionType, D>(
5067                self.type_
5068                    .as_ref()
5069                    .map(<PermissionType as fidl::encoding::ValueTypeMarker>::borrow),
5070                encoder,
5071                offset + cur_offset,
5072                depth,
5073            )?;
5074
5075            _prev_end_offset = cur_offset + envelope_size;
5076
5077            Ok(())
5078        }
5079    }
5080
5081    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PermissionDescriptor {
5082        #[inline(always)]
5083        fn new_empty() -> Self {
5084            Self::default()
5085        }
5086
5087        unsafe fn decode(
5088            &mut self,
5089            decoder: &mut fidl::encoding::Decoder<'_, D>,
5090            offset: usize,
5091            mut depth: fidl::encoding::Depth,
5092        ) -> fidl::Result<()> {
5093            decoder.debug_check_bounds::<Self>(offset);
5094            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5095                None => return Err(fidl::Error::NotNullable),
5096                Some(len) => len,
5097            };
5098            // Calling decoder.out_of_line_offset(0) is not allowed.
5099            if len == 0 {
5100                return Ok(());
5101            };
5102            depth.increment()?;
5103            let envelope_size = 8;
5104            let bytes_len = len * envelope_size;
5105            let offset = decoder.out_of_line_offset(bytes_len)?;
5106            // Decode the envelope for each type.
5107            let mut _next_ordinal_to_read = 0;
5108            let mut next_offset = offset;
5109            let end_offset = offset + bytes_len;
5110            _next_ordinal_to_read += 1;
5111            if next_offset >= end_offset {
5112                return Ok(());
5113            }
5114
5115            // Decode unknown envelopes for gaps in ordinals.
5116            while _next_ordinal_to_read < 1 {
5117                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5118                _next_ordinal_to_read += 1;
5119                next_offset += envelope_size;
5120            }
5121
5122            let next_out_of_line = decoder.next_out_of_line();
5123            let handles_before = decoder.remaining_handles();
5124            if let Some((inlined, num_bytes, num_handles)) =
5125                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5126            {
5127                let member_inline_size =
5128                    <PermissionType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5129                if inlined != (member_inline_size <= 4) {
5130                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5131                }
5132                let inner_offset;
5133                let mut inner_depth = depth.clone();
5134                if inlined {
5135                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5136                    inner_offset = next_offset;
5137                } else {
5138                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5139                    inner_depth.increment()?;
5140                }
5141                let val_ref = self.type_.get_or_insert_with(|| fidl::new_empty!(PermissionType, D));
5142                fidl::decode!(PermissionType, D, val_ref, decoder, inner_offset, inner_depth)?;
5143                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5144                {
5145                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5146                }
5147                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5148                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5149                }
5150            }
5151
5152            next_offset += envelope_size;
5153
5154            // Decode the remaining unknown envelopes.
5155            while next_offset < end_offset {
5156                _next_ordinal_to_read += 1;
5157                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5158                next_offset += envelope_size;
5159            }
5160
5161            Ok(())
5162        }
5163    }
5164
5165    impl RequestedNavigation {
5166        #[inline(always)]
5167        fn max_ordinal_present(&self) -> u64 {
5168            if let Some(_) = self.was_server_redirect {
5169                return 8;
5170            }
5171            if let Some(_) = self.has_gesture {
5172                return 7;
5173            }
5174            if let Some(_) = self.url {
5175                return 6;
5176            }
5177            if let Some(_) = self.is_http_post {
5178                return 5;
5179            }
5180            if let Some(_) = self.is_same_document {
5181                return 4;
5182            }
5183            if let Some(_) = self.is_main_frame {
5184                return 3;
5185            }
5186            if let Some(_) = self.phase {
5187                return 2;
5188            }
5189            if let Some(_) = self.id {
5190                return 1;
5191            }
5192            0
5193        }
5194    }
5195
5196    impl fidl::encoding::ValueTypeMarker for RequestedNavigation {
5197        type Borrowed<'a> = &'a Self;
5198        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5199            value
5200        }
5201    }
5202
5203    unsafe impl fidl::encoding::TypeMarker for RequestedNavigation {
5204        type Owned = Self;
5205
5206        #[inline(always)]
5207        fn inline_align(_context: fidl::encoding::Context) -> usize {
5208            8
5209        }
5210
5211        #[inline(always)]
5212        fn inline_size(_context: fidl::encoding::Context) -> usize {
5213            16
5214        }
5215    }
5216
5217    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RequestedNavigation, D>
5218        for &RequestedNavigation
5219    {
5220        unsafe fn encode(
5221            self,
5222            encoder: &mut fidl::encoding::Encoder<'_, D>,
5223            offset: usize,
5224            mut depth: fidl::encoding::Depth,
5225        ) -> fidl::Result<()> {
5226            encoder.debug_check_bounds::<RequestedNavigation>(offset);
5227            // Vector header
5228            let max_ordinal: u64 = self.max_ordinal_present();
5229            encoder.write_num(max_ordinal, offset);
5230            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5231            // Calling encoder.out_of_line_offset(0) is not allowed.
5232            if max_ordinal == 0 {
5233                return Ok(());
5234            }
5235            depth.increment()?;
5236            let envelope_size = 8;
5237            let bytes_len = max_ordinal as usize * envelope_size;
5238            #[allow(unused_variables)]
5239            let offset = encoder.out_of_line_offset(bytes_len);
5240            let mut _prev_end_offset: usize = 0;
5241            if 1 > max_ordinal {
5242                return Ok(());
5243            }
5244
5245            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5246            // are envelope_size bytes.
5247            let cur_offset: usize = (1 - 1) * envelope_size;
5248
5249            // Zero reserved fields.
5250            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5251
5252            // Safety:
5253            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5254            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5255            //   envelope_size bytes, there is always sufficient room.
5256            fidl::encoding::encode_in_envelope_optional::<u64, D>(
5257                self.id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5258                encoder,
5259                offset + cur_offset,
5260                depth,
5261            )?;
5262
5263            _prev_end_offset = cur_offset + envelope_size;
5264            if 2 > max_ordinal {
5265                return Ok(());
5266            }
5267
5268            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5269            // are envelope_size bytes.
5270            let cur_offset: usize = (2 - 1) * envelope_size;
5271
5272            // Zero reserved fields.
5273            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5274
5275            // Safety:
5276            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5277            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5278            //   envelope_size bytes, there is always sufficient room.
5279            fidl::encoding::encode_in_envelope_optional::<NavigationPhase, D>(
5280                self.phase
5281                    .as_ref()
5282                    .map(<NavigationPhase as fidl::encoding::ValueTypeMarker>::borrow),
5283                encoder,
5284                offset + cur_offset,
5285                depth,
5286            )?;
5287
5288            _prev_end_offset = cur_offset + envelope_size;
5289            if 3 > max_ordinal {
5290                return Ok(());
5291            }
5292
5293            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5294            // are envelope_size bytes.
5295            let cur_offset: usize = (3 - 1) * envelope_size;
5296
5297            // Zero reserved fields.
5298            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5299
5300            // Safety:
5301            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5302            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5303            //   envelope_size bytes, there is always sufficient room.
5304            fidl::encoding::encode_in_envelope_optional::<bool, D>(
5305                self.is_main_frame.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5306                encoder,
5307                offset + cur_offset,
5308                depth,
5309            )?;
5310
5311            _prev_end_offset = cur_offset + envelope_size;
5312            if 4 > max_ordinal {
5313                return Ok(());
5314            }
5315
5316            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5317            // are envelope_size bytes.
5318            let cur_offset: usize = (4 - 1) * envelope_size;
5319
5320            // Zero reserved fields.
5321            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5322
5323            // Safety:
5324            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5325            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5326            //   envelope_size bytes, there is always sufficient room.
5327            fidl::encoding::encode_in_envelope_optional::<bool, D>(
5328                self.is_same_document
5329                    .as_ref()
5330                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5331                encoder,
5332                offset + cur_offset,
5333                depth,
5334            )?;
5335
5336            _prev_end_offset = cur_offset + envelope_size;
5337            if 5 > max_ordinal {
5338                return Ok(());
5339            }
5340
5341            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5342            // are envelope_size bytes.
5343            let cur_offset: usize = (5 - 1) * envelope_size;
5344
5345            // Zero reserved fields.
5346            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5347
5348            // Safety:
5349            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5350            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5351            //   envelope_size bytes, there is always sufficient room.
5352            fidl::encoding::encode_in_envelope_optional::<bool, D>(
5353                self.is_http_post.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5354                encoder,
5355                offset + cur_offset,
5356                depth,
5357            )?;
5358
5359            _prev_end_offset = cur_offset + envelope_size;
5360            if 6 > max_ordinal {
5361                return Ok(());
5362            }
5363
5364            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5365            // are envelope_size bytes.
5366            let cur_offset: usize = (6 - 1) * envelope_size;
5367
5368            // Zero reserved fields.
5369            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5370
5371            // Safety:
5372            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5373            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5374            //   envelope_size bytes, there is always sufficient room.
5375            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<65536>, D>(
5376            self.url.as_ref().map(<fidl::encoding::BoundedString<65536> as fidl::encoding::ValueTypeMarker>::borrow),
5377            encoder, offset + cur_offset, depth
5378        )?;
5379
5380            _prev_end_offset = cur_offset + envelope_size;
5381            if 7 > max_ordinal {
5382                return Ok(());
5383            }
5384
5385            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5386            // are envelope_size bytes.
5387            let cur_offset: usize = (7 - 1) * envelope_size;
5388
5389            // Zero reserved fields.
5390            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5391
5392            // Safety:
5393            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5394            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5395            //   envelope_size bytes, there is always sufficient room.
5396            fidl::encoding::encode_in_envelope_optional::<bool, D>(
5397                self.has_gesture.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5398                encoder,
5399                offset + cur_offset,
5400                depth,
5401            )?;
5402
5403            _prev_end_offset = cur_offset + envelope_size;
5404            if 8 > max_ordinal {
5405                return Ok(());
5406            }
5407
5408            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5409            // are envelope_size bytes.
5410            let cur_offset: usize = (8 - 1) * envelope_size;
5411
5412            // Zero reserved fields.
5413            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5414
5415            // Safety:
5416            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5417            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5418            //   envelope_size bytes, there is always sufficient room.
5419            fidl::encoding::encode_in_envelope_optional::<bool, D>(
5420                self.was_server_redirect
5421                    .as_ref()
5422                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5423                encoder,
5424                offset + cur_offset,
5425                depth,
5426            )?;
5427
5428            _prev_end_offset = cur_offset + envelope_size;
5429
5430            Ok(())
5431        }
5432    }
5433
5434    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RequestedNavigation {
5435        #[inline(always)]
5436        fn new_empty() -> Self {
5437            Self::default()
5438        }
5439
5440        unsafe fn decode(
5441            &mut self,
5442            decoder: &mut fidl::encoding::Decoder<'_, D>,
5443            offset: usize,
5444            mut depth: fidl::encoding::Depth,
5445        ) -> fidl::Result<()> {
5446            decoder.debug_check_bounds::<Self>(offset);
5447            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5448                None => return Err(fidl::Error::NotNullable),
5449                Some(len) => len,
5450            };
5451            // Calling decoder.out_of_line_offset(0) is not allowed.
5452            if len == 0 {
5453                return Ok(());
5454            };
5455            depth.increment()?;
5456            let envelope_size = 8;
5457            let bytes_len = len * envelope_size;
5458            let offset = decoder.out_of_line_offset(bytes_len)?;
5459            // Decode the envelope for each type.
5460            let mut _next_ordinal_to_read = 0;
5461            let mut next_offset = offset;
5462            let end_offset = offset + bytes_len;
5463            _next_ordinal_to_read += 1;
5464            if next_offset >= end_offset {
5465                return Ok(());
5466            }
5467
5468            // Decode unknown envelopes for gaps in ordinals.
5469            while _next_ordinal_to_read < 1 {
5470                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5471                _next_ordinal_to_read += 1;
5472                next_offset += envelope_size;
5473            }
5474
5475            let next_out_of_line = decoder.next_out_of_line();
5476            let handles_before = decoder.remaining_handles();
5477            if let Some((inlined, num_bytes, num_handles)) =
5478                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5479            {
5480                let member_inline_size =
5481                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5482                if inlined != (member_inline_size <= 4) {
5483                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5484                }
5485                let inner_offset;
5486                let mut inner_depth = depth.clone();
5487                if inlined {
5488                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5489                    inner_offset = next_offset;
5490                } else {
5491                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5492                    inner_depth.increment()?;
5493                }
5494                let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u64, D));
5495                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5496                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5497                {
5498                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5499                }
5500                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5501                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5502                }
5503            }
5504
5505            next_offset += envelope_size;
5506            _next_ordinal_to_read += 1;
5507            if next_offset >= end_offset {
5508                return Ok(());
5509            }
5510
5511            // Decode unknown envelopes for gaps in ordinals.
5512            while _next_ordinal_to_read < 2 {
5513                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5514                _next_ordinal_to_read += 1;
5515                next_offset += envelope_size;
5516            }
5517
5518            let next_out_of_line = decoder.next_out_of_line();
5519            let handles_before = decoder.remaining_handles();
5520            if let Some((inlined, num_bytes, num_handles)) =
5521                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5522            {
5523                let member_inline_size =
5524                    <NavigationPhase as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5525                if inlined != (member_inline_size <= 4) {
5526                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5527                }
5528                let inner_offset;
5529                let mut inner_depth = depth.clone();
5530                if inlined {
5531                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5532                    inner_offset = next_offset;
5533                } else {
5534                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5535                    inner_depth.increment()?;
5536                }
5537                let val_ref =
5538                    self.phase.get_or_insert_with(|| fidl::new_empty!(NavigationPhase, D));
5539                fidl::decode!(NavigationPhase, D, val_ref, decoder, inner_offset, inner_depth)?;
5540                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5541                {
5542                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5543                }
5544                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5545                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5546                }
5547            }
5548
5549            next_offset += envelope_size;
5550            _next_ordinal_to_read += 1;
5551            if next_offset >= end_offset {
5552                return Ok(());
5553            }
5554
5555            // Decode unknown envelopes for gaps in ordinals.
5556            while _next_ordinal_to_read < 3 {
5557                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5558                _next_ordinal_to_read += 1;
5559                next_offset += envelope_size;
5560            }
5561
5562            let next_out_of_line = decoder.next_out_of_line();
5563            let handles_before = decoder.remaining_handles();
5564            if let Some((inlined, num_bytes, num_handles)) =
5565                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5566            {
5567                let member_inline_size =
5568                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5569                if inlined != (member_inline_size <= 4) {
5570                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5571                }
5572                let inner_offset;
5573                let mut inner_depth = depth.clone();
5574                if inlined {
5575                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5576                    inner_offset = next_offset;
5577                } else {
5578                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5579                    inner_depth.increment()?;
5580                }
5581                let val_ref = self.is_main_frame.get_or_insert_with(|| fidl::new_empty!(bool, D));
5582                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5583                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5584                {
5585                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5586                }
5587                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5588                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5589                }
5590            }
5591
5592            next_offset += envelope_size;
5593            _next_ordinal_to_read += 1;
5594            if next_offset >= end_offset {
5595                return Ok(());
5596            }
5597
5598            // Decode unknown envelopes for gaps in ordinals.
5599            while _next_ordinal_to_read < 4 {
5600                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5601                _next_ordinal_to_read += 1;
5602                next_offset += envelope_size;
5603            }
5604
5605            let next_out_of_line = decoder.next_out_of_line();
5606            let handles_before = decoder.remaining_handles();
5607            if let Some((inlined, num_bytes, num_handles)) =
5608                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5609            {
5610                let member_inline_size =
5611                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5612                if inlined != (member_inline_size <= 4) {
5613                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5614                }
5615                let inner_offset;
5616                let mut inner_depth = depth.clone();
5617                if inlined {
5618                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5619                    inner_offset = next_offset;
5620                } else {
5621                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5622                    inner_depth.increment()?;
5623                }
5624                let val_ref =
5625                    self.is_same_document.get_or_insert_with(|| fidl::new_empty!(bool, D));
5626                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5627                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5628                {
5629                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5630                }
5631                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5632                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5633                }
5634            }
5635
5636            next_offset += envelope_size;
5637            _next_ordinal_to_read += 1;
5638            if next_offset >= end_offset {
5639                return Ok(());
5640            }
5641
5642            // Decode unknown envelopes for gaps in ordinals.
5643            while _next_ordinal_to_read < 5 {
5644                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5645                _next_ordinal_to_read += 1;
5646                next_offset += envelope_size;
5647            }
5648
5649            let next_out_of_line = decoder.next_out_of_line();
5650            let handles_before = decoder.remaining_handles();
5651            if let Some((inlined, num_bytes, num_handles)) =
5652                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5653            {
5654                let member_inline_size =
5655                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5656                if inlined != (member_inline_size <= 4) {
5657                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5658                }
5659                let inner_offset;
5660                let mut inner_depth = depth.clone();
5661                if inlined {
5662                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5663                    inner_offset = next_offset;
5664                } else {
5665                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5666                    inner_depth.increment()?;
5667                }
5668                let val_ref = self.is_http_post.get_or_insert_with(|| fidl::new_empty!(bool, D));
5669                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5670                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5671                {
5672                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5673                }
5674                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5675                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5676                }
5677            }
5678
5679            next_offset += envelope_size;
5680            _next_ordinal_to_read += 1;
5681            if next_offset >= end_offset {
5682                return Ok(());
5683            }
5684
5685            // Decode unknown envelopes for gaps in ordinals.
5686            while _next_ordinal_to_read < 6 {
5687                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5688                _next_ordinal_to_read += 1;
5689                next_offset += envelope_size;
5690            }
5691
5692            let next_out_of_line = decoder.next_out_of_line();
5693            let handles_before = decoder.remaining_handles();
5694            if let Some((inlined, num_bytes, num_handles)) =
5695                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5696            {
5697                let member_inline_size = <fidl::encoding::BoundedString<65536> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5698                if inlined != (member_inline_size <= 4) {
5699                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5700                }
5701                let inner_offset;
5702                let mut inner_depth = depth.clone();
5703                if inlined {
5704                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5705                    inner_offset = next_offset;
5706                } else {
5707                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5708                    inner_depth.increment()?;
5709                }
5710                let val_ref = self.url.get_or_insert_with(|| {
5711                    fidl::new_empty!(fidl::encoding::BoundedString<65536>, D)
5712                });
5713                fidl::decode!(
5714                    fidl::encoding::BoundedString<65536>,
5715                    D,
5716                    val_ref,
5717                    decoder,
5718                    inner_offset,
5719                    inner_depth
5720                )?;
5721                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5722                {
5723                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5724                }
5725                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5726                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5727                }
5728            }
5729
5730            next_offset += envelope_size;
5731            _next_ordinal_to_read += 1;
5732            if next_offset >= end_offset {
5733                return Ok(());
5734            }
5735
5736            // Decode unknown envelopes for gaps in ordinals.
5737            while _next_ordinal_to_read < 7 {
5738                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5739                _next_ordinal_to_read += 1;
5740                next_offset += envelope_size;
5741            }
5742
5743            let next_out_of_line = decoder.next_out_of_line();
5744            let handles_before = decoder.remaining_handles();
5745            if let Some((inlined, num_bytes, num_handles)) =
5746                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5747            {
5748                let member_inline_size =
5749                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5750                if inlined != (member_inline_size <= 4) {
5751                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5752                }
5753                let inner_offset;
5754                let mut inner_depth = depth.clone();
5755                if inlined {
5756                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5757                    inner_offset = next_offset;
5758                } else {
5759                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5760                    inner_depth.increment()?;
5761                }
5762                let val_ref = self.has_gesture.get_or_insert_with(|| fidl::new_empty!(bool, D));
5763                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5764                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5765                {
5766                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5767                }
5768                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5769                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5770                }
5771            }
5772
5773            next_offset += envelope_size;
5774            _next_ordinal_to_read += 1;
5775            if next_offset >= end_offset {
5776                return Ok(());
5777            }
5778
5779            // Decode unknown envelopes for gaps in ordinals.
5780            while _next_ordinal_to_read < 8 {
5781                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5782                _next_ordinal_to_read += 1;
5783                next_offset += envelope_size;
5784            }
5785
5786            let next_out_of_line = decoder.next_out_of_line();
5787            let handles_before = decoder.remaining_handles();
5788            if let Some((inlined, num_bytes, num_handles)) =
5789                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5790            {
5791                let member_inline_size =
5792                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5793                if inlined != (member_inline_size <= 4) {
5794                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5795                }
5796                let inner_offset;
5797                let mut inner_depth = depth.clone();
5798                if inlined {
5799                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5800                    inner_offset = next_offset;
5801                } else {
5802                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5803                    inner_depth.increment()?;
5804                }
5805                let val_ref =
5806                    self.was_server_redirect.get_or_insert_with(|| fidl::new_empty!(bool, D));
5807                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5808                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5809                {
5810                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5811                }
5812                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5813                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5814                }
5815            }
5816
5817            next_offset += envelope_size;
5818
5819            // Decode the remaining unknown envelopes.
5820            while next_offset < end_offset {
5821                _next_ordinal_to_read += 1;
5822                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5823                next_offset += envelope_size;
5824            }
5825
5826            Ok(())
5827        }
5828    }
5829
5830    impl UrlRequestRewriteAddHeaders {
5831        #[inline(always)]
5832        fn max_ordinal_present(&self) -> u64 {
5833            if let Some(_) = self.headers {
5834                return 1;
5835            }
5836            0
5837        }
5838    }
5839
5840    impl fidl::encoding::ValueTypeMarker for UrlRequestRewriteAddHeaders {
5841        type Borrowed<'a> = &'a Self;
5842        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5843            value
5844        }
5845    }
5846
5847    unsafe impl fidl::encoding::TypeMarker for UrlRequestRewriteAddHeaders {
5848        type Owned = Self;
5849
5850        #[inline(always)]
5851        fn inline_align(_context: fidl::encoding::Context) -> usize {
5852            8
5853        }
5854
5855        #[inline(always)]
5856        fn inline_size(_context: fidl::encoding::Context) -> usize {
5857            16
5858        }
5859    }
5860
5861    unsafe impl<D: fidl::encoding::ResourceDialect>
5862        fidl::encoding::Encode<UrlRequestRewriteAddHeaders, D> for &UrlRequestRewriteAddHeaders
5863    {
5864        unsafe fn encode(
5865            self,
5866            encoder: &mut fidl::encoding::Encoder<'_, D>,
5867            offset: usize,
5868            mut depth: fidl::encoding::Depth,
5869        ) -> fidl::Result<()> {
5870            encoder.debug_check_bounds::<UrlRequestRewriteAddHeaders>(offset);
5871            // Vector header
5872            let max_ordinal: u64 = self.max_ordinal_present();
5873            encoder.write_num(max_ordinal, offset);
5874            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5875            // Calling encoder.out_of_line_offset(0) is not allowed.
5876            if max_ordinal == 0 {
5877                return Ok(());
5878            }
5879            depth.increment()?;
5880            let envelope_size = 8;
5881            let bytes_len = max_ordinal as usize * envelope_size;
5882            #[allow(unused_variables)]
5883            let offset = encoder.out_of_line_offset(bytes_len);
5884            let mut _prev_end_offset: usize = 0;
5885            if 1 > max_ordinal {
5886                return Ok(());
5887            }
5888
5889            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5890            // are envelope_size bytes.
5891            let cur_offset: usize = (1 - 1) * envelope_size;
5892
5893            // Zero reserved fields.
5894            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5895
5896            // Safety:
5897            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5898            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5899            //   envelope_size bytes, there is always sufficient room.
5900            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_net_http__common::Header, 4096>, D>(
5901            self.headers.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_net_http__common::Header, 4096> as fidl::encoding::ValueTypeMarker>::borrow),
5902            encoder, offset + cur_offset, depth
5903        )?;
5904
5905            _prev_end_offset = cur_offset + envelope_size;
5906
5907            Ok(())
5908        }
5909    }
5910
5911    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5912        for UrlRequestRewriteAddHeaders
5913    {
5914        #[inline(always)]
5915        fn new_empty() -> Self {
5916            Self::default()
5917        }
5918
5919        unsafe fn decode(
5920            &mut self,
5921            decoder: &mut fidl::encoding::Decoder<'_, D>,
5922            offset: usize,
5923            mut depth: fidl::encoding::Depth,
5924        ) -> fidl::Result<()> {
5925            decoder.debug_check_bounds::<Self>(offset);
5926            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5927                None => return Err(fidl::Error::NotNullable),
5928                Some(len) => len,
5929            };
5930            // Calling decoder.out_of_line_offset(0) is not allowed.
5931            if len == 0 {
5932                return Ok(());
5933            };
5934            depth.increment()?;
5935            let envelope_size = 8;
5936            let bytes_len = len * envelope_size;
5937            let offset = decoder.out_of_line_offset(bytes_len)?;
5938            // Decode the envelope for each type.
5939            let mut _next_ordinal_to_read = 0;
5940            let mut next_offset = offset;
5941            let end_offset = offset + bytes_len;
5942            _next_ordinal_to_read += 1;
5943            if next_offset >= end_offset {
5944                return Ok(());
5945            }
5946
5947            // Decode unknown envelopes for gaps in ordinals.
5948            while _next_ordinal_to_read < 1 {
5949                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5950                _next_ordinal_to_read += 1;
5951                next_offset += envelope_size;
5952            }
5953
5954            let next_out_of_line = decoder.next_out_of_line();
5955            let handles_before = decoder.remaining_handles();
5956            if let Some((inlined, num_bytes, num_handles)) =
5957                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5958            {
5959                let member_inline_size = <fidl::encoding::Vector<
5960                    fidl_fuchsia_net_http__common::Header,
5961                    4096,
5962                > as fidl::encoding::TypeMarker>::inline_size(
5963                    decoder.context
5964                );
5965                if inlined != (member_inline_size <= 4) {
5966                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5967                }
5968                let inner_offset;
5969                let mut inner_depth = depth.clone();
5970                if inlined {
5971                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5972                    inner_offset = next_offset;
5973                } else {
5974                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5975                    inner_depth.increment()?;
5976                }
5977                let val_ref =
5978                self.headers.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net_http__common::Header, 4096>, D));
5979                fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net_http__common::Header, 4096>, D, val_ref, decoder, inner_offset, inner_depth)?;
5980                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5981                {
5982                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5983                }
5984                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5985                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5986                }
5987            }
5988
5989            next_offset += envelope_size;
5990
5991            // Decode the remaining unknown envelopes.
5992            while next_offset < end_offset {
5993                _next_ordinal_to_read += 1;
5994                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5995                next_offset += envelope_size;
5996            }
5997
5998            Ok(())
5999        }
6000    }
6001
6002    impl UrlRequestRewriteAppendToQuery {
6003        #[inline(always)]
6004        fn max_ordinal_present(&self) -> u64 {
6005            if let Some(_) = self.query {
6006                return 1;
6007            }
6008            0
6009        }
6010    }
6011
6012    impl fidl::encoding::ValueTypeMarker for UrlRequestRewriteAppendToQuery {
6013        type Borrowed<'a> = &'a Self;
6014        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6015            value
6016        }
6017    }
6018
6019    unsafe impl fidl::encoding::TypeMarker for UrlRequestRewriteAppendToQuery {
6020        type Owned = Self;
6021
6022        #[inline(always)]
6023        fn inline_align(_context: fidl::encoding::Context) -> usize {
6024            8
6025        }
6026
6027        #[inline(always)]
6028        fn inline_size(_context: fidl::encoding::Context) -> usize {
6029            16
6030        }
6031    }
6032
6033    unsafe impl<D: fidl::encoding::ResourceDialect>
6034        fidl::encoding::Encode<UrlRequestRewriteAppendToQuery, D>
6035        for &UrlRequestRewriteAppendToQuery
6036    {
6037        unsafe fn encode(
6038            self,
6039            encoder: &mut fidl::encoding::Encoder<'_, D>,
6040            offset: usize,
6041            mut depth: fidl::encoding::Depth,
6042        ) -> fidl::Result<()> {
6043            encoder.debug_check_bounds::<UrlRequestRewriteAppendToQuery>(offset);
6044            // Vector header
6045            let max_ordinal: u64 = self.max_ordinal_present();
6046            encoder.write_num(max_ordinal, offset);
6047            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6048            // Calling encoder.out_of_line_offset(0) is not allowed.
6049            if max_ordinal == 0 {
6050                return Ok(());
6051            }
6052            depth.increment()?;
6053            let envelope_size = 8;
6054            let bytes_len = max_ordinal as usize * envelope_size;
6055            #[allow(unused_variables)]
6056            let offset = encoder.out_of_line_offset(bytes_len);
6057            let mut _prev_end_offset: usize = 0;
6058            if 1 > max_ordinal {
6059                return Ok(());
6060            }
6061
6062            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6063            // are envelope_size bytes.
6064            let cur_offset: usize = (1 - 1) * envelope_size;
6065
6066            // Zero reserved fields.
6067            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6068
6069            // Safety:
6070            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6071            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6072            //   envelope_size bytes, there is always sufficient room.
6073            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<65536>, D>(
6074            self.query.as_ref().map(<fidl::encoding::BoundedString<65536> as fidl::encoding::ValueTypeMarker>::borrow),
6075            encoder, offset + cur_offset, depth
6076        )?;
6077
6078            _prev_end_offset = cur_offset + envelope_size;
6079
6080            Ok(())
6081        }
6082    }
6083
6084    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6085        for UrlRequestRewriteAppendToQuery
6086    {
6087        #[inline(always)]
6088        fn new_empty() -> Self {
6089            Self::default()
6090        }
6091
6092        unsafe fn decode(
6093            &mut self,
6094            decoder: &mut fidl::encoding::Decoder<'_, D>,
6095            offset: usize,
6096            mut depth: fidl::encoding::Depth,
6097        ) -> fidl::Result<()> {
6098            decoder.debug_check_bounds::<Self>(offset);
6099            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6100                None => return Err(fidl::Error::NotNullable),
6101                Some(len) => len,
6102            };
6103            // Calling decoder.out_of_line_offset(0) is not allowed.
6104            if len == 0 {
6105                return Ok(());
6106            };
6107            depth.increment()?;
6108            let envelope_size = 8;
6109            let bytes_len = len * envelope_size;
6110            let offset = decoder.out_of_line_offset(bytes_len)?;
6111            // Decode the envelope for each type.
6112            let mut _next_ordinal_to_read = 0;
6113            let mut next_offset = offset;
6114            let end_offset = offset + bytes_len;
6115            _next_ordinal_to_read += 1;
6116            if next_offset >= end_offset {
6117                return Ok(());
6118            }
6119
6120            // Decode unknown envelopes for gaps in ordinals.
6121            while _next_ordinal_to_read < 1 {
6122                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6123                _next_ordinal_to_read += 1;
6124                next_offset += envelope_size;
6125            }
6126
6127            let next_out_of_line = decoder.next_out_of_line();
6128            let handles_before = decoder.remaining_handles();
6129            if let Some((inlined, num_bytes, num_handles)) =
6130                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6131            {
6132                let member_inline_size = <fidl::encoding::BoundedString<65536> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6133                if inlined != (member_inline_size <= 4) {
6134                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6135                }
6136                let inner_offset;
6137                let mut inner_depth = depth.clone();
6138                if inlined {
6139                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6140                    inner_offset = next_offset;
6141                } else {
6142                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6143                    inner_depth.increment()?;
6144                }
6145                let val_ref = self.query.get_or_insert_with(|| {
6146                    fidl::new_empty!(fidl::encoding::BoundedString<65536>, D)
6147                });
6148                fidl::decode!(
6149                    fidl::encoding::BoundedString<65536>,
6150                    D,
6151                    val_ref,
6152                    decoder,
6153                    inner_offset,
6154                    inner_depth
6155                )?;
6156                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6157                {
6158                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6159                }
6160                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6161                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6162                }
6163            }
6164
6165            next_offset += envelope_size;
6166
6167            // Decode the remaining unknown envelopes.
6168            while next_offset < end_offset {
6169                _next_ordinal_to_read += 1;
6170                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6171                next_offset += envelope_size;
6172            }
6173
6174            Ok(())
6175        }
6176    }
6177
6178    impl UrlRequestRewriteRemoveHeader {
6179        #[inline(always)]
6180        fn max_ordinal_present(&self) -> u64 {
6181            if let Some(_) = self.header_name {
6182                return 2;
6183            }
6184            if let Some(_) = self.query_pattern {
6185                return 1;
6186            }
6187            0
6188        }
6189    }
6190
6191    impl fidl::encoding::ValueTypeMarker for UrlRequestRewriteRemoveHeader {
6192        type Borrowed<'a> = &'a Self;
6193        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6194            value
6195        }
6196    }
6197
6198    unsafe impl fidl::encoding::TypeMarker for UrlRequestRewriteRemoveHeader {
6199        type Owned = Self;
6200
6201        #[inline(always)]
6202        fn inline_align(_context: fidl::encoding::Context) -> usize {
6203            8
6204        }
6205
6206        #[inline(always)]
6207        fn inline_size(_context: fidl::encoding::Context) -> usize {
6208            16
6209        }
6210    }
6211
6212    unsafe impl<D: fidl::encoding::ResourceDialect>
6213        fidl::encoding::Encode<UrlRequestRewriteRemoveHeader, D>
6214        for &UrlRequestRewriteRemoveHeader
6215    {
6216        unsafe fn encode(
6217            self,
6218            encoder: &mut fidl::encoding::Encoder<'_, D>,
6219            offset: usize,
6220            mut depth: fidl::encoding::Depth,
6221        ) -> fidl::Result<()> {
6222            encoder.debug_check_bounds::<UrlRequestRewriteRemoveHeader>(offset);
6223            // Vector header
6224            let max_ordinal: u64 = self.max_ordinal_present();
6225            encoder.write_num(max_ordinal, offset);
6226            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6227            // Calling encoder.out_of_line_offset(0) is not allowed.
6228            if max_ordinal == 0 {
6229                return Ok(());
6230            }
6231            depth.increment()?;
6232            let envelope_size = 8;
6233            let bytes_len = max_ordinal as usize * envelope_size;
6234            #[allow(unused_variables)]
6235            let offset = encoder.out_of_line_offset(bytes_len);
6236            let mut _prev_end_offset: usize = 0;
6237            if 1 > max_ordinal {
6238                return Ok(());
6239            }
6240
6241            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6242            // are envelope_size bytes.
6243            let cur_offset: usize = (1 - 1) * envelope_size;
6244
6245            // Zero reserved fields.
6246            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6247
6248            // Safety:
6249            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6250            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6251            //   envelope_size bytes, there is always sufficient room.
6252            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<65536>, D>(
6253            self.query_pattern.as_ref().map(<fidl::encoding::BoundedString<65536> as fidl::encoding::ValueTypeMarker>::borrow),
6254            encoder, offset + cur_offset, depth
6255        )?;
6256
6257            _prev_end_offset = cur_offset + envelope_size;
6258            if 2 > max_ordinal {
6259                return Ok(());
6260            }
6261
6262            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6263            // are envelope_size bytes.
6264            let cur_offset: usize = (2 - 1) * envelope_size;
6265
6266            // Zero reserved fields.
6267            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6268
6269            // Safety:
6270            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6271            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6272            //   envelope_size bytes, there is always sufficient room.
6273            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
6274            self.header_name.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
6275            encoder, offset + cur_offset, depth
6276        )?;
6277
6278            _prev_end_offset = cur_offset + envelope_size;
6279
6280            Ok(())
6281        }
6282    }
6283
6284    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6285        for UrlRequestRewriteRemoveHeader
6286    {
6287        #[inline(always)]
6288        fn new_empty() -> Self {
6289            Self::default()
6290        }
6291
6292        unsafe fn decode(
6293            &mut self,
6294            decoder: &mut fidl::encoding::Decoder<'_, D>,
6295            offset: usize,
6296            mut depth: fidl::encoding::Depth,
6297        ) -> fidl::Result<()> {
6298            decoder.debug_check_bounds::<Self>(offset);
6299            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6300                None => return Err(fidl::Error::NotNullable),
6301                Some(len) => len,
6302            };
6303            // Calling decoder.out_of_line_offset(0) is not allowed.
6304            if len == 0 {
6305                return Ok(());
6306            };
6307            depth.increment()?;
6308            let envelope_size = 8;
6309            let bytes_len = len * envelope_size;
6310            let offset = decoder.out_of_line_offset(bytes_len)?;
6311            // Decode the envelope for each type.
6312            let mut _next_ordinal_to_read = 0;
6313            let mut next_offset = offset;
6314            let end_offset = offset + bytes_len;
6315            _next_ordinal_to_read += 1;
6316            if next_offset >= end_offset {
6317                return Ok(());
6318            }
6319
6320            // Decode unknown envelopes for gaps in ordinals.
6321            while _next_ordinal_to_read < 1 {
6322                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6323                _next_ordinal_to_read += 1;
6324                next_offset += envelope_size;
6325            }
6326
6327            let next_out_of_line = decoder.next_out_of_line();
6328            let handles_before = decoder.remaining_handles();
6329            if let Some((inlined, num_bytes, num_handles)) =
6330                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6331            {
6332                let member_inline_size = <fidl::encoding::BoundedString<65536> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6333                if inlined != (member_inline_size <= 4) {
6334                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6335                }
6336                let inner_offset;
6337                let mut inner_depth = depth.clone();
6338                if inlined {
6339                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6340                    inner_offset = next_offset;
6341                } else {
6342                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6343                    inner_depth.increment()?;
6344                }
6345                let val_ref = self.query_pattern.get_or_insert_with(|| {
6346                    fidl::new_empty!(fidl::encoding::BoundedString<65536>, D)
6347                });
6348                fidl::decode!(
6349                    fidl::encoding::BoundedString<65536>,
6350                    D,
6351                    val_ref,
6352                    decoder,
6353                    inner_offset,
6354                    inner_depth
6355                )?;
6356                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6357                {
6358                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6359                }
6360                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6361                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6362                }
6363            }
6364
6365            next_offset += envelope_size;
6366            _next_ordinal_to_read += 1;
6367            if next_offset >= end_offset {
6368                return Ok(());
6369            }
6370
6371            // Decode unknown envelopes for gaps in ordinals.
6372            while _next_ordinal_to_read < 2 {
6373                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6374                _next_ordinal_to_read += 1;
6375                next_offset += envelope_size;
6376            }
6377
6378            let next_out_of_line = decoder.next_out_of_line();
6379            let handles_before = decoder.remaining_handles();
6380            if let Some((inlined, num_bytes, num_handles)) =
6381                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6382            {
6383                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6384                if inlined != (member_inline_size <= 4) {
6385                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6386                }
6387                let inner_offset;
6388                let mut inner_depth = depth.clone();
6389                if inlined {
6390                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6391                    inner_offset = next_offset;
6392                } else {
6393                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6394                    inner_depth.increment()?;
6395                }
6396                let val_ref = self.header_name.get_or_insert_with(|| {
6397                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
6398                });
6399                fidl::decode!(
6400                    fidl::encoding::UnboundedVector<u8>,
6401                    D,
6402                    val_ref,
6403                    decoder,
6404                    inner_offset,
6405                    inner_depth
6406                )?;
6407                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6408                {
6409                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6410                }
6411                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6412                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6413                }
6414            }
6415
6416            next_offset += envelope_size;
6417
6418            // Decode the remaining unknown envelopes.
6419            while next_offset < end_offset {
6420                _next_ordinal_to_read += 1;
6421                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6422                next_offset += envelope_size;
6423            }
6424
6425            Ok(())
6426        }
6427    }
6428
6429    impl UrlRequestRewriteReplaceUrl {
6430        #[inline(always)]
6431        fn max_ordinal_present(&self) -> u64 {
6432            if let Some(_) = self.new_url {
6433                return 2;
6434            }
6435            if let Some(_) = self.url_ends_with {
6436                return 1;
6437            }
6438            0
6439        }
6440    }
6441
6442    impl fidl::encoding::ValueTypeMarker for UrlRequestRewriteReplaceUrl {
6443        type Borrowed<'a> = &'a Self;
6444        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6445            value
6446        }
6447    }
6448
6449    unsafe impl fidl::encoding::TypeMarker for UrlRequestRewriteReplaceUrl {
6450        type Owned = Self;
6451
6452        #[inline(always)]
6453        fn inline_align(_context: fidl::encoding::Context) -> usize {
6454            8
6455        }
6456
6457        #[inline(always)]
6458        fn inline_size(_context: fidl::encoding::Context) -> usize {
6459            16
6460        }
6461    }
6462
6463    unsafe impl<D: fidl::encoding::ResourceDialect>
6464        fidl::encoding::Encode<UrlRequestRewriteReplaceUrl, D> for &UrlRequestRewriteReplaceUrl
6465    {
6466        unsafe fn encode(
6467            self,
6468            encoder: &mut fidl::encoding::Encoder<'_, D>,
6469            offset: usize,
6470            mut depth: fidl::encoding::Depth,
6471        ) -> fidl::Result<()> {
6472            encoder.debug_check_bounds::<UrlRequestRewriteReplaceUrl>(offset);
6473            // Vector header
6474            let max_ordinal: u64 = self.max_ordinal_present();
6475            encoder.write_num(max_ordinal, offset);
6476            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6477            // Calling encoder.out_of_line_offset(0) is not allowed.
6478            if max_ordinal == 0 {
6479                return Ok(());
6480            }
6481            depth.increment()?;
6482            let envelope_size = 8;
6483            let bytes_len = max_ordinal as usize * envelope_size;
6484            #[allow(unused_variables)]
6485            let offset = encoder.out_of_line_offset(bytes_len);
6486            let mut _prev_end_offset: usize = 0;
6487            if 1 > max_ordinal {
6488                return Ok(());
6489            }
6490
6491            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6492            // are envelope_size bytes.
6493            let cur_offset: usize = (1 - 1) * envelope_size;
6494
6495            // Zero reserved fields.
6496            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6497
6498            // Safety:
6499            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6500            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6501            //   envelope_size bytes, there is always sufficient room.
6502            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<65536>, D>(
6503            self.url_ends_with.as_ref().map(<fidl::encoding::BoundedString<65536> as fidl::encoding::ValueTypeMarker>::borrow),
6504            encoder, offset + cur_offset, depth
6505        )?;
6506
6507            _prev_end_offset = cur_offset + envelope_size;
6508            if 2 > max_ordinal {
6509                return Ok(());
6510            }
6511
6512            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6513            // are envelope_size bytes.
6514            let cur_offset: usize = (2 - 1) * envelope_size;
6515
6516            // Zero reserved fields.
6517            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6518
6519            // Safety:
6520            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6521            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6522            //   envelope_size bytes, there is always sufficient room.
6523            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<65536>, D>(
6524            self.new_url.as_ref().map(<fidl::encoding::BoundedString<65536> as fidl::encoding::ValueTypeMarker>::borrow),
6525            encoder, offset + cur_offset, depth
6526        )?;
6527
6528            _prev_end_offset = cur_offset + envelope_size;
6529
6530            Ok(())
6531        }
6532    }
6533
6534    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6535        for UrlRequestRewriteReplaceUrl
6536    {
6537        #[inline(always)]
6538        fn new_empty() -> Self {
6539            Self::default()
6540        }
6541
6542        unsafe fn decode(
6543            &mut self,
6544            decoder: &mut fidl::encoding::Decoder<'_, D>,
6545            offset: usize,
6546            mut depth: fidl::encoding::Depth,
6547        ) -> fidl::Result<()> {
6548            decoder.debug_check_bounds::<Self>(offset);
6549            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6550                None => return Err(fidl::Error::NotNullable),
6551                Some(len) => len,
6552            };
6553            // Calling decoder.out_of_line_offset(0) is not allowed.
6554            if len == 0 {
6555                return Ok(());
6556            };
6557            depth.increment()?;
6558            let envelope_size = 8;
6559            let bytes_len = len * envelope_size;
6560            let offset = decoder.out_of_line_offset(bytes_len)?;
6561            // Decode the envelope for each type.
6562            let mut _next_ordinal_to_read = 0;
6563            let mut next_offset = offset;
6564            let end_offset = offset + bytes_len;
6565            _next_ordinal_to_read += 1;
6566            if next_offset >= end_offset {
6567                return Ok(());
6568            }
6569
6570            // Decode unknown envelopes for gaps in ordinals.
6571            while _next_ordinal_to_read < 1 {
6572                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6573                _next_ordinal_to_read += 1;
6574                next_offset += envelope_size;
6575            }
6576
6577            let next_out_of_line = decoder.next_out_of_line();
6578            let handles_before = decoder.remaining_handles();
6579            if let Some((inlined, num_bytes, num_handles)) =
6580                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6581            {
6582                let member_inline_size = <fidl::encoding::BoundedString<65536> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6583                if inlined != (member_inline_size <= 4) {
6584                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6585                }
6586                let inner_offset;
6587                let mut inner_depth = depth.clone();
6588                if inlined {
6589                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6590                    inner_offset = next_offset;
6591                } else {
6592                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6593                    inner_depth.increment()?;
6594                }
6595                let val_ref = self.url_ends_with.get_or_insert_with(|| {
6596                    fidl::new_empty!(fidl::encoding::BoundedString<65536>, D)
6597                });
6598                fidl::decode!(
6599                    fidl::encoding::BoundedString<65536>,
6600                    D,
6601                    val_ref,
6602                    decoder,
6603                    inner_offset,
6604                    inner_depth
6605                )?;
6606                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6607                {
6608                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6609                }
6610                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6611                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6612                }
6613            }
6614
6615            next_offset += envelope_size;
6616            _next_ordinal_to_read += 1;
6617            if next_offset >= end_offset {
6618                return Ok(());
6619            }
6620
6621            // Decode unknown envelopes for gaps in ordinals.
6622            while _next_ordinal_to_read < 2 {
6623                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6624                _next_ordinal_to_read += 1;
6625                next_offset += envelope_size;
6626            }
6627
6628            let next_out_of_line = decoder.next_out_of_line();
6629            let handles_before = decoder.remaining_handles();
6630            if let Some((inlined, num_bytes, num_handles)) =
6631                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6632            {
6633                let member_inline_size = <fidl::encoding::BoundedString<65536> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6634                if inlined != (member_inline_size <= 4) {
6635                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6636                }
6637                let inner_offset;
6638                let mut inner_depth = depth.clone();
6639                if inlined {
6640                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6641                    inner_offset = next_offset;
6642                } else {
6643                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6644                    inner_depth.increment()?;
6645                }
6646                let val_ref = self.new_url.get_or_insert_with(|| {
6647                    fidl::new_empty!(fidl::encoding::BoundedString<65536>, D)
6648                });
6649                fidl::decode!(
6650                    fidl::encoding::BoundedString<65536>,
6651                    D,
6652                    val_ref,
6653                    decoder,
6654                    inner_offset,
6655                    inner_depth
6656                )?;
6657                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6658                {
6659                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6660                }
6661                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6662                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6663                }
6664            }
6665
6666            next_offset += envelope_size;
6667
6668            // Decode the remaining unknown envelopes.
6669            while next_offset < end_offset {
6670                _next_ordinal_to_read += 1;
6671                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6672                next_offset += envelope_size;
6673            }
6674
6675            Ok(())
6676        }
6677    }
6678
6679    impl UrlRequestRewriteRule {
6680        #[inline(always)]
6681        fn max_ordinal_present(&self) -> u64 {
6682            if let Some(_) = self.action {
6683                return 4;
6684            }
6685            if let Some(_) = self.rewrites {
6686                return 3;
6687            }
6688            if let Some(_) = self.schemes_filter {
6689                return 2;
6690            }
6691            if let Some(_) = self.hosts_filter {
6692                return 1;
6693            }
6694            0
6695        }
6696    }
6697
6698    impl fidl::encoding::ValueTypeMarker for UrlRequestRewriteRule {
6699        type Borrowed<'a> = &'a Self;
6700        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6701            value
6702        }
6703    }
6704
6705    unsafe impl fidl::encoding::TypeMarker for UrlRequestRewriteRule {
6706        type Owned = Self;
6707
6708        #[inline(always)]
6709        fn inline_align(_context: fidl::encoding::Context) -> usize {
6710            8
6711        }
6712
6713        #[inline(always)]
6714        fn inline_size(_context: fidl::encoding::Context) -> usize {
6715            16
6716        }
6717    }
6718
6719    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UrlRequestRewriteRule, D>
6720        for &UrlRequestRewriteRule
6721    {
6722        unsafe fn encode(
6723            self,
6724            encoder: &mut fidl::encoding::Encoder<'_, D>,
6725            offset: usize,
6726            mut depth: fidl::encoding::Depth,
6727        ) -> fidl::Result<()> {
6728            encoder.debug_check_bounds::<UrlRequestRewriteRule>(offset);
6729            // Vector header
6730            let max_ordinal: u64 = self.max_ordinal_present();
6731            encoder.write_num(max_ordinal, offset);
6732            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6733            // Calling encoder.out_of_line_offset(0) is not allowed.
6734            if max_ordinal == 0 {
6735                return Ok(());
6736            }
6737            depth.increment()?;
6738            let envelope_size = 8;
6739            let bytes_len = max_ordinal as usize * envelope_size;
6740            #[allow(unused_variables)]
6741            let offset = encoder.out_of_line_offset(bytes_len);
6742            let mut _prev_end_offset: usize = 0;
6743            if 1 > max_ordinal {
6744                return Ok(());
6745            }
6746
6747            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6748            // are envelope_size bytes.
6749            let cur_offset: usize = (1 - 1) * envelope_size;
6750
6751            // Zero reserved fields.
6752            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6753
6754            // Safety:
6755            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6756            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6757            //   envelope_size bytes, there is always sufficient room.
6758            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<255>, 4096>, D>(
6759            self.hosts_filter.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<255>, 4096> as fidl::encoding::ValueTypeMarker>::borrow),
6760            encoder, offset + cur_offset, depth
6761        )?;
6762
6763            _prev_end_offset = cur_offset + envelope_size;
6764            if 2 > max_ordinal {
6765                return Ok(());
6766            }
6767
6768            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6769            // are envelope_size bytes.
6770            let cur_offset: usize = (2 - 1) * envelope_size;
6771
6772            // Zero reserved fields.
6773            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6774
6775            // Safety:
6776            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6777            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6778            //   envelope_size bytes, there is always sufficient room.
6779            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<255>, 4096>, D>(
6780            self.schemes_filter.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<255>, 4096> as fidl::encoding::ValueTypeMarker>::borrow),
6781            encoder, offset + cur_offset, depth
6782        )?;
6783
6784            _prev_end_offset = cur_offset + envelope_size;
6785            if 3 > max_ordinal {
6786                return Ok(());
6787            }
6788
6789            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6790            // are envelope_size bytes.
6791            let cur_offset: usize = (3 - 1) * envelope_size;
6792
6793            // Zero reserved fields.
6794            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6795
6796            // Safety:
6797            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6798            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6799            //   envelope_size bytes, there is always sufficient room.
6800            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<UrlRequestRewrite, 4096>, D>(
6801            self.rewrites.as_ref().map(<fidl::encoding::Vector<UrlRequestRewrite, 4096> as fidl::encoding::ValueTypeMarker>::borrow),
6802            encoder, offset + cur_offset, depth
6803        )?;
6804
6805            _prev_end_offset = cur_offset + envelope_size;
6806            if 4 > max_ordinal {
6807                return Ok(());
6808            }
6809
6810            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6811            // are envelope_size bytes.
6812            let cur_offset: usize = (4 - 1) * envelope_size;
6813
6814            // Zero reserved fields.
6815            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6816
6817            // Safety:
6818            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6819            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6820            //   envelope_size bytes, there is always sufficient room.
6821            fidl::encoding::encode_in_envelope_optional::<UrlRequestAction, D>(
6822                self.action
6823                    .as_ref()
6824                    .map(<UrlRequestAction as fidl::encoding::ValueTypeMarker>::borrow),
6825                encoder,
6826                offset + cur_offset,
6827                depth,
6828            )?;
6829
6830            _prev_end_offset = cur_offset + envelope_size;
6831
6832            Ok(())
6833        }
6834    }
6835
6836    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UrlRequestRewriteRule {
6837        #[inline(always)]
6838        fn new_empty() -> Self {
6839            Self::default()
6840        }
6841
6842        unsafe fn decode(
6843            &mut self,
6844            decoder: &mut fidl::encoding::Decoder<'_, D>,
6845            offset: usize,
6846            mut depth: fidl::encoding::Depth,
6847        ) -> fidl::Result<()> {
6848            decoder.debug_check_bounds::<Self>(offset);
6849            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6850                None => return Err(fidl::Error::NotNullable),
6851                Some(len) => len,
6852            };
6853            // Calling decoder.out_of_line_offset(0) is not allowed.
6854            if len == 0 {
6855                return Ok(());
6856            };
6857            depth.increment()?;
6858            let envelope_size = 8;
6859            let bytes_len = len * envelope_size;
6860            let offset = decoder.out_of_line_offset(bytes_len)?;
6861            // Decode the envelope for each type.
6862            let mut _next_ordinal_to_read = 0;
6863            let mut next_offset = offset;
6864            let end_offset = offset + bytes_len;
6865            _next_ordinal_to_read += 1;
6866            if next_offset >= end_offset {
6867                return Ok(());
6868            }
6869
6870            // Decode unknown envelopes for gaps in ordinals.
6871            while _next_ordinal_to_read < 1 {
6872                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6873                _next_ordinal_to_read += 1;
6874                next_offset += envelope_size;
6875            }
6876
6877            let next_out_of_line = decoder.next_out_of_line();
6878            let handles_before = decoder.remaining_handles();
6879            if let Some((inlined, num_bytes, num_handles)) =
6880                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6881            {
6882                let member_inline_size = <fidl::encoding::Vector<
6883                    fidl::encoding::BoundedString<255>,
6884                    4096,
6885                > as fidl::encoding::TypeMarker>::inline_size(
6886                    decoder.context
6887                );
6888                if inlined != (member_inline_size <= 4) {
6889                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6890                }
6891                let inner_offset;
6892                let mut inner_depth = depth.clone();
6893                if inlined {
6894                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6895                    inner_offset = next_offset;
6896                } else {
6897                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6898                    inner_depth.increment()?;
6899                }
6900                let val_ref = self.hosts_filter.get_or_insert_with(|| {
6901                    fidl::new_empty!(
6902                        fidl::encoding::Vector<fidl::encoding::BoundedString<255>, 4096>,
6903                        D
6904                    )
6905                });
6906                fidl::decode!(
6907                    fidl::encoding::Vector<fidl::encoding::BoundedString<255>, 4096>,
6908                    D,
6909                    val_ref,
6910                    decoder,
6911                    inner_offset,
6912                    inner_depth
6913                )?;
6914                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6915                {
6916                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6917                }
6918                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6919                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6920                }
6921            }
6922
6923            next_offset += envelope_size;
6924            _next_ordinal_to_read += 1;
6925            if next_offset >= end_offset {
6926                return Ok(());
6927            }
6928
6929            // Decode unknown envelopes for gaps in ordinals.
6930            while _next_ordinal_to_read < 2 {
6931                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6932                _next_ordinal_to_read += 1;
6933                next_offset += envelope_size;
6934            }
6935
6936            let next_out_of_line = decoder.next_out_of_line();
6937            let handles_before = decoder.remaining_handles();
6938            if let Some((inlined, num_bytes, num_handles)) =
6939                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6940            {
6941                let member_inline_size = <fidl::encoding::Vector<
6942                    fidl::encoding::BoundedString<255>,
6943                    4096,
6944                > as fidl::encoding::TypeMarker>::inline_size(
6945                    decoder.context
6946                );
6947                if inlined != (member_inline_size <= 4) {
6948                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6949                }
6950                let inner_offset;
6951                let mut inner_depth = depth.clone();
6952                if inlined {
6953                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6954                    inner_offset = next_offset;
6955                } else {
6956                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6957                    inner_depth.increment()?;
6958                }
6959                let val_ref = self.schemes_filter.get_or_insert_with(|| {
6960                    fidl::new_empty!(
6961                        fidl::encoding::Vector<fidl::encoding::BoundedString<255>, 4096>,
6962                        D
6963                    )
6964                });
6965                fidl::decode!(
6966                    fidl::encoding::Vector<fidl::encoding::BoundedString<255>, 4096>,
6967                    D,
6968                    val_ref,
6969                    decoder,
6970                    inner_offset,
6971                    inner_depth
6972                )?;
6973                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6974                {
6975                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6976                }
6977                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6978                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6979                }
6980            }
6981
6982            next_offset += envelope_size;
6983            _next_ordinal_to_read += 1;
6984            if next_offset >= end_offset {
6985                return Ok(());
6986            }
6987
6988            // Decode unknown envelopes for gaps in ordinals.
6989            while _next_ordinal_to_read < 3 {
6990                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6991                _next_ordinal_to_read += 1;
6992                next_offset += envelope_size;
6993            }
6994
6995            let next_out_of_line = decoder.next_out_of_line();
6996            let handles_before = decoder.remaining_handles();
6997            if let Some((inlined, num_bytes, num_handles)) =
6998                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6999            {
7000                let member_inline_size = <fidl::encoding::Vector<UrlRequestRewrite, 4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7001                if inlined != (member_inline_size <= 4) {
7002                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7003                }
7004                let inner_offset;
7005                let mut inner_depth = depth.clone();
7006                if inlined {
7007                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7008                    inner_offset = next_offset;
7009                } else {
7010                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7011                    inner_depth.increment()?;
7012                }
7013                let val_ref = self.rewrites.get_or_insert_with(
7014                    || fidl::new_empty!(fidl::encoding::Vector<UrlRequestRewrite, 4096>, D),
7015                );
7016                fidl::decode!(fidl::encoding::Vector<UrlRequestRewrite, 4096>, D, val_ref, decoder, inner_offset, inner_depth)?;
7017                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7018                {
7019                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7020                }
7021                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7022                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7023                }
7024            }
7025
7026            next_offset += envelope_size;
7027            _next_ordinal_to_read += 1;
7028            if next_offset >= end_offset {
7029                return Ok(());
7030            }
7031
7032            // Decode unknown envelopes for gaps in ordinals.
7033            while _next_ordinal_to_read < 4 {
7034                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7035                _next_ordinal_to_read += 1;
7036                next_offset += envelope_size;
7037            }
7038
7039            let next_out_of_line = decoder.next_out_of_line();
7040            let handles_before = decoder.remaining_handles();
7041            if let Some((inlined, num_bytes, num_handles)) =
7042                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7043            {
7044                let member_inline_size =
7045                    <UrlRequestAction as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7046                if inlined != (member_inline_size <= 4) {
7047                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7048                }
7049                let inner_offset;
7050                let mut inner_depth = depth.clone();
7051                if inlined {
7052                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7053                    inner_offset = next_offset;
7054                } else {
7055                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7056                    inner_depth.increment()?;
7057                }
7058                let val_ref =
7059                    self.action.get_or_insert_with(|| fidl::new_empty!(UrlRequestAction, D));
7060                fidl::decode!(UrlRequestAction, D, val_ref, decoder, inner_offset, inner_depth)?;
7061                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7062                {
7063                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7064                }
7065                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7066                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7067                }
7068            }
7069
7070            next_offset += envelope_size;
7071
7072            // Decode the remaining unknown envelopes.
7073            while next_offset < end_offset {
7074                _next_ordinal_to_read += 1;
7075                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7076                next_offset += envelope_size;
7077            }
7078
7079            Ok(())
7080        }
7081    }
7082
7083    impl UrlRequestRewriteSubstituteQueryPattern {
7084        #[inline(always)]
7085        fn max_ordinal_present(&self) -> u64 {
7086            if let Some(_) = self.substitution {
7087                return 2;
7088            }
7089            if let Some(_) = self.pattern {
7090                return 1;
7091            }
7092            0
7093        }
7094    }
7095
7096    impl fidl::encoding::ValueTypeMarker for UrlRequestRewriteSubstituteQueryPattern {
7097        type Borrowed<'a> = &'a Self;
7098        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7099            value
7100        }
7101    }
7102
7103    unsafe impl fidl::encoding::TypeMarker for UrlRequestRewriteSubstituteQueryPattern {
7104        type Owned = Self;
7105
7106        #[inline(always)]
7107        fn inline_align(_context: fidl::encoding::Context) -> usize {
7108            8
7109        }
7110
7111        #[inline(always)]
7112        fn inline_size(_context: fidl::encoding::Context) -> usize {
7113            16
7114        }
7115    }
7116
7117    unsafe impl<D: fidl::encoding::ResourceDialect>
7118        fidl::encoding::Encode<UrlRequestRewriteSubstituteQueryPattern, D>
7119        for &UrlRequestRewriteSubstituteQueryPattern
7120    {
7121        unsafe fn encode(
7122            self,
7123            encoder: &mut fidl::encoding::Encoder<'_, D>,
7124            offset: usize,
7125            mut depth: fidl::encoding::Depth,
7126        ) -> fidl::Result<()> {
7127            encoder.debug_check_bounds::<UrlRequestRewriteSubstituteQueryPattern>(offset);
7128            // Vector header
7129            let max_ordinal: u64 = self.max_ordinal_present();
7130            encoder.write_num(max_ordinal, offset);
7131            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7132            // Calling encoder.out_of_line_offset(0) is not allowed.
7133            if max_ordinal == 0 {
7134                return Ok(());
7135            }
7136            depth.increment()?;
7137            let envelope_size = 8;
7138            let bytes_len = max_ordinal as usize * envelope_size;
7139            #[allow(unused_variables)]
7140            let offset = encoder.out_of_line_offset(bytes_len);
7141            let mut _prev_end_offset: usize = 0;
7142            if 1 > max_ordinal {
7143                return Ok(());
7144            }
7145
7146            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7147            // are envelope_size bytes.
7148            let cur_offset: usize = (1 - 1) * envelope_size;
7149
7150            // Zero reserved fields.
7151            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7152
7153            // Safety:
7154            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7155            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7156            //   envelope_size bytes, there is always sufficient room.
7157            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<65536>, D>(
7158            self.pattern.as_ref().map(<fidl::encoding::BoundedString<65536> as fidl::encoding::ValueTypeMarker>::borrow),
7159            encoder, offset + cur_offset, depth
7160        )?;
7161
7162            _prev_end_offset = cur_offset + envelope_size;
7163            if 2 > max_ordinal {
7164                return Ok(());
7165            }
7166
7167            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7168            // are envelope_size bytes.
7169            let cur_offset: usize = (2 - 1) * envelope_size;
7170
7171            // Zero reserved fields.
7172            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7173
7174            // Safety:
7175            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7176            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7177            //   envelope_size bytes, there is always sufficient room.
7178            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<65536>, D>(
7179            self.substitution.as_ref().map(<fidl::encoding::BoundedString<65536> as fidl::encoding::ValueTypeMarker>::borrow),
7180            encoder, offset + cur_offset, depth
7181        )?;
7182
7183            _prev_end_offset = cur_offset + envelope_size;
7184
7185            Ok(())
7186        }
7187    }
7188
7189    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7190        for UrlRequestRewriteSubstituteQueryPattern
7191    {
7192        #[inline(always)]
7193        fn new_empty() -> Self {
7194            Self::default()
7195        }
7196
7197        unsafe fn decode(
7198            &mut self,
7199            decoder: &mut fidl::encoding::Decoder<'_, D>,
7200            offset: usize,
7201            mut depth: fidl::encoding::Depth,
7202        ) -> fidl::Result<()> {
7203            decoder.debug_check_bounds::<Self>(offset);
7204            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7205                None => return Err(fidl::Error::NotNullable),
7206                Some(len) => len,
7207            };
7208            // Calling decoder.out_of_line_offset(0) is not allowed.
7209            if len == 0 {
7210                return Ok(());
7211            };
7212            depth.increment()?;
7213            let envelope_size = 8;
7214            let bytes_len = len * envelope_size;
7215            let offset = decoder.out_of_line_offset(bytes_len)?;
7216            // Decode the envelope for each type.
7217            let mut _next_ordinal_to_read = 0;
7218            let mut next_offset = offset;
7219            let end_offset = offset + bytes_len;
7220            _next_ordinal_to_read += 1;
7221            if next_offset >= end_offset {
7222                return Ok(());
7223            }
7224
7225            // Decode unknown envelopes for gaps in ordinals.
7226            while _next_ordinal_to_read < 1 {
7227                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7228                _next_ordinal_to_read += 1;
7229                next_offset += envelope_size;
7230            }
7231
7232            let next_out_of_line = decoder.next_out_of_line();
7233            let handles_before = decoder.remaining_handles();
7234            if let Some((inlined, num_bytes, num_handles)) =
7235                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7236            {
7237                let member_inline_size = <fidl::encoding::BoundedString<65536> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7238                if inlined != (member_inline_size <= 4) {
7239                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7240                }
7241                let inner_offset;
7242                let mut inner_depth = depth.clone();
7243                if inlined {
7244                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7245                    inner_offset = next_offset;
7246                } else {
7247                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7248                    inner_depth.increment()?;
7249                }
7250                let val_ref = self.pattern.get_or_insert_with(|| {
7251                    fidl::new_empty!(fidl::encoding::BoundedString<65536>, D)
7252                });
7253                fidl::decode!(
7254                    fidl::encoding::BoundedString<65536>,
7255                    D,
7256                    val_ref,
7257                    decoder,
7258                    inner_offset,
7259                    inner_depth
7260                )?;
7261                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7262                {
7263                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7264                }
7265                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7266                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7267                }
7268            }
7269
7270            next_offset += envelope_size;
7271            _next_ordinal_to_read += 1;
7272            if next_offset >= end_offset {
7273                return Ok(());
7274            }
7275
7276            // Decode unknown envelopes for gaps in ordinals.
7277            while _next_ordinal_to_read < 2 {
7278                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7279                _next_ordinal_to_read += 1;
7280                next_offset += envelope_size;
7281            }
7282
7283            let next_out_of_line = decoder.next_out_of_line();
7284            let handles_before = decoder.remaining_handles();
7285            if let Some((inlined, num_bytes, num_handles)) =
7286                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7287            {
7288                let member_inline_size = <fidl::encoding::BoundedString<65536> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7289                if inlined != (member_inline_size <= 4) {
7290                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7291                }
7292                let inner_offset;
7293                let mut inner_depth = depth.clone();
7294                if inlined {
7295                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7296                    inner_offset = next_offset;
7297                } else {
7298                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7299                    inner_depth.increment()?;
7300                }
7301                let val_ref = self.substitution.get_or_insert_with(|| {
7302                    fidl::new_empty!(fidl::encoding::BoundedString<65536>, D)
7303                });
7304                fidl::decode!(
7305                    fidl::encoding::BoundedString<65536>,
7306                    D,
7307                    val_ref,
7308                    decoder,
7309                    inner_offset,
7310                    inner_depth
7311                )?;
7312                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7313                {
7314                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7315                }
7316                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7317                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7318                }
7319            }
7320
7321            next_offset += envelope_size;
7322
7323            // Decode the remaining unknown envelopes.
7324            while next_offset < end_offset {
7325                _next_ordinal_to_read += 1;
7326                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7327                next_offset += envelope_size;
7328            }
7329
7330            Ok(())
7331        }
7332    }
7333
7334    impl fidl::encoding::ValueTypeMarker for UrlRequestRewrite {
7335        type Borrowed<'a> = &'a Self;
7336        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7337            value
7338        }
7339    }
7340
7341    unsafe impl fidl::encoding::TypeMarker for UrlRequestRewrite {
7342        type Owned = Self;
7343
7344        #[inline(always)]
7345        fn inline_align(_context: fidl::encoding::Context) -> usize {
7346            8
7347        }
7348
7349        #[inline(always)]
7350        fn inline_size(_context: fidl::encoding::Context) -> usize {
7351            16
7352        }
7353    }
7354
7355    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UrlRequestRewrite, D>
7356        for &UrlRequestRewrite
7357    {
7358        #[inline]
7359        unsafe fn encode(
7360            self,
7361            encoder: &mut fidl::encoding::Encoder<'_, D>,
7362            offset: usize,
7363            _depth: fidl::encoding::Depth,
7364        ) -> fidl::Result<()> {
7365            encoder.debug_check_bounds::<UrlRequestRewrite>(offset);
7366            encoder.write_num::<u64>(self.ordinal(), offset);
7367            match self {
7368            UrlRequestRewrite::AddHeaders(ref val) => {
7369                fidl::encoding::encode_in_envelope::<UrlRequestRewriteAddHeaders, D>(
7370                    <UrlRequestRewriteAddHeaders as fidl::encoding::ValueTypeMarker>::borrow(val),
7371                    encoder, offset + 8, _depth
7372                )
7373            }
7374            UrlRequestRewrite::RemoveHeader(ref val) => {
7375                fidl::encoding::encode_in_envelope::<UrlRequestRewriteRemoveHeader, D>(
7376                    <UrlRequestRewriteRemoveHeader as fidl::encoding::ValueTypeMarker>::borrow(val),
7377                    encoder, offset + 8, _depth
7378                )
7379            }
7380            UrlRequestRewrite::SubstituteQueryPattern(ref val) => {
7381                fidl::encoding::encode_in_envelope::<UrlRequestRewriteSubstituteQueryPattern, D>(
7382                    <UrlRequestRewriteSubstituteQueryPattern as fidl::encoding::ValueTypeMarker>::borrow(val),
7383                    encoder, offset + 8, _depth
7384                )
7385            }
7386            UrlRequestRewrite::ReplaceUrl(ref val) => {
7387                fidl::encoding::encode_in_envelope::<UrlRequestRewriteReplaceUrl, D>(
7388                    <UrlRequestRewriteReplaceUrl as fidl::encoding::ValueTypeMarker>::borrow(val),
7389                    encoder, offset + 8, _depth
7390                )
7391            }
7392            UrlRequestRewrite::AppendToQuery(ref val) => {
7393                fidl::encoding::encode_in_envelope::<UrlRequestRewriteAppendToQuery, D>(
7394                    <UrlRequestRewriteAppendToQuery as fidl::encoding::ValueTypeMarker>::borrow(val),
7395                    encoder, offset + 8, _depth
7396                )
7397            }
7398            UrlRequestRewrite::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
7399        }
7400        }
7401    }
7402
7403    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UrlRequestRewrite {
7404        #[inline(always)]
7405        fn new_empty() -> Self {
7406            Self::__SourceBreaking { unknown_ordinal: 0 }
7407        }
7408
7409        #[inline]
7410        unsafe fn decode(
7411            &mut self,
7412            decoder: &mut fidl::encoding::Decoder<'_, D>,
7413            offset: usize,
7414            mut depth: fidl::encoding::Depth,
7415        ) -> fidl::Result<()> {
7416            decoder.debug_check_bounds::<Self>(offset);
7417            #[allow(unused_variables)]
7418            let next_out_of_line = decoder.next_out_of_line();
7419            let handles_before = decoder.remaining_handles();
7420            let (ordinal, inlined, num_bytes, num_handles) =
7421                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
7422
7423            let member_inline_size = match ordinal {
7424            1 => <UrlRequestRewriteAddHeaders as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7425            2 => <UrlRequestRewriteRemoveHeader as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7426            3 => <UrlRequestRewriteSubstituteQueryPattern as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7427            4 => <UrlRequestRewriteReplaceUrl as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7428            5 => <UrlRequestRewriteAppendToQuery as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7429            0 => return Err(fidl::Error::UnknownUnionTag),
7430            _ => num_bytes as usize,
7431        };
7432
7433            if inlined != (member_inline_size <= 4) {
7434                return Err(fidl::Error::InvalidInlineBitInEnvelope);
7435            }
7436            let _inner_offset;
7437            if inlined {
7438                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
7439                _inner_offset = offset + 8;
7440            } else {
7441                depth.increment()?;
7442                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7443            }
7444            match ordinal {
7445                1 => {
7446                    #[allow(irrefutable_let_patterns)]
7447                    if let UrlRequestRewrite::AddHeaders(_) = self {
7448                        // Do nothing, read the value into the object
7449                    } else {
7450                        // Initialize `self` to the right variant
7451                        *self = UrlRequestRewrite::AddHeaders(fidl::new_empty!(
7452                            UrlRequestRewriteAddHeaders,
7453                            D
7454                        ));
7455                    }
7456                    #[allow(irrefutable_let_patterns)]
7457                    if let UrlRequestRewrite::AddHeaders(ref mut val) = self {
7458                        fidl::decode!(
7459                            UrlRequestRewriteAddHeaders,
7460                            D,
7461                            val,
7462                            decoder,
7463                            _inner_offset,
7464                            depth
7465                        )?;
7466                    } else {
7467                        unreachable!()
7468                    }
7469                }
7470                2 => {
7471                    #[allow(irrefutable_let_patterns)]
7472                    if let UrlRequestRewrite::RemoveHeader(_) = self {
7473                        // Do nothing, read the value into the object
7474                    } else {
7475                        // Initialize `self` to the right variant
7476                        *self = UrlRequestRewrite::RemoveHeader(fidl::new_empty!(
7477                            UrlRequestRewriteRemoveHeader,
7478                            D
7479                        ));
7480                    }
7481                    #[allow(irrefutable_let_patterns)]
7482                    if let UrlRequestRewrite::RemoveHeader(ref mut val) = self {
7483                        fidl::decode!(
7484                            UrlRequestRewriteRemoveHeader,
7485                            D,
7486                            val,
7487                            decoder,
7488                            _inner_offset,
7489                            depth
7490                        )?;
7491                    } else {
7492                        unreachable!()
7493                    }
7494                }
7495                3 => {
7496                    #[allow(irrefutable_let_patterns)]
7497                    if let UrlRequestRewrite::SubstituteQueryPattern(_) = self {
7498                        // Do nothing, read the value into the object
7499                    } else {
7500                        // Initialize `self` to the right variant
7501                        *self = UrlRequestRewrite::SubstituteQueryPattern(fidl::new_empty!(
7502                            UrlRequestRewriteSubstituteQueryPattern,
7503                            D
7504                        ));
7505                    }
7506                    #[allow(irrefutable_let_patterns)]
7507                    if let UrlRequestRewrite::SubstituteQueryPattern(ref mut val) = self {
7508                        fidl::decode!(
7509                            UrlRequestRewriteSubstituteQueryPattern,
7510                            D,
7511                            val,
7512                            decoder,
7513                            _inner_offset,
7514                            depth
7515                        )?;
7516                    } else {
7517                        unreachable!()
7518                    }
7519                }
7520                4 => {
7521                    #[allow(irrefutable_let_patterns)]
7522                    if let UrlRequestRewrite::ReplaceUrl(_) = self {
7523                        // Do nothing, read the value into the object
7524                    } else {
7525                        // Initialize `self` to the right variant
7526                        *self = UrlRequestRewrite::ReplaceUrl(fidl::new_empty!(
7527                            UrlRequestRewriteReplaceUrl,
7528                            D
7529                        ));
7530                    }
7531                    #[allow(irrefutable_let_patterns)]
7532                    if let UrlRequestRewrite::ReplaceUrl(ref mut val) = self {
7533                        fidl::decode!(
7534                            UrlRequestRewriteReplaceUrl,
7535                            D,
7536                            val,
7537                            decoder,
7538                            _inner_offset,
7539                            depth
7540                        )?;
7541                    } else {
7542                        unreachable!()
7543                    }
7544                }
7545                5 => {
7546                    #[allow(irrefutable_let_patterns)]
7547                    if let UrlRequestRewrite::AppendToQuery(_) = self {
7548                        // Do nothing, read the value into the object
7549                    } else {
7550                        // Initialize `self` to the right variant
7551                        *self = UrlRequestRewrite::AppendToQuery(fidl::new_empty!(
7552                            UrlRequestRewriteAppendToQuery,
7553                            D
7554                        ));
7555                    }
7556                    #[allow(irrefutable_let_patterns)]
7557                    if let UrlRequestRewrite::AppendToQuery(ref mut val) = self {
7558                        fidl::decode!(
7559                            UrlRequestRewriteAppendToQuery,
7560                            D,
7561                            val,
7562                            decoder,
7563                            _inner_offset,
7564                            depth
7565                        )?;
7566                    } else {
7567                        unreachable!()
7568                    }
7569                }
7570                #[allow(deprecated)]
7571                ordinal => {
7572                    for _ in 0..num_handles {
7573                        decoder.drop_next_handle()?;
7574                    }
7575                    *self = UrlRequestRewrite::__SourceBreaking { unknown_ordinal: ordinal };
7576                }
7577            }
7578            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
7579                return Err(fidl::Error::InvalidNumBytesInEnvelope);
7580            }
7581            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7582                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7583            }
7584            Ok(())
7585        }
7586    }
7587}