-
Notifications
You must be signed in to change notification settings - Fork 88
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Add CdpEvent::InvalidParams variant #207
Conversation
chromiumoxide_cdp/Cargo.toml
Outdated
ureq = "2.6.2" | ||
tempfile = "3.2.0" | ||
|
||
[dependencies] | ||
chromiumoxide_pdl = { path = "../chromiumoxide_pdl", version = "0.5"} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I removed this line because it seems unnecessary.
#deserialize_from_method | ||
_=>CdpEvent::Other(map.next_value::<serde_json::Value>()?) | ||
_ => CdpEvent::Other(serde_json::from_str::<serde_json::Value>(value.get()).unwrap()) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These unwrap()
should never panic, because RawValue
can only be deserialized from a valid JSON, and Value
can be serialized from any valid JSON.
Hey @ryo33 and @mattsse , any idea when this might be merged? I'm hoping it might fix let handle = tokio::task::spawn(async move {
while let Some(h) = handler.next().await {
if let Err(CdpError::Serde(err)) = h {
println!("Serde error: {:#?}", err);
continue;
} else if let Err(err) = h {
println!("CDP Error: {:#?}", err);
break;
}
}
}); Meanwhile, I guess it's safe to just ignore these errors as those CDP messages are currently unsupported anyway... probably just new Chrome/ium experimental features? |
This is not the solution because we try to translate that to a custom event which means the user would need to have a listener with a custom event for each method, this is not viable. |
Fixes #167
Add
CdpEvent::InvalidParams(serde_json::Value)
, and use it if deserializing an event param for a specific method fails.There already are
CdpEvent::Other(serde_json::Value)
, but it's only used for unknown method ids.I use the
raw_value
feature on serde_json to getserde_json::Value
without any allocation after deserializing an event param failed.