Wire AppearanceSettings into BrowserCore + snapshot
BrowserCore now owns an AppearanceSettings, exposes it through BrowserSnapshot.appearance, and offers set_wallpaper_theme, set_theme_mode, set_reduce_motion, reset_appearance mutators. Defaults match the domain defaults (Dawn / System / motion-on) so existing behaviour is unchanged for callers who don't touch appearance. Integration tests cover initial snapshot defaults, mutation persistence across snapshots, and reset behaviour.
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
use std::error::Error;
|
||||
|
||||
use ely_browser_core::{BrowserCore, InitialBrowserConfig};
|
||||
use ely_domain::{ThemeMode, WallpaperTheme};
|
||||
|
||||
#[test]
|
||||
fn snapshot_starts_with_default_appearance() -> Result<(), Box<dyn Error>> {
|
||||
let core = BrowserCore::new(InitialBrowserConfig::ely_defaults()?)?;
|
||||
let snapshot = core.snapshot()?;
|
||||
|
||||
assert_eq!(snapshot.appearance.wallpaper(), WallpaperTheme::Dawn);
|
||||
assert_eq!(snapshot.appearance.theme_mode(), ThemeMode::System);
|
||||
assert!(!snapshot.appearance.reduce_motion());
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn setters_persist_into_subsequent_snapshots() -> Result<(), Box<dyn Error>> {
|
||||
let mut core = BrowserCore::new(InitialBrowserConfig::ely_defaults()?)?;
|
||||
|
||||
core.set_wallpaper_theme(WallpaperTheme::Mint);
|
||||
core.set_theme_mode(ThemeMode::Dark);
|
||||
core.set_reduce_motion(true);
|
||||
|
||||
let snapshot = core.snapshot()?;
|
||||
assert_eq!(snapshot.appearance.wallpaper(), WallpaperTheme::Mint);
|
||||
assert_eq!(snapshot.appearance.theme_mode(), ThemeMode::Dark);
|
||||
assert!(snapshot.appearance.reduce_motion());
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn reset_appearance_restores_defaults() -> Result<(), Box<dyn Error>> {
|
||||
let mut core = BrowserCore::new(InitialBrowserConfig::ely_defaults()?)?;
|
||||
|
||||
core.set_wallpaper_theme(WallpaperTheme::Slate);
|
||||
core.set_theme_mode(ThemeMode::Light);
|
||||
core.set_reduce_motion(true);
|
||||
core.reset_appearance();
|
||||
|
||||
let snapshot = core.snapshot()?;
|
||||
assert_eq!(snapshot.appearance.wallpaper(), WallpaperTheme::Dawn);
|
||||
assert_eq!(snapshot.appearance.theme_mode(), ThemeMode::System);
|
||||
assert!(!snapshot.appearance.reduce_motion());
|
||||
Ok(())
|
||||
}
|
||||
Reference in New Issue
Block a user