pub enum HwndDriftKind {
BrowserWithoutHwnd,
HwndWithoutBrowser,
HiddenSinceOpen,
OffMonitor,
OrphanDestroy,
LingeringHwnd,
OrphanInstance,
}Expand description
Phase B.9.1 — six classes of CEF↔Win32 disagreement the reducer can detect at event-dispatch time. See the WRR design doc for the per-kind triggering Command and reducer action.
Variants§
BrowserWithoutHwnd
state.windows has a label whose hwnd field never got
populated, AND a follow-up event arrived that should have
reconciled it. CEF says open, Win32 has no matching HWND.
HwndWithoutBrowser
HWND in the host’s report doesn’t map to any
state.windows / state.pool label. Win32 has it, CEF
didn’t open it. The “stray taskbar” case.
HiddenSinceOpen
HWND for a known label was never SHOWN (no foreground event) since open and a subsequent state transition has elapsed. User can’t see it.
OffMonitor
Window rect doesn’t intersect any monitor in
state.monitors. Off-screen orphan.
OrphanDestroy
ReportHwndDestroyed arrived without a preceding
ReportWindowClosed for the matching label. Renderer
crashed, took the HWND with it.
LingeringHwnd
ReportWindowClosed arrived, but subsequent OS events for
the HWND keep firing (it never went away on the Win32 side).
OrphanInstance
Phase B.9.3 — host process is alive and registered, but
state.windows just transitioned to empty. The host’s own
close path doesn’t reap the warm pool when the last
user-visible window closes (pool windows hold
state.browsers non-empty, so quit_message_loop never
fires). The launcher’s reducer is the only place that knows
“all user-meaningful labels are gone” cleanly, so we
surface the signal here. Paired with Event::HostShouldQuit
emitted in the same reducer call (see B.9.3 saga).
Trait Implementations§
Source§impl Clone for HwndDriftKind
impl Clone for HwndDriftKind
Source§fn clone(&self) -> HwndDriftKind
fn clone(&self) -> HwndDriftKind
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more