mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
net: Use RequestId
to cancel fetches instead of creating an IPC channel (#34883)
Instead of creating an IPC channel for every fetch, allow cancelling fetches based on the `RequestId` of the original request. This requires that `RequestId`s be UUIDs so that they are unique between processes that might communicating with the resource process. In addition, the resource process loop now keeps a `HashMap` or `Weak` handles to cancellers and cleans them up. This allows for creating mutiple `FetchCanceller`s in `script` for a single fetch request, allowing integration of the media and video elements to integrate with the `Document` canceller list -- meaning these fetches also get cancelled when the `Document` unloads. Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This commit is contained in:
parent
e2be55b873
commit
748954d610
23 changed files with 179 additions and 226 deletions
|
@ -13,7 +13,6 @@ use base::id::{BrowsingContextId, PipelineId, TopLevelBrowsingContextId};
|
|||
use content_security_policy::Destination;
|
||||
use crossbeam_channel::Sender;
|
||||
use http::header;
|
||||
use ipc_channel::ipc;
|
||||
use net_traits::request::{CredentialsMode, RedirectMode, RequestBuilder, RequestMode};
|
||||
use net_traits::response::ResponseInit;
|
||||
use net_traits::{
|
||||
|
@ -55,13 +54,11 @@ impl NavigationListener {
|
|||
self,
|
||||
core_resource_thread: &CoreResourceThread,
|
||||
response_init: Option<ResponseInit>,
|
||||
cancellation_receiver: Option<ipc::IpcReceiver<()>>,
|
||||
) {
|
||||
fetch_async(
|
||||
core_resource_thread,
|
||||
self.request_builder.clone(),
|
||||
response_init,
|
||||
cancellation_receiver,
|
||||
self.into_callback(),
|
||||
);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue