/// Abstracts the rendering engine behind Cephas.
///
/// The current application uses WebKitGTK in the GTK shell, but core browser
/// logic should not depend on a concrete webview widget. This trait is the
/// seam that lets the engine implementation evolve later.
pub trait BrowserEngine {
    fn load_url(&self, url: &str);
    fn reload(&self);
    fn go_back(&self);
    fn go_forward(&self);
    fn stop(&self);
    fn current_url(&self) -> Option<String>;
    fn current_title(&self) -> Option<String>;
    fn can_go_back(&self) -> bool;
    fn can_go_forward(&self) -> bool;
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub enum EngineEvent {
    LoadStarted { url: String },
    LoadCommitted { url: String },
    LoadFinished { url: String },
    TitleChanged { title: String },
    LoadFailed { url: String, error: String },
}
