use crate::core::command::Command;
use crate::core::key::Key;
use crate::core::state::{Capability, Config, TabId};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct RequestId(pub u64);
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum LoadEvent {
Started,
Committed,
Finished,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum JsPurpose {
FireAndForget,
ReadScrollPercent,
HintsShown,
HintHref,
}
#[derive(Debug, Clone)]
pub enum Msg {
Key(Key),
Command(Command),
Load { tab: TabId, event: LoadEvent },
TitleChanged { tab: TabId, title: String },
UriChanged { tab: TabId, uri: String },
Progress { tab: TabId, fraction: f64 },
JsResult {
id: RequestId,
tab: TabId,
result: Result<String, String>,
},
CommandLineChanged(String),
CompletionNext,
CompletionPrev,
CompletionApply,
HistoryCompletion {
generation: u64,
prefix: String,
entries: Vec<(String, String)>,
},
InputFocusChanged { tab: TabId, focused: bool },
Crashed { tab: TabId },
ConfigLoaded(Config),
SessionLoaded(Vec<String>),
PluginMessage(String),
PluginEvalRequest { id: u64, script: String },
PluginEvalResult { id: u64, result: String },
PermissionRequested {
id: u64,
host: String,
capability: Capability,
},
FindResult { tab: TabId, matches: u32 },
DownloadStarted { id: u64, filename: String },
DownloadFinished { id: u64, path: String },
DownloadFailed { id: u64, error: String },
}