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 Animation<'a> {
id: Cow<'a, str>,
name: Cow<'a, str>,
#[serde(rename = "pausedState")]
paused_state: bool,
#[serde(rename = "playState")]
play_state: Cow<'a, str>,
#[serde(rename = "playbackRate")]
playback_rate: f64,
#[serde(rename = "startTime")]
start_time: f64,
#[serde(rename = "currentTime")]
current_time: f64,
#[serde(rename = "type")]
type_: Cow<'a, str>,
#[serde(skip_serializing_if = "Option::is_none")]
source: Option<AnimationEffect<'a>>,
#[serde(skip_serializing_if = "Option::is_none", rename = "cssId")]
css_id: Option<Cow<'a, str>>,
#[serde(skip_serializing_if = "Option::is_none", rename = "viewOrScrollTimeline")]
view_or_scroll_timeline: Option<ViewOrScrollTimeline>,
}
impl<'a> Animation<'a> {
pub fn builder(id: impl Into<Cow<'a, str>>, name: impl Into<Cow<'a, str>>, paused_state: bool, play_state: impl Into<Cow<'a, str>>, playback_rate: f64, start_time: f64, current_time: f64, type_: impl Into<Cow<'a, str>>) -> AnimationBuilder<'a> {
AnimationBuilder {
id: id.into(),
name: name.into(),
paused_state: paused_state,
play_state: play_state.into(),
playback_rate: playback_rate,
start_time: start_time,
current_time: current_time,
type_: type_.into(),
source: None,
css_id: None,
view_or_scroll_timeline: None,
}
}
pub fn id(&self) -> &str { self.id.as_ref() }
pub fn name(&self) -> &str { self.name.as_ref() }
pub fn paused_state(&self) -> bool { self.paused_state }
pub fn play_state(&self) -> &str { self.play_state.as_ref() }
pub fn playback_rate(&self) -> f64 { self.playback_rate }
pub fn start_time(&self) -> f64 { self.start_time }
pub fn current_time(&self) -> f64 { self.current_time }
pub fn type_(&self) -> &str { self.type_.as_ref() }
pub fn source(&self) -> Option<&AnimationEffect<'a>> { self.source.as_ref() }
pub fn css_id(&self) -> Option<&str> { self.css_id.as_deref() }
pub fn view_or_scroll_timeline(&self) -> Option<&ViewOrScrollTimeline> { self.view_or_scroll_timeline.as_ref() }
}
pub struct AnimationBuilder<'a> {
id: Cow<'a, str>,
name: Cow<'a, str>,
paused_state: bool,
play_state: Cow<'a, str>,
playback_rate: f64,
start_time: f64,
current_time: f64,
type_: Cow<'a, str>,
source: Option<AnimationEffect<'a>>,
css_id: Option<Cow<'a, str>>,
view_or_scroll_timeline: Option<ViewOrScrollTimeline>,
}
impl<'a> AnimationBuilder<'a> {
pub fn source(mut self, source: AnimationEffect<'a>) -> Self { self.source = Some(source); self }
pub fn css_id(mut self, css_id: impl Into<Cow<'a, str>>) -> Self { self.css_id = Some(css_id.into()); self }
pub fn view_or_scroll_timeline(mut self, view_or_scroll_timeline: ViewOrScrollTimeline) -> Self { self.view_or_scroll_timeline = Some(view_or_scroll_timeline); self }
pub fn build(self) -> Animation<'a> {
Animation {
id: self.id,
name: self.name,
paused_state: self.paused_state,
play_state: self.play_state,
playback_rate: self.playback_rate,
start_time: self.start_time,
current_time: self.current_time,
type_: self.type_,
source: self.source,
css_id: self.css_id,
view_or_scroll_timeline: self.view_or_scroll_timeline,
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct ViewOrScrollTimeline {
#[serde(skip_serializing_if = "Option::is_none", rename = "sourceNodeId")]
source_node_id: Option<crate::dom::BackendNodeId>,
#[serde(skip_serializing_if = "Option::is_none", rename = "startOffset")]
start_offset: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none", rename = "endOffset")]
end_offset: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none", rename = "subjectNodeId")]
subject_node_id: Option<crate::dom::BackendNodeId>,
axis: crate::dom::ScrollOrientation,
}
impl ViewOrScrollTimeline {
pub fn builder(axis: crate::dom::ScrollOrientation) -> ViewOrScrollTimelineBuilder {
ViewOrScrollTimelineBuilder {
source_node_id: None,
start_offset: None,
end_offset: None,
subject_node_id: None,
axis: axis,
}
}
pub fn source_node_id(&self) -> Option<&crate::dom::BackendNodeId> { self.source_node_id.as_ref() }
pub fn start_offset(&self) -> Option<f64> { self.start_offset }
pub fn end_offset(&self) -> Option<f64> { self.end_offset }
pub fn subject_node_id(&self) -> Option<&crate::dom::BackendNodeId> { self.subject_node_id.as_ref() }
pub fn axis(&self) -> &crate::dom::ScrollOrientation { &self.axis }
}
pub struct ViewOrScrollTimelineBuilder {
source_node_id: Option<crate::dom::BackendNodeId>,
start_offset: Option<f64>,
end_offset: Option<f64>,
subject_node_id: Option<crate::dom::BackendNodeId>,
axis: crate::dom::ScrollOrientation,
}
impl ViewOrScrollTimelineBuilder {
pub fn source_node_id(mut self, source_node_id: crate::dom::BackendNodeId) -> Self { self.source_node_id = Some(source_node_id); self }
pub fn start_offset(mut self, start_offset: f64) -> Self { self.start_offset = Some(start_offset); self }
pub fn end_offset(mut self, end_offset: f64) -> Self { self.end_offset = Some(end_offset); self }
pub fn subject_node_id(mut self, subject_node_id: crate::dom::BackendNodeId) -> Self { self.subject_node_id = Some(subject_node_id); self }
pub fn build(self) -> ViewOrScrollTimeline {
ViewOrScrollTimeline {
source_node_id: self.source_node_id,
start_offset: self.start_offset,
end_offset: self.end_offset,
subject_node_id: self.subject_node_id,
axis: self.axis,
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct AnimationEffect<'a> {
delay: f64,
#[serde(rename = "endDelay")]
end_delay: f64,
#[serde(rename = "iterationStart")]
iteration_start: f64,
#[serde(skip_serializing_if = "Option::is_none")]
iterations: Option<f64>,
duration: f64,
direction: Cow<'a, str>,
fill: Cow<'a, str>,
#[serde(skip_serializing_if = "Option::is_none", rename = "backendNodeId")]
backend_node_id: Option<crate::dom::BackendNodeId>,
#[serde(skip_serializing_if = "Option::is_none", rename = "keyframesRule")]
keyframes_rule: Option<KeyframesRule<'a>>,
easing: Cow<'a, str>,
}
impl<'a> AnimationEffect<'a> {
pub fn builder(delay: f64, end_delay: f64, iteration_start: f64, duration: f64, direction: impl Into<Cow<'a, str>>, fill: impl Into<Cow<'a, str>>, easing: impl Into<Cow<'a, str>>) -> AnimationEffectBuilder<'a> {
AnimationEffectBuilder {
delay: delay,
end_delay: end_delay,
iteration_start: iteration_start,
iterations: None,
duration: duration,
direction: direction.into(),
fill: fill.into(),
backend_node_id: None,
keyframes_rule: None,
easing: easing.into(),
}
}
pub fn delay(&self) -> f64 { self.delay }
pub fn end_delay(&self) -> f64 { self.end_delay }
pub fn iteration_start(&self) -> f64 { self.iteration_start }
pub fn iterations(&self) -> Option<f64> { self.iterations }
pub fn duration(&self) -> f64 { self.duration }
pub fn direction(&self) -> &str { self.direction.as_ref() }
pub fn fill(&self) -> &str { self.fill.as_ref() }
pub fn backend_node_id(&self) -> Option<&crate::dom::BackendNodeId> { self.backend_node_id.as_ref() }
pub fn keyframes_rule(&self) -> Option<&KeyframesRule<'a>> { self.keyframes_rule.as_ref() }
pub fn easing(&self) -> &str { self.easing.as_ref() }
}
pub struct AnimationEffectBuilder<'a> {
delay: f64,
end_delay: f64,
iteration_start: f64,
iterations: Option<f64>,
duration: f64,
direction: Cow<'a, str>,
fill: Cow<'a, str>,
backend_node_id: Option<crate::dom::BackendNodeId>,
keyframes_rule: Option<KeyframesRule<'a>>,
easing: Cow<'a, str>,
}
impl<'a> AnimationEffectBuilder<'a> {
pub fn iterations(mut self, iterations: f64) -> Self { self.iterations = Some(iterations); self }
pub fn backend_node_id(mut self, backend_node_id: crate::dom::BackendNodeId) -> Self { self.backend_node_id = Some(backend_node_id); self }
pub fn keyframes_rule(mut self, keyframes_rule: KeyframesRule<'a>) -> Self { self.keyframes_rule = Some(keyframes_rule); self }
pub fn build(self) -> AnimationEffect<'a> {
AnimationEffect {
delay: self.delay,
end_delay: self.end_delay,
iteration_start: self.iteration_start,
iterations: self.iterations,
duration: self.duration,
direction: self.direction,
fill: self.fill,
backend_node_id: self.backend_node_id,
keyframes_rule: self.keyframes_rule,
easing: self.easing,
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct KeyframesRule<'a> {
#[serde(skip_serializing_if = "Option::is_none")]
name: Option<Cow<'a, str>>,
keyframes: Vec<KeyframeStyle<'a>>,
}
impl<'a> KeyframesRule<'a> {
pub fn builder(keyframes: Vec<KeyframeStyle<'a>>) -> KeyframesRuleBuilder<'a> {
KeyframesRuleBuilder {
name: None,
keyframes: keyframes,
}
}
pub fn name(&self) -> Option<&str> { self.name.as_deref() }
pub fn keyframes(&self) -> &[KeyframeStyle<'a>] { &self.keyframes }
}
pub struct KeyframesRuleBuilder<'a> {
name: Option<Cow<'a, str>>,
keyframes: Vec<KeyframeStyle<'a>>,
}
impl<'a> KeyframesRuleBuilder<'a> {
pub fn name(mut self, name: impl Into<Cow<'a, str>>) -> Self { self.name = Some(name.into()); self }
pub fn build(self) -> KeyframesRule<'a> {
KeyframesRule {
name: self.name,
keyframes: self.keyframes,
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct KeyframeStyle<'a> {
offset: Cow<'a, str>,
easing: Cow<'a, str>,
}
impl<'a> KeyframeStyle<'a> {
pub fn builder(offset: impl Into<Cow<'a, str>>, easing: impl Into<Cow<'a, str>>) -> KeyframeStyleBuilder<'a> {
KeyframeStyleBuilder {
offset: offset.into(),
easing: easing.into(),
}
}
pub fn offset(&self) -> &str { self.offset.as_ref() }
pub fn easing(&self) -> &str { self.easing.as_ref() }
}
pub struct KeyframeStyleBuilder<'a> {
offset: Cow<'a, str>,
easing: Cow<'a, str>,
}
impl<'a> KeyframeStyleBuilder<'a> {
pub fn build(self) -> KeyframeStyle<'a> {
KeyframeStyle {
offset: self.offset,
easing: self.easing,
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct DisableParams {}
impl DisableParams { pub const METHOD: &'static str = "Animation.disable"; }
impl<'a> crate::CdpCommand<'a> for DisableParams {
const METHOD: &'static str = "Animation.disable";
type Response = crate::EmptyReturns;
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct EnableParams {}
impl EnableParams { pub const METHOD: &'static str = "Animation.enable"; }
impl<'a> crate::CdpCommand<'a> for EnableParams {
const METHOD: &'static str = "Animation.enable";
type Response = crate::EmptyReturns;
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GetCurrentTimeParams<'a> {
id: Cow<'a, str>,
}
impl<'a> GetCurrentTimeParams<'a> {
pub fn builder(id: impl Into<Cow<'a, str>>) -> GetCurrentTimeParamsBuilder<'a> {
GetCurrentTimeParamsBuilder {
id: id.into(),
}
}
pub fn id(&self) -> &str { self.id.as_ref() }
}
pub struct GetCurrentTimeParamsBuilder<'a> {
id: Cow<'a, str>,
}
impl<'a> GetCurrentTimeParamsBuilder<'a> {
pub fn build(self) -> GetCurrentTimeParams<'a> {
GetCurrentTimeParams {
id: self.id,
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GetCurrentTimeReturns {
#[serde(rename = "currentTime")]
current_time: f64,
}
impl GetCurrentTimeReturns {
pub fn builder(current_time: f64) -> GetCurrentTimeReturnsBuilder {
GetCurrentTimeReturnsBuilder {
current_time: current_time,
}
}
pub fn current_time(&self) -> f64 { self.current_time }
}
pub struct GetCurrentTimeReturnsBuilder {
current_time: f64,
}
impl GetCurrentTimeReturnsBuilder {
pub fn build(self) -> GetCurrentTimeReturns {
GetCurrentTimeReturns {
current_time: self.current_time,
}
}
}
impl<'a> GetCurrentTimeParams<'a> { pub const METHOD: &'static str = "Animation.getCurrentTime"; }
impl<'a> crate::CdpCommand<'a> for GetCurrentTimeParams<'a> {
const METHOD: &'static str = "Animation.getCurrentTime";
type Response = GetCurrentTimeReturns;
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GetPlaybackRateReturns {
#[serde(rename = "playbackRate")]
playback_rate: f64,
}
impl GetPlaybackRateReturns {
pub fn builder(playback_rate: f64) -> GetPlaybackRateReturnsBuilder {
GetPlaybackRateReturnsBuilder {
playback_rate: playback_rate,
}
}
pub fn playback_rate(&self) -> f64 { self.playback_rate }
}
pub struct GetPlaybackRateReturnsBuilder {
playback_rate: f64,
}
impl GetPlaybackRateReturnsBuilder {
pub fn build(self) -> GetPlaybackRateReturns {
GetPlaybackRateReturns {
playback_rate: self.playback_rate,
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GetPlaybackRateParams {}
impl GetPlaybackRateParams { pub const METHOD: &'static str = "Animation.getPlaybackRate"; }
impl<'a> crate::CdpCommand<'a> for GetPlaybackRateParams {
const METHOD: &'static str = "Animation.getPlaybackRate";
type Response = GetPlaybackRateReturns;
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct ReleaseAnimationsParams<'a> {
animations: Vec<Cow<'a, str>>,
}
impl<'a> ReleaseAnimationsParams<'a> {
pub fn builder(animations: Vec<Cow<'a, str>>) -> ReleaseAnimationsParamsBuilder<'a> {
ReleaseAnimationsParamsBuilder {
animations: animations,
}
}
pub fn animations(&self) -> &[Cow<'a, str>] { &self.animations }
}
pub struct ReleaseAnimationsParamsBuilder<'a> {
animations: Vec<Cow<'a, str>>,
}
impl<'a> ReleaseAnimationsParamsBuilder<'a> {
pub fn build(self) -> ReleaseAnimationsParams<'a> {
ReleaseAnimationsParams {
animations: self.animations,
}
}
}
impl<'a> ReleaseAnimationsParams<'a> { pub const METHOD: &'static str = "Animation.releaseAnimations"; }
impl<'a> crate::CdpCommand<'a> for ReleaseAnimationsParams<'a> {
const METHOD: &'static str = "Animation.releaseAnimations";
type Response = crate::EmptyReturns;
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct ResolveAnimationParams<'a> {
#[serde(rename = "animationId")]
animation_id: Cow<'a, str>,
}
impl<'a> ResolveAnimationParams<'a> {
pub fn builder(animation_id: impl Into<Cow<'a, str>>) -> ResolveAnimationParamsBuilder<'a> {
ResolveAnimationParamsBuilder {
animation_id: animation_id.into(),
}
}
pub fn animation_id(&self) -> &str { self.animation_id.as_ref() }
}
pub struct ResolveAnimationParamsBuilder<'a> {
animation_id: Cow<'a, str>,
}
impl<'a> ResolveAnimationParamsBuilder<'a> {
pub fn build(self) -> ResolveAnimationParams<'a> {
ResolveAnimationParams {
animation_id: self.animation_id,
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct ResolveAnimationReturns {
#[serde(rename = "remoteObject")]
remote_object: crate::runtime::RemoteObject,
}
impl ResolveAnimationReturns {
pub fn builder(remote_object: crate::runtime::RemoteObject) -> ResolveAnimationReturnsBuilder {
ResolveAnimationReturnsBuilder {
remote_object: remote_object,
}
}
pub fn remote_object(&self) -> &crate::runtime::RemoteObject { &self.remote_object }
}
pub struct ResolveAnimationReturnsBuilder {
remote_object: crate::runtime::RemoteObject,
}
impl ResolveAnimationReturnsBuilder {
pub fn build(self) -> ResolveAnimationReturns {
ResolveAnimationReturns {
remote_object: self.remote_object,
}
}
}
impl<'a> ResolveAnimationParams<'a> { pub const METHOD: &'static str = "Animation.resolveAnimation"; }
impl<'a> crate::CdpCommand<'a> for ResolveAnimationParams<'a> {
const METHOD: &'static str = "Animation.resolveAnimation";
type Response = ResolveAnimationReturns;
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct SeekAnimationsParams<'a> {
animations: Vec<Cow<'a, str>>,
#[serde(rename = "currentTime")]
current_time: f64,
}
impl<'a> SeekAnimationsParams<'a> {
pub fn builder(animations: Vec<Cow<'a, str>>, current_time: f64) -> SeekAnimationsParamsBuilder<'a> {
SeekAnimationsParamsBuilder {
animations: animations,
current_time: current_time,
}
}
pub fn animations(&self) -> &[Cow<'a, str>] { &self.animations }
pub fn current_time(&self) -> f64 { self.current_time }
}
pub struct SeekAnimationsParamsBuilder<'a> {
animations: Vec<Cow<'a, str>>,
current_time: f64,
}
impl<'a> SeekAnimationsParamsBuilder<'a> {
pub fn build(self) -> SeekAnimationsParams<'a> {
SeekAnimationsParams {
animations: self.animations,
current_time: self.current_time,
}
}
}
impl<'a> SeekAnimationsParams<'a> { pub const METHOD: &'static str = "Animation.seekAnimations"; }
impl<'a> crate::CdpCommand<'a> for SeekAnimationsParams<'a> {
const METHOD: &'static str = "Animation.seekAnimations";
type Response = crate::EmptyReturns;
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct SetPausedParams<'a> {
animations: Vec<Cow<'a, str>>,
paused: bool,
}
impl<'a> SetPausedParams<'a> {
pub fn builder(animations: Vec<Cow<'a, str>>, paused: bool) -> SetPausedParamsBuilder<'a> {
SetPausedParamsBuilder {
animations: animations,
paused: paused,
}
}
pub fn animations(&self) -> &[Cow<'a, str>] { &self.animations }
pub fn paused(&self) -> bool { self.paused }
}
pub struct SetPausedParamsBuilder<'a> {
animations: Vec<Cow<'a, str>>,
paused: bool,
}
impl<'a> SetPausedParamsBuilder<'a> {
pub fn build(self) -> SetPausedParams<'a> {
SetPausedParams {
animations: self.animations,
paused: self.paused,
}
}
}
impl<'a> SetPausedParams<'a> { pub const METHOD: &'static str = "Animation.setPaused"; }
impl<'a> crate::CdpCommand<'a> for SetPausedParams<'a> {
const METHOD: &'static str = "Animation.setPaused";
type Response = crate::EmptyReturns;
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct SetPlaybackRateParams {
#[serde(rename = "playbackRate")]
playback_rate: f64,
}
impl SetPlaybackRateParams {
pub fn builder(playback_rate: f64) -> SetPlaybackRateParamsBuilder {
SetPlaybackRateParamsBuilder {
playback_rate: playback_rate,
}
}
pub fn playback_rate(&self) -> f64 { self.playback_rate }
}
pub struct SetPlaybackRateParamsBuilder {
playback_rate: f64,
}
impl SetPlaybackRateParamsBuilder {
pub fn build(self) -> SetPlaybackRateParams {
SetPlaybackRateParams {
playback_rate: self.playback_rate,
}
}
}
impl SetPlaybackRateParams { pub const METHOD: &'static str = "Animation.setPlaybackRate"; }
impl<'a> crate::CdpCommand<'a> for SetPlaybackRateParams {
const METHOD: &'static str = "Animation.setPlaybackRate";
type Response = crate::EmptyReturns;
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct SetTimingParams<'a> {
#[serde(rename = "animationId")]
animation_id: Cow<'a, str>,
duration: f64,
delay: f64,
}
impl<'a> SetTimingParams<'a> {
pub fn builder(animation_id: impl Into<Cow<'a, str>>, duration: f64, delay: f64) -> SetTimingParamsBuilder<'a> {
SetTimingParamsBuilder {
animation_id: animation_id.into(),
duration: duration,
delay: delay,
}
}
pub fn animation_id(&self) -> &str { self.animation_id.as_ref() }
pub fn duration(&self) -> f64 { self.duration }
pub fn delay(&self) -> f64 { self.delay }
}
pub struct SetTimingParamsBuilder<'a> {
animation_id: Cow<'a, str>,
duration: f64,
delay: f64,
}
impl<'a> SetTimingParamsBuilder<'a> {
pub fn build(self) -> SetTimingParams<'a> {
SetTimingParams {
animation_id: self.animation_id,
duration: self.duration,
delay: self.delay,
}
}
}
impl<'a> SetTimingParams<'a> { pub const METHOD: &'static str = "Animation.setTiming"; }
impl<'a> crate::CdpCommand<'a> for SetTimingParams<'a> {
const METHOD: &'static str = "Animation.setTiming";
type Response = crate::EmptyReturns;
}