use crate::net::null_emitter::NullEmitter;
use crate::net::observer::NetObserver;
use crate::net::request_ref::RequestReference;
use crate::net::types::{Initiator, ResourceKind};
use crate::types::RequestId;
use std::sync::Arc;
use url::Url;
pub trait FetcherContext: Send + Sync {
fn observer_for(
&self,
reference: RequestReference,
req_id: RequestId,
kind: ResourceKind,
initiator: Initiator,
) -> Arc<dyn NetObserver + Send + Sync>;
fn on_ref_active(&self, reference: RequestReference);
fn on_ref_done(&self, reference: RequestReference);
fn is_url_allowed(&self, _url: &Url) -> bool {
true
}
fn cookies_for(&self, _url: &Url) -> Option<String> {
None
}
fn on_cookies_received(&self, _url: &Url, _values: &[&str]) {}
}
pub struct NullContext;
impl FetcherContext for NullContext {
fn observer_for(
&self,
_: RequestReference,
_: RequestId,
_: ResourceKind,
_: Initiator,
) -> Arc<dyn NetObserver + Send + Sync> {
Arc::new(NullEmitter)
}
fn on_ref_active(&self, _: RequestReference) {}
fn on_ref_done(&self, _: RequestReference) {}
}