1#[allow(unused_imports)]
2use self::super::root;
3pub mod offlinewebsession;
4
5#[repr(C)]
6pub struct ShowOfflineHtmlPageArg {
7 data: [u8; 0x2000],
8}
9#[repr(C)]
10#[derive(Copy, Clone, Debug, PartialEq)]
11pub enum OfflineBootDisplayKind {
12 Default,
13 White,
14 Black,
15 Screenshot,
16 BlurredScreenshot,
17}
18#[repr(C)]
19#[derive(Copy, Clone, Debug, PartialEq)]
20pub enum OfflineBackgroundKind {
21 Default,
22 Screenshot,
23 BlurredScreenshot,
24}
25#[repr(C)]
26#[derive(Copy, Clone, Debug, PartialEq)]
27pub enum WebSessionBootMode {
28 Default,
29 InitiallyHidden,
30}
31extern "C" {
32 #[link_name = "\u{1}_ZN2nn3web19ShowOfflineHtmlPageEPNS0_26OfflineHtmlPageReturnValueERKNS0_22ShowOfflineHtmlPageArgE"]
33 pub fn ShowOfflineHtmlPage(
34 return_value: *mut OfflineHtmlPageReturnValue,
35 arg: *const ShowOfflineHtmlPageArg,
36 ) -> u32;
37}
38extern "C" {
39 #[link_name = "\u{1}_ZN2nn3web22ShowOfflineHtmlPageArgC2EPKc"]
40 pub fn ShowOfflineHtmlPageArg(
41 this: *mut ShowOfflineHtmlPageArg,
42 page_path: *const u8,
43 );
44}
45extern "C" {
46 #[link_name = "\u{1}_ZN2nn3web22ShowOfflineHtmlPageArg21SetJsExtensionEnabledEb"]
47 pub fn SetOfflineJsExtensionEnabled(
48 this: *mut ShowOfflineHtmlPageArg,
49 enabled: bool,
50 );
51}
52extern "C" {
53 #[link_name = "\u{1}_ZN2nn3web22ShowOfflineHtmlPageArg16SetFooterEnabledEb"]
54 pub fn SetOfflineFooterEnabled(this: *mut ShowOfflineHtmlPageArg, enabled: bool);
55}
56extern "C" {
57 #[link_name = "\u{1}_ZN2nn3web22ShowOfflineHtmlPageArg17SetPointerEnabledEb"]
58 pub fn SetOfflinePointerEnabled(this: *mut ShowOfflineHtmlPageArg, enabled: bool);
59}
60extern "C" {
61 #[link_name = "\u{1}_ZN2nn3web22ShowOfflineHtmlPageArg25SetBootLoadingIconEnabledEb"]
62 pub fn SetOfflineBootLoadingIconEnabled(
63 this: *mut ShowOfflineHtmlPageArg,
64 enabled: bool,
65 );
66}
67extern "C" {
68 #[link_name = "\u{1}_ZN2nn3web22ShowOfflineHtmlPageArg18SetWebAudioEnabledEb"]
69 pub fn SetOfflineWebAudioEnabled(this: *mut ShowOfflineHtmlPageArg, enabled: bool);
70}
71extern "C" {
72 #[link_name = "\u{1}_ZN2nn3web22ShowOfflineHtmlPageArg22OverrideWebAudioVolumeEf"]
74 pub fn OverrideOfflineWebAudioVolume(
75 this: *mut ShowOfflineHtmlPageArg,
76 volume: f32,
77 );
78}
79extern "C" {
80 #[link_name = "\u{1}_ZN2nn3web22ShowOfflineHtmlPageArg24OverrideMediaAudioVolumeEf"]
82 pub fn OverrideOfflineMediaAudioVolume(
83 this: *mut ShowOfflineHtmlPageArg,
84 volume: f32,
85 );
86}
87extern "C" {
88 #[link_name = "\u{1}_ZN2nn3web22ShowOfflineHtmlPageArg20SetBootAsMediaPlayerEb"]
89 pub fn SetOfflineBootAsMediaPlayer(
90 this: *mut ShowOfflineHtmlPageArg,
91 enabled: bool,
92 );
93}
94extern "C" {
95 #[link_name = "\u{1}_ZN2nn3web22ShowOfflineHtmlPageArg18SetPageFadeEnabledEb"]
96 pub fn SetOfflinePageFadeEnabled(this: *mut ShowOfflineHtmlPageArg, enabled: bool);
97}
98extern "C" {
99 #[link_name = "\u{1}_ZN2nn3web22ShowOfflineHtmlPageArg19SetPageCacheEnabledEb"]
100 pub fn SetOfflinePageCacheEnabled(this: *mut ShowOfflineHtmlPageArg, enabled: bool);
101}
102extern "C" {
103 #[link_name = "\u{1}_ZN2nn3web22ShowOfflineHtmlPageArg18SetBootDisplayKindENS0_22OfflineBootDisplayKindE"]
104 pub fn SetOfflineBootDisplayKind(
105 this: *mut ShowOfflineHtmlPageArg,
106 boot_display_kind: OfflineBootDisplayKind,
107 );
108}
109extern "C" {
110 #[link_name = "\u{1}_ZN2nn3web22ShowOfflineHtmlPageArg17SetBackgroundKindERKNS0_21OfflineBackgroundKindE"]
111 pub fn SetOfflineBackgroundKind(
112 this: *mut ShowOfflineHtmlPageArg,
113 background_kind: *const OfflineBackgroundKind,
114 );
115}
116extern "C" {
117 #[link_name = "\u{1}_ZN2nn3web11SetBootModeEPNS0_22ShowOfflineHtmlPageArgENS0_18WebSessionBootModeE"]
118 pub fn SetBootMode(webpage_arg: &ShowOfflineHtmlPageArg, mode: WebSessionBootMode);
119}
120impl ShowOfflineHtmlPageArg {
121 #[cfg(not(feature = "rustc-dep-of-std"))]
122 #[inline]
123 pub fn new<T: AsRef<[u8]>>(page_path: T) -> Result<Self, core::str::Utf8Error> {
124 let mut path_bytes = page_path.as_ref().to_vec();
125
126 if path_bytes.len() > 3072 {
127 path_bytes.truncate(3071);
128 }
129
130 path_bytes.append(&mut "\0".as_bytes().to_vec());
131
132 unsafe {
133 let mut instance = ShowOfflineHtmlPageArg { data: [0; 0x2000] };
134 ShowOfflineHtmlPageArg(&mut instance, path_bytes.as_ptr());
135 Ok(instance)
136 }
137 }
138
139 pub fn set_background_kind(&mut self, kind: OfflineBackgroundKind) {
140 unsafe { SetOfflineBackgroundKind(self, &kind) }
141 }
142
143 pub fn set_boot_display_kind(&mut self, kind: OfflineBootDisplayKind) {
144 unsafe { SetOfflineBootDisplayKind(self, kind) }
145 }
146
147 pub fn display_footer(&mut self, enabled: bool) {
148 unsafe { SetOfflineFooterEnabled(self, enabled) }
149 }
150
151 pub fn enable_javascript(&mut self, enabled: bool) {
152 unsafe { SetOfflineJsExtensionEnabled(self, enabled) }
153 }
154
155 pub fn enable_pointer(&mut self, enabled: bool) {
156 unsafe { SetOfflinePointerEnabled(self, enabled) }
157 }
158
159 pub fn enable_boot_loading_icon(&mut self, enabled: bool) {
160 unsafe { SetOfflineBootLoadingIconEnabled(self, enabled) }
161 }
162
163 pub fn enable_web_audio(&mut self, enabled: bool) {
164 unsafe { SetOfflineWebAudioEnabled(self, enabled) }
165 }
166
167 pub fn set_boot_mode(&mut self, mode: WebSessionBootMode) {
168 unsafe { SetBootMode(self, mode) }
169 }
170}
171#[repr(C)]
172pub struct OfflineHtmlPageReturnValue {
173 exit_reason: u64,
174 last_url: [u8; 4096],
175 last_url_size: u64,
176}
177#[repr(C)]
178#[derive(Copy, Clone, Debug, PartialEq)]
179pub enum OfflineExitReason {
180 ExitPressed = 0,
181 BackPressed = 1,
182 Requested = 2,
183 LastUrl = 3,
184 ErrorDialog = 7,
185 Unexpected = 20,
186}
187extern "C" {
188 #[link_name = "\u{1}_ZN2nn3web26OfflineHtmlPageReturnValueC1Ev"]
189 pub fn OfflineHtmlPageReturnValue(this: *mut OfflineHtmlPageReturnValue);
190}
191extern "C" {
192 #[link_name = "\u{1}_ZNK2nn3web26OfflineHtmlPageReturnValue20GetOfflineExitReasonEv"]
193 pub fn GetOfflineExitReason(
194 this: *const OfflineHtmlPageReturnValue,
195 ) -> OfflineExitReason;
196}
197extern "C" {
198 #[link_name = "\u{1}_ZNK2nn3web26OfflineHtmlPageReturnValue10GetLastUrlEv"]
199 pub fn GetLastUrl(this: *const OfflineHtmlPageReturnValue) -> *const u8;
200}
201extern "C" {
202 #[link_name = "\u{1}_ZNK2nn3web26OfflineHtmlPageReturnValue14GetLastUrlSizeEv"]
203 pub fn GetLastUrlSize(this: *const OfflineHtmlPageReturnValue) -> usize;
204}
205impl OfflineHtmlPageReturnValue {
206 pub fn new() -> Self {
207 let mut instance = OfflineHtmlPageReturnValue {
208 exit_reason: 0,
209 last_url: [0; 4096],
210 last_url_size: 0,
211 };
212
213 unsafe {
214 OfflineHtmlPageReturnValue(&mut instance);
215 }
216
217 instance
218 }
219
220 pub fn get_exit_reason(&self) -> OfflineExitReason {
221 unsafe { GetOfflineExitReason(self) }
222 }
223}