viewpoint_core/page/
lifecycle.rs1use tracing::{debug, info, instrument};
6use viewpoint_cdp::protocol::target_domain::CloseTargetParams;
7
8use super::Page;
9use crate::error::PageError;
10
11impl Page {
12 #[instrument(level = "info", skip(self), fields(target_id = %self.target_id))]
18 pub async fn close(&mut self) -> Result<(), PageError> {
19 if self.closed {
20 debug!("Page already closed");
21 return Ok(());
22 }
23
24 info!("Closing page");
25
26 self.route_registry.unroute_all().await;
28 debug!("Route handlers cleaned up");
29
30 self.connection
31 .send_command::<_, serde_json::Value>(
32 "Target.closeTarget",
33 Some(CloseTargetParams {
34 target_id: self.target_id.clone(),
35 }),
36 None,
37 )
38 .await?;
39
40 self.closed = true;
41 info!("Page closed");
42 Ok(())
43 }
44
45 pub fn is_closed(&self) -> bool {
47 self.closed
48 }
49}