(&mut self, event: Value)
| 407 | } |
| 408 | |
| 409 | pub(crate) fn push_event(&mut self, event: Value) { |
| 410 | // Only route events into the persistent buffers when the event's |
| 411 | // sessionId matches the persistent page session (flatten-mode events |
| 412 | // are tagged with sessionId). Events from ad-hoc sessions (sw-logs |
| 413 | // attach, per-command live sessions) fall through and go into the |
| 414 | // general events buffer — otherwise a subsequent page `console` drain |
| 415 | // would return extension service worker logs. |
| 416 | let from_persistent_session = self |
| 417 | .persistent_session |
| 418 | .as_deref() |
| 419 | .is_some_and(|s| event["sessionId"].as_str() == Some(s)); |
| 420 | |
| 421 | if from_persistent_session { |
| 422 | let method = event.get("method").and_then(|v| v.as_str()).unwrap_or(""); |
| 423 | match method { |
| 424 | "Network.requestWillBeSent" |
| 425 | | "Network.responseReceived" |
| 426 | | "Network.loadingFinished" |
| 427 | | "Network.loadingFailed" => { |
| 428 | self.network_events.push_back(event); |
| 429 | if self.network_events.len() > MAX_PERSISTENT_EVENTS { |
| 430 | self.network_events.pop_front(); |
| 431 | } |
| 432 | return; |
| 433 | } |
| 434 | "Runtime.consoleAPICalled" | "Runtime.exceptionThrown" => { |
| 435 | self.console_events.push_back(event); |
| 436 | if self.console_events.len() > MAX_PERSISTENT_EVENTS { |
| 437 | self.console_events.pop_front(); |
| 438 | } |
| 439 | return; |
| 440 | } |
| 441 | _ => {} |
| 442 | } |
| 443 | } |
| 444 | Self::push_to_buffer(&mut self.events, event); |
| 445 | } |
| 446 | |
| 447 | fn push_to_buffer(events: &mut std::collections::VecDeque<Value>, event: Value) { |
| 448 | events.push_back(event); |
no outgoing calls
no test coverage detected