use serde::{Serialize, Deserialize};
use serde_json::Value as JsonValue;
use std::borrow::Cow;
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct ScreenshotParams<'a> {
#[serde(skip_serializing_if = "Option::is_none")]
format: Option<Cow<'a, str>>,
#[serde(skip_serializing_if = "Option::is_none")]
quality: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none", rename = "optimizeForSpeed")]
optimize_for_speed: Option<bool>,
}
impl<'a> ScreenshotParams<'a> {
pub fn builder() -> ScreenshotParamsBuilder<'a> {
ScreenshotParamsBuilder {
format: None,
quality: None,
optimize_for_speed: None,
}
}
pub fn format(&self) -> Option<&str> { self.format.as_deref() }
pub fn quality(&self) -> Option<i64> { self.quality }
pub fn optimize_for_speed(&self) -> Option<bool> { self.optimize_for_speed }
}
#[derive(Default)]
pub struct ScreenshotParamsBuilder<'a> {
format: Option<Cow<'a, str>>,
quality: Option<i64>,
optimize_for_speed: Option<bool>,
}
impl<'a> ScreenshotParamsBuilder<'a> {
pub fn format(mut self, format: impl Into<Cow<'a, str>>) -> Self { self.format = Some(format.into()); self }
pub fn quality(mut self, quality: i64) -> Self { self.quality = Some(quality); self }
pub fn optimize_for_speed(mut self, optimize_for_speed: bool) -> Self { self.optimize_for_speed = Some(optimize_for_speed); self }
pub fn build(self) -> ScreenshotParams<'a> {
ScreenshotParams {
format: self.format,
quality: self.quality,
optimize_for_speed: self.optimize_for_speed,
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct BeginFrameParams<'a> {
#[serde(skip_serializing_if = "Option::is_none", rename = "frameTimeTicks")]
frame_time_ticks: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
interval: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none", rename = "noDisplayUpdates")]
no_display_updates: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
screenshot: Option<ScreenshotParams<'a>>,
}
impl<'a> BeginFrameParams<'a> {
pub fn builder() -> BeginFrameParamsBuilder<'a> {
BeginFrameParamsBuilder {
frame_time_ticks: None,
interval: None,
no_display_updates: None,
screenshot: None,
}
}
pub fn frame_time_ticks(&self) -> Option<f64> { self.frame_time_ticks }
pub fn interval(&self) -> Option<f64> { self.interval }
pub fn no_display_updates(&self) -> Option<bool> { self.no_display_updates }
pub fn screenshot(&self) -> Option<&ScreenshotParams<'a>> { self.screenshot.as_ref() }
}
#[derive(Default)]
pub struct BeginFrameParamsBuilder<'a> {
frame_time_ticks: Option<f64>,
interval: Option<f64>,
no_display_updates: Option<bool>,
screenshot: Option<ScreenshotParams<'a>>,
}
impl<'a> BeginFrameParamsBuilder<'a> {
pub fn frame_time_ticks(mut self, frame_time_ticks: f64) -> Self { self.frame_time_ticks = Some(frame_time_ticks); self }
pub fn interval(mut self, interval: f64) -> Self { self.interval = Some(interval); self }
pub fn no_display_updates(mut self, no_display_updates: bool) -> Self { self.no_display_updates = Some(no_display_updates); self }
pub fn screenshot(mut self, screenshot: ScreenshotParams<'a>) -> Self { self.screenshot = Some(screenshot); self }
pub fn build(self) -> BeginFrameParams<'a> {
BeginFrameParams {
frame_time_ticks: self.frame_time_ticks,
interval: self.interval,
no_display_updates: self.no_display_updates,
screenshot: self.screenshot,
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct BeginFrameReturns<'a> {
#[serde(rename = "hasDamage")]
has_damage: bool,
#[serde(skip_serializing_if = "Option::is_none", rename = "screenshotData")]
screenshot_data: Option<Cow<'a, str>>,
}
impl<'a> BeginFrameReturns<'a> {
pub fn builder(has_damage: bool) -> BeginFrameReturnsBuilder<'a> {
BeginFrameReturnsBuilder {
has_damage: has_damage,
screenshot_data: None,
}
}
pub fn has_damage(&self) -> bool { self.has_damage }
pub fn screenshot_data(&self) -> Option<&str> { self.screenshot_data.as_deref() }
}
pub struct BeginFrameReturnsBuilder<'a> {
has_damage: bool,
screenshot_data: Option<Cow<'a, str>>,
}
impl<'a> BeginFrameReturnsBuilder<'a> {
pub fn screenshot_data(mut self, screenshot_data: impl Into<Cow<'a, str>>) -> Self { self.screenshot_data = Some(screenshot_data.into()); self }
pub fn build(self) -> BeginFrameReturns<'a> {
BeginFrameReturns {
has_damage: self.has_damage,
screenshot_data: self.screenshot_data,
}
}
}
impl<'a> BeginFrameParams<'a> { pub const METHOD: &'static str = "HeadlessExperimental.beginFrame"; }
impl<'a> crate::CdpCommand<'a> for BeginFrameParams<'a> {
const METHOD: &'static str = "HeadlessExperimental.beginFrame";
type Response = BeginFrameReturns<'a>;
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct DisableParams {}
impl DisableParams { pub const METHOD: &'static str = "HeadlessExperimental.disable"; }
impl<'a> crate::CdpCommand<'a> for DisableParams {
const METHOD: &'static str = "HeadlessExperimental.disable";
type Response = crate::EmptyReturns;
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct EnableParams {}
impl EnableParams { pub const METHOD: &'static str = "HeadlessExperimental.enable"; }
impl<'a> crate::CdpCommand<'a> for EnableParams {
const METHOD: &'static str = "HeadlessExperimental.enable";
type Response = crate::EmptyReturns;
}