< Summary

Information
Class: /home/runner/work/TauriQt/TauriQt/tauriqt/src/main.rs
Assembly: Default
File(s): /home/runner/work/TauriQt/TauriQt/tauriqt/src/main.rs
Line coverage
94%
Covered lines: 231
Uncovered lines: 14
Coverable lines: 245
Total lines: 444
Line coverage: 94.2%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

File(s)

/home/runner/work/TauriQt/TauriQt/tauriqt/src/main.rs

#LineLine coverage
 1// SPDX-FileCopyrightText: 2026 Alper Çelik
 2// SPDX-License-Identifier: MIT OR Apache-2.0
 3
 4//! TauriQt — a Tauri 2 app that runs on the Qt runtime (Qt windowing +
 5//! QtWebEngine) on Linux and falls back to the stock wry runtime elsewhere
 6//! (or on Linux when built with `--features wry`).
 7
 8/// Runtime selection: Qt on Linux, wry everywhere else (and with `--features wry`).
 9#[cfg(all(target_os = "linux", not(feature = "wry")))]
 10pub type AppRuntime = tauri_runtime_qt::QtRuntime;
 11#[cfg(any(not(target_os = "linux"), feature = "wry"))]
 12pub type AppRuntime = tauri::Wry;
 13
 14#[tauri::command]
 2115fn greet(name: &str) -> String {
 2116    format!("Hello, {name}! — from {}", std::env::consts::OS)
 2117}
 18
 19/// Renders one probed window method as `label=value`, or `label=ERR(message)`
 20/// when the runtime cannot answer truthfully on this platform. Never panics and
 21/// never substitutes a fabricated value — a failing probe is reported as such.
 75622fn probe<T>(label: &str, result: tauri::Result<T>, render: impl FnOnce(T) -> String) -> String {
 75623    match result {
 75624        Ok(value) => format!("{label}={}", render(value)),
 025        Err(err) => format!("{label}=ERR({err})"),
 26    }
 75627}
 28
 29/// Exercises the `WindowDispatch` read path: geometry, scale factor, title and
 30/// every `is_*` flag. Each method is probed independently so one unsupported
 31/// call does not hide the others.
 32#[tauri::command]
 2133fn platform() -> String {
 2134    runtime_platform_name()
 2135}
 36
 37/// The Qt runtime knows its platform plugin; the wry fallback does not need to.
 38#[cfg(all(target_os = "linux", not(feature = "wry")))]
 2139fn runtime_platform_name() -> String {
 2140    tauri_runtime_qt::platform_name()
 2141}
 42
 43#[cfg(any(not(target_os = "linux"), feature = "wry"))]
 44fn runtime_platform_name() -> String {
 45    "wry".to_owned()
 46}
 47
 48#[tauri::command]
 4249fn win_info(window: tauri::WebviewWindow<AppRuntime>) -> String {
 4250    let fields = [
 4251        probe("inner_size", window.inner_size(), |s| {
 4252            format!("{}x{}", s.width, s.height)
 4253        }),
 4254        probe("outer_size", window.outer_size(), |s| {
 4255            format!("{}x{}", s.width, s.height)
 4256        }),
 4257        probe("inner_position", window.inner_position(), |p| {
 4258            format!("{},{}", p.x, p.y)
 4259        }),
 4260        probe("outer_position", window.outer_position(), |p| {
 4261            format!("{},{}", p.x, p.y)
 4262        }),
 4263        probe("scale_factor", window.scale_factor(), |s| format!("{s:.4}")),
 4264        probe("title", window.title(), |t| t),
 4265        probe("is_fullscreen", window.is_fullscreen(), |v| v.to_string()),
 4266        probe("is_minimized", window.is_minimized(), |v| v.to_string()),
 4267        probe("is_maximized", window.is_maximized(), |v| v.to_string()),
 4268        probe("is_focused", window.is_focused(), |v| v.to_string()),
 4269        probe("is_decorated", window.is_decorated(), |v| v.to_string()),
 4270        probe("is_resizable", window.is_resizable(), |v| v.to_string()),
 4271        probe("is_visible", window.is_visible(), |v| v.to_string()),
 4272        probe("is_always_on_top", window.is_always_on_top(), |v| {
 4273            v.to_string()
 4274        }),
 4275        probe("is_maximizable", window.is_maximizable(), |v| v.to_string()),
 4276        probe("is_minimizable", window.is_minimizable(), |v| v.to_string()),
 4277        probe("is_closable", window.is_closable(), |v| v.to_string()),
 78    ];
 4279    fields.join("; ")
 4280}
 81
 82/// Renders a monitor as `name pos size work scale`.
 6383fn fmt_monitor(index: usize, monitor: &tauri::Monitor) -> String {
 6384    format!(
 85        "#{index} name={:?} pos={},{} size={}x{} work={}x{} scale={:.4}",
 6386        monitor.name(),
 6387        monitor.position().x,
 6388        monitor.position().y,
 6389        monitor.size().width,
 6390        monitor.size().height,
 6391        monitor.work_area().size.width,
 6392        monitor.work_area().size.height,
 6393        monitor.scale_factor(),
 94    )
 6395}
 96
 97/// Exercises the monitor path: available monitors, primary monitor and the
 98/// monitor the window currently sits on.
 99#[tauri::command]
 21100fn monitors(window: tauri::WebviewWindow<AppRuntime>) -> String {
 21101    let available = match window.available_monitors() {
 21102        Ok(list) => {
 21103            let mut rendered = format!("available_monitors={}", list.len());
 21104            for (index, monitor) in list.iter().enumerate() {
 21105                rendered.push_str(" | ");
 21106                rendered.push_str(&fmt_monitor(index, monitor));
 21107            }
 21108            rendered
 109        }
 0110        Err(err) => format!("available_monitors=ERR({err})"),
 111    };
 21112    let primary = probe("primary_monitor", window.primary_monitor(), |m| {
 21113        m.map(|monitor| fmt_monitor(0, &monitor))
 21114            .unwrap_or_else(|| "none".to_string())
 21115    });
 21116    let current = probe("current_monitor", window.current_monitor(), |m| {
 21117        m.map(|monitor| fmt_monitor(0, &monitor))
 21118            .unwrap_or_else(|| "none".to_string())
 21119    });
 21120    format!("{available}; {primary}; {current}")
 21121}
 122
 123/// Sets the window fullscreen state. Surfaces the runtime error as an invoke
 124/// rejection instead of pretending it succeeded.
 125#[tauri::command]
 42126fn set_fullscreen(
 42127    window: tauri::WebviewWindow<AppRuntime>,
 42128    fullscreen: bool,
 42129) -> Result<String, String> {
 42130    window
 42131        .set_fullscreen(fullscreen)
 42132        .map(|()| format!("set_fullscreen({fullscreen})=OK"))
 42133        .map_err(|err| format!("set_fullscreen({fullscreen}) failed: {err}"))
 42134}
 135
 136/// Sets the window title. Surfaces the runtime error as an invoke rejection.
 137#[tauri::command]
 21138fn set_title(window: tauri::WebviewWindow<AppRuntime>, title: String) -> Result<String, String> {
 21139    window
 21140        .set_title(&title)
 21141        .map(|()| format!("set_title({title:?})=OK"))
 21142        .map_err(|err| format!("set_title({title:?}) failed: {err}"))
 21143}
 144
 145/// Logs a line from the frontend to the terminal so demo results are visible
 146/// outside the web view.
 147#[tauri::command]
 798148fn report(text: String) -> String {
 798149    println!("[tauriqt-demo] {text}");
 798150    "reported".to_string()
 798151}
 152
 153// ---------------------------------------------------------------------------
 154// Cookie demo (the runtime mirrors the profile's cookie store)
 155// ---------------------------------------------------------------------------
 156//
 157// `tauri://` is a custom scheme and Chromium only lets a document read or write
 158// cookies on a *cookieable* scheme (`http`, `https`, `ws`, `wss`) — the same
 159// reason tauri's own `Webview::cookies()` documentation excludes `tauri://`
 160// URLs. `document.cookie` is therefore inert on this page. To exercise real
 161// JS-side cookie access (and to prove that a JS-set cookie reaches the
 162// runtime's mirror) the page embeds a sandbox document served from
 163// `http://127.0.0.1` on an ephemeral port: a different origin, but the same
 164// webview, the same profile and therefore the same cookie store that
 165// `cookies()`, `cookies_for_url()`, `set_cookie()` and `delete_cookie()` see.
 166
 167/// The sandbox document: a plain http page whose only job is to run
 168/// `document.cookie` operations on request and report the result — the cookie
 169/// it read back — to the parent page.
 170const COOKIE_SANDBOX_HTML: &str = r#"<!doctype html>
 171<html lang="en">
 172  <head>
 173    <meta charset="utf-8" />
 174    <title>cookie sandbox</title>
 175    <style>
 176      body { font-family: ui-monospace, monospace; font-size: 0.8rem; margin: 0.5rem; }
 177      code { word-break: break-all; }
 178    </style>
 179  </head>
 180  <body>
 181    <div>cookie sandbox on <code id="origin"></code></div>
 182    <div>document.cookie: <code id="value"></code></div>
 183    <script>
 184      // Runs on http://127.0.0.1:<port>, an origin Chromium allows cookies on
 185      // (the parent page's tauri:// scheme does not). Only the parent's
 186      // postMessage protocol reaches this document.
 187      const origin = document.getElementById("origin");
 188      const value = document.getElementById("value");
 189      origin.textContent = location.origin;
 190
 191      function read() {
 192        try {
 193          return document.cookie;
 194        } catch (err) {
 195          return "ERR(" + err + ")";
 196        }
 197      }
 198
 199      function show() {
 200        value.textContent = JSON.stringify(read());
 201        return read();
 202      }
 203
 204      window.addEventListener("message", (event) => {
 205        const { id, op, cookie } = event.data || {};
 206        let result;
 207        switch (op) {
 208          case "set": // a document.cookie write, e.g. "name=value; path=/"
 209            document.cookie = cookie;
 210            result = show();
 211            break;
 212          case "read":
 213            result = show();
 214            break;
 215          default:
 216            result = "ERR(unknown op " + op + ")";
 217        }
 218        parent.postMessage({ id, op, result }, "*");
 219      });
 220
 221      parent.postMessage({ op: "ready", result: show() }, "*");
 222    </script>
 223  </body>
 224</html>
 225"#;
 226
 227/// Port of the sandbox's loopback server. The server starts with the first use
 228/// of [`cookie_sandbox_url`] and lives as long as the process.
 229static COOKIE_SANDBOX_PORT: std::sync::LazyLock<Option<u16>> =
 230    std::sync::LazyLock::new(start_cookie_sandbox);
 231
 232/// Serves [`COOKIE_SANDBOX_HTML`] on an ephemeral 127.0.0.1 port and returns it.
 233/// Minimal on purpose: one request per connection, loopback only, so it never
 234/// outlives the demo process.
 21235fn start_cookie_sandbox() -> Option<u16> {
 236    use std::io::{Read, Write};
 237
 21238    let listener = std::net::TcpListener::bind(("127.0.0.1", 0)).ok()?;
 21239    let port = listener.local_addr().ok()?.port();
 21240    std::thread::Builder::new()
 21241        .name("tauriqt-cookie-sandbox".to_string())
 21242        .spawn(move || {
 21243            for stream in listener.incoming() {
 21244                let Ok(mut stream) = stream else { continue };
 21245                let mut request = [0u8; 1024];
 21246                let read = stream.read(&mut request).unwrap_or(0);
 21247                let head = String::from_utf8_lossy(&request[..read]);
 21248                let wants_page =
 21249                    head.starts_with("GET / ") || head.starts_with("GET /index.html ");
 21250                let (status, body) = if wants_page {
 21251                    ("200 OK", COOKIE_SANDBOX_HTML)
 252                } else {
 0253                    ("404 Not Found", "")
 254                };
 21255                let response = format!(
 256                    "HTTP/1.1 {status}\r\nContent-Type: text/html; charset=utf-8\r\nContent-Length: {}\r\nConnection: cl
 21257                    body.len()
 258                );
 21259                let _ = stream.write_all(response.as_bytes());
 21260                let _ = stream.flush();
 261            }
 21262        })
 21263        .ok()?;
 21264    Some(port)
 21265}
 266
 267/// URL of the cookie sandbox document (starts its server on first call).
 268#[tauri::command]
 21269fn cookie_sandbox_url() -> Option<String> {
 21270    (*COOKIE_SANDBOX_PORT).map(|port| format!("http://127.0.0.1:{port}/"))
 21271}
 272
 273/// Renders one cookie for the terminal report.
 273274fn fmt_cookie(cookie: &tauri::webview::Cookie<'_>) -> String {
 273275    let mut out = format!("{}={}", cookie.name(), cookie.value());
 273276    if let Some(domain) = cookie.domain() {
 273277        out.push_str(&format!(" domain={domain}"));
 273278    }
 273279    if let Some(path) = cookie.path() {
 273280        out.push_str(&format!(" path={path}"));
 273281    }
 273282    if cookie.secure() == Some(true) {
 273283        out.push_str(" secure");
 273284    }
 273285    if cookie.http_only() == Some(true) {
 0286        out.push_str(" http_only");
 273287    }
 273288    if let Some(same_site) = cookie.same_site() {
 0289        out.push_str(&format!(" same_site={same_site:?}"));
 273290    }
 273291    match cookie.expires_datetime() {
 0292        Some(expires) => out.push_str(&format!(
 0293            " expires_ms={}",
 0294            expires.unix_timestamp() * 1000 + i64::from(expires.millisecond())
 0295        )),
 273296        None => out.push_str(" session"),
 297    }
 273298    out
 273299}
 300
 301/// Dumps the runtime's cookie mirror (`WebviewDispatch::cookies`), or — when
 302/// `url` is given — the cookies a request to that URL would carry
 303/// (`WebviewDispatch::cookies_for_url`).
 304#[tauri::command]
 231305fn cookies_dump(
 231306    window: tauri::WebviewWindow<AppRuntime>,
 231307    url: Option<String>,
 231308) -> Result<String, String> {
 231309    let cookies = match url {
 84310        Some(url) => {
 84311            let parsed =
 84312                tauri::Url::parse(&url).map_err(|err| format!("invalid url {url:?}: {err}"))?;
 84313            window.cookies_for_url(parsed)
 314        }
 147315        None => window.cookies(),
 316    }
 231317    .map_err(|err| format!("cookies_dump failed: {err}"))?;
 318
 231319    if cookies.is_empty() {
 63320        return Ok("(no cookies)".to_string());
 168321    }
 168322    Ok(cookies
 168323        .iter()
 168324        .map(fmt_cookie)
 168325        .collect::<Vec<_>>()
 168326        .join(" | "))
 231327}
 328
 329/// Builds a cookie for the runtime's `set_cookie` from `Set-Cookie`-style
 330/// attributes. `same_site` must be `none`, `lax` or `strict` when given — the
 331/// cookie crate's parser silently ignores unknown SameSite values, so they are
 332/// rejected here instead of turning into an attribute-less cookie.
 42333fn build_cookie(
 42334    name: &str,
 42335    value: &str,
 42336    domain: Option<&str>,
 42337    path: Option<&str>,
 42338    secure: bool,
 42339    same_site: Option<&str>,
 42340) -> Result<tauri::webview::Cookie<'static>, String> {
 42341    let mut text = format!("{name}={value}; path={}", path.unwrap_or("/"));
 42342    if let Some(domain) = domain {
 42343        text.push_str(&format!("; domain={domain}"));
 42344    }
 42345    if secure {
 42346        text.push_str("; Secure");
 42347    }
 42348    if let Some(same_site) = same_site {
 42349        match same_site.to_ascii_lowercase().as_str() {
 42350            "none" | "lax" | "strict" => text.push_str(&format!("; SameSite={same_site}")),
 0351            other => {
 0352                return Err(format!("same_site {other:?} must be none, lax or strict"));
 353            }
 354        }
 0355    }
 42356    match tauri::webview::Cookie::parse(text.clone()) {
 42357        Ok(cookie) => Ok(cookie),
 0358        Err(err) => Err(format!("invalid cookie attributes {text:?}: {err}")),
 359    }
 42360}
 361
 362/// Sets a cookie through the runtime (`WebviewDispatch::set_cookie`). Without a
 363/// `domain` the cookie becomes host-only for the webview's current page host.
 364#[tauri::command]
 42365fn cookie_set(
 42366    window: tauri::WebviewWindow<AppRuntime>,
 42367    name: String,
 42368    value: String,
 42369    domain: Option<String>,
 42370    path: Option<String>,
 42371    secure: Option<bool>,
 42372    same_site: Option<String>,
 42373) -> Result<String, String> {
 42374    let cookie = build_cookie(
 42375        &name,
 42376        &value,
 42377        domain.as_deref(),
 42378        path.as_deref(),
 42379        secure.unwrap_or(false),
 42380        same_site.as_deref(),
 0381    )?;
 42382    window
 42383        .set_cookie(cookie)
 42384        .map_err(|err| format!("cookie_set({name}) failed: {err}"))?;
 42385    Ok(format!("cookie_set({name}) OK"))
 42386}
 387
 388/// Deletes cookies through the runtime (`WebviewDispatch::delete_cookie`).
 389#[tauri::command]
 21390fn cookie_delete(
 21391    window: tauri::WebviewWindow<AppRuntime>,
 21392    name: String,
 21393    domain: Option<String>,
 21394    path: Option<String>,
 21395) -> Result<String, String> {
 21396    let mut builder = tauri::webview::Cookie::build((name.clone(), ""))
 21397        .path(path.unwrap_or_else(|| "/".to_string()));
 21398    if let Some(domain) = domain {
 21399        builder = builder.domain(domain);
 21400    }
 21401    window
 21402        .delete_cookie(builder.build())
 21403        .map_err(|err| format!("cookie_delete({name}) failed: {err}"))?;
 21404    Ok(format!("cookie_delete({name}) OK"))
 21405}
 406
 407/// `WebviewDispatch::clear_all_browsing_data`: every cookie of the profile plus
 408/// the HTTP cache (see the runtime's `ops::cookies::clear_all_browsing_data`
 409/// for what Qt cannot clear).
 410#[tauri::command]
 21411fn cookies_clear(window: tauri::WebviewWindow<AppRuntime>) -> Result<String, String> {
 21412    window
 21413        .clear_all_browsing_data()
 21414        .map_err(|err| format!("clear_all_browsing_data failed: {err}"))?;
 21415    Ok("clear_all_browsing_data OK".to_string())
 21416}
 417
 21418fn main() {
 21419    let mut builder = tauri::Builder::<AppRuntime>::new().invoke_handler(tauri::generate_handler![
 420        greet,
 421        win_info,
 422        monitors,
 423        set_fullscreen,
 424        set_title,
 425        report,
 426        cookie_sandbox_url,
 427        cookies_dump,
 428        cookie_set,
 429        cookie_delete,
 430        cookies_clear,
 431        platform
 432    ]);
 433
 434    // The Qt runtime carries invoke payloads in a header (QtWebEngine never
 435    // exposes custom-protocol request bodies), so it ships its own invoke system.
 436    #[cfg(all(target_os = "linux", not(feature = "wry")))]
 21437    {
 21438        builder = builder.invoke_system(tauri_runtime_qt::INVOKE_SYSTEM_SCRIPT);
 21439    }
 440
 21441    builder
 42442        .run(tauri::generate_context!())
 21443        .expect("error while running the tauri application");
 21444}

Methods/Properties

_RNvCsl9yYLK4ftHb_7tauriqt5greet
_RINvCsl9yYLK4ftHb_7tauriqt5probeINtCsb5tLBgpt5ow_3dpi12PhysicalSizemENCNvB2_8win_info0EB2_
_RINvCsl9yYLK4ftHb_7tauriqt5probeINtCsb5tLBgpt5ow_3dpi12PhysicalSizemENCNvB2_8win_infos_0EB2_
_RINvCsl9yYLK4ftHb_7tauriqt5probeINtCsb5tLBgpt5ow_3dpi16PhysicalPositionlENCNvB2_8win_infos0_0EB2_
_RINvCsl9yYLK4ftHb_7tauriqt5probeINtCsb5tLBgpt5ow_3dpi16PhysicalPositionlENCNvB2_8win_infos1_0EB2_
_RINvCsl9yYLK4ftHb_7tauriqt5probeINtNtCs6Xa2QwhY5JM_4core6option6OptionNtNtCsayqiEzhWKCy_5tauri6window7MonitorENCNvB2_8monitors0EB2_
_RINvCsl9yYLK4ftHb_7tauriqt5probeINtNtCs6Xa2QwhY5JM_4core6option6OptionNtNtCsayqiEzhWKCy_5tauri6window7MonitorENCNvB2_8monitorss_0EB2_
_RINvCsl9yYLK4ftHb_7tauriqt5probeNtNtCsfVYBsOggKhj_5alloc6string6StringNCNvB2_8win_infos3_0EB2_
_RINvCsl9yYLK4ftHb_7tauriqt5probebNCNvB2_8win_infos4_0EB2_
_RINvCsl9yYLK4ftHb_7tauriqt5probebNCNvB2_8win_infos5_0EB2_
_RINvCsl9yYLK4ftHb_7tauriqt5probebNCNvB2_8win_infos6_0EB2_
_RINvCsl9yYLK4ftHb_7tauriqt5probebNCNvB2_8win_infos7_0EB2_
_RINvCsl9yYLK4ftHb_7tauriqt5probebNCNvB2_8win_infos8_0EB2_
_RINvCsl9yYLK4ftHb_7tauriqt5probebNCNvB2_8win_infos9_0EB2_
_RINvCsl9yYLK4ftHb_7tauriqt5probebNCNvB2_8win_infosa_0EB2_
_RINvCsl9yYLK4ftHb_7tauriqt5probebNCNvB2_8win_infosb_0EB2_
_RINvCsl9yYLK4ftHb_7tauriqt5probebNCNvB2_8win_infosc_0EB2_
_RINvCsl9yYLK4ftHb_7tauriqt5probebNCNvB2_8win_infosd_0EB2_
_RINvCsl9yYLK4ftHb_7tauriqt5probebNCNvB2_8win_infose_0EB2_
_RINvCsl9yYLK4ftHb_7tauriqt5probedNCNvB2_8win_infos2_0EB2_
_RNvCsl9yYLK4ftHb_7tauriqt8platform
_RNvCsl9yYLK4ftHb_7tauriqt21runtime_platform_name
_RNvCsl9yYLK4ftHb_7tauriqt8win_info
_RNCNvCsl9yYLK4ftHb_7tauriqt8win_info0B3_
_RNCNvCsl9yYLK4ftHb_7tauriqt8win_infos_0B3_
_RNCNvCsl9yYLK4ftHb_7tauriqt8win_infos0_0B3_
_RNCNvCsl9yYLK4ftHb_7tauriqt8win_infos1_0B3_
_RNCNvCsl9yYLK4ftHb_7tauriqt8win_infos2_0B3_
_RNCNvCsl9yYLK4ftHb_7tauriqt8win_infos4_0B3_
_RNCNvCsl9yYLK4ftHb_7tauriqt8win_infos5_0B3_
_RNCNvCsl9yYLK4ftHb_7tauriqt8win_infos6_0B3_
_RNCNvCsl9yYLK4ftHb_7tauriqt8win_infos7_0B3_
_RNCNvCsl9yYLK4ftHb_7tauriqt8win_infos8_0B3_
_RNCNvCsl9yYLK4ftHb_7tauriqt8win_infos9_0B3_
_RNCNvCsl9yYLK4ftHb_7tauriqt8win_infosa_0B3_
_RNCNvCsl9yYLK4ftHb_7tauriqt8win_infosb_0B3_
_RNCNvCsl9yYLK4ftHb_7tauriqt8win_infosc_0B3_
_RNCNvCsl9yYLK4ftHb_7tauriqt8win_infosd_0B3_
_RNCNvCsl9yYLK4ftHb_7tauriqt8win_infose_0B3_
_RNvCsl9yYLK4ftHb_7tauriqt11fmt_monitor
_RNvCsl9yYLK4ftHb_7tauriqt8monitors
_RNCNvCsl9yYLK4ftHb_7tauriqt8monitors0B3_
_RNCNCNvCsl9yYLK4ftHb_7tauriqt8monitors00B5_
_RNCNCNvCsl9yYLK4ftHb_7tauriqt8monitors0s_0B5_
_RNCNvCsl9yYLK4ftHb_7tauriqt8monitorss_0B3_
_RNCNCNvCsl9yYLK4ftHb_7tauriqt8monitorss_00B5_
_RNCNCNvCsl9yYLK4ftHb_7tauriqt8monitorss_0s_0B5_
_RNvCsl9yYLK4ftHb_7tauriqt14set_fullscreen
_RNCNvCsl9yYLK4ftHb_7tauriqt14set_fullscreen0B3_
_RNCNvCsl9yYLK4ftHb_7tauriqt14set_fullscreens_0B3_
_RNvCsl9yYLK4ftHb_7tauriqt9set_title
_RNCNvCsl9yYLK4ftHb_7tauriqt9set_title0B3_
_RNCNvCsl9yYLK4ftHb_7tauriqt9set_titles_0B3_
_RNvCsl9yYLK4ftHb_7tauriqt6report
_RNvCsl9yYLK4ftHb_7tauriqt20start_cookie_sandbox
_RNCNvCsl9yYLK4ftHb_7tauriqt20start_cookie_sandbox0B3_
_RNvCsl9yYLK4ftHb_7tauriqt18cookie_sandbox_url
_RNCNvCsl9yYLK4ftHb_7tauriqt18cookie_sandbox_url0B3_
_RNvCsl9yYLK4ftHb_7tauriqt10fmt_cookie
_RNvCsl9yYLK4ftHb_7tauriqt12cookies_dump
_RNCNvCsl9yYLK4ftHb_7tauriqt12cookies_dump0B3_
_RNCNvCsl9yYLK4ftHb_7tauriqt12cookies_dumps_0B3_
_RNvCsl9yYLK4ftHb_7tauriqt12build_cookie
_RNvCsl9yYLK4ftHb_7tauriqt10cookie_set
_RNCNvCsl9yYLK4ftHb_7tauriqt10cookie_set0B3_
_RNvCsl9yYLK4ftHb_7tauriqt13cookie_delete
_RNCNvCsl9yYLK4ftHb_7tauriqt13cookie_delete0B3_
_RNCNvCsl9yYLK4ftHb_7tauriqt13cookie_deletes_0B3_
_RNvCsl9yYLK4ftHb_7tauriqt13cookies_clear
_RNCNvCsl9yYLK4ftHb_7tauriqt13cookies_clear0B3_
_RNvCsl9yYLK4ftHb_7tauriqt4main
_RNCINvNvCsl9yYLK4ftHb_7tauriqt4main5innerNtCsdgr7Em4UC3i_16tauri_runtime_qt9QtRuntimeNtNtCsDJpgXA7L0W_11tauri_utils6assets14EmbeddedAssetsE0B6_