Skip to content

Commit 1e017a7

Browse files
committed
allow for a service worker network mediator per origin
1 parent db217d5 commit 1e017a7

4 files changed

Lines changed: 12 additions & 24 deletions

File tree

components/constellation/lib.rs

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,6 @@ mod constellation;
1616
mod event_loop;
1717
mod network_listener;
1818
mod pipeline;
19-
#[cfg(all(
20-
not(target_os = "windows"),
21-
not(target_os = "ios"),
22-
not(target_os = "android"),
23-
not(target_arch = "arm"),
24-
not(target_arch = "aarch64")
25-
))]
2619
mod sandboxing;
2720
mod serviceworker;
2821
mod session_history;
@@ -32,11 +25,4 @@ pub use crate::constellation::{
3225
Constellation, FromCompositorLogger, FromScriptLogger, InitialConstellationState,
3326
};
3427
pub use crate::pipeline::UnprivilegedPipelineContent;
35-
#[cfg(all(
36-
not(target_os = "windows"),
37-
not(target_os = "ios"),
38-
not(target_os = "android"),
39-
not(target_arch = "arm"),
40-
not(target_arch = "aarch64")
41-
))]
4228
pub use crate::sandboxing::{content_process_sandbox_profile, UnprivilegedContent};

components/net/resource_thread.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ use profile_traits::mem::{Report, ReportKind, ReportsChan};
3939
use profile_traits::time::ProfilerChan;
4040
use serde::{Deserialize, Serialize};
4141
use servo_arc::Arc as ServoArc;
42-
use servo_url::ServoUrl;
42+
use servo_url::{ImmutableOrigin, ServoUrl};
4343
use std::borrow::{Cow, ToOwned};
4444
use std::collections::HashMap;
4545
use std::fs::{self, File};
@@ -299,8 +299,10 @@ impl ResourceChannelManager {
299299
.send(cookie_jar.cookies_for_url(&url, source))
300300
.unwrap();
301301
},
302-
CoreResourceMsg::NetworkMediator(mediator_chan) => {
303-
self.resource_manager.swmanager_chan = Some(mediator_chan)
302+
CoreResourceMsg::NetworkMediator(mediator_chan, origin) => {
303+
self.resource_manager
304+
.sw_managers
305+
.insert(origin, mediator_chan);
304306
},
305307
CoreResourceMsg::GetCookiesDataForUrl(url, consumer, source) => {
306308
let mut cookie_jar = http_state.cookie_jar.write().unwrap();
@@ -431,7 +433,7 @@ pub struct AuthCache {
431433
pub struct CoreResourceManager {
432434
user_agent: Cow<'static, str>,
433435
devtools_chan: Option<Sender<DevtoolsControlMsg>>,
434-
swmanager_chan: Option<IpcSender<CustomResponseMediator>>,
436+
sw_managers: HashMap<ImmutableOrigin, IpcSender<CustomResponseMediator>>,
435437
filemanager: FileManager,
436438
thread_pool: Arc<CoreResourceThreadPool>,
437439
certificate_path: Option<String>,
@@ -575,7 +577,7 @@ impl CoreResourceManager {
575577
CoreResourceManager {
576578
user_agent: user_agent,
577579
devtools_chan: devtools_channel,
578-
swmanager_chan: None,
580+
sw_managers: Default::default(),
579581
filemanager: FileManager::new(embedder_proxy, Arc::downgrade(&pool_handle)),
580582
thread_pool: pool_handle,
581583
certificate_path,

components/net_traits/lib.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ use ipc_channel::router::ROUTER;
3030
use ipc_channel::Error as IpcError;
3131
use mime::Mime;
3232
use msg::constellation_msg::HistoryStateId;
33-
use servo_url::ServoUrl;
33+
use servo_url::{ImmutableOrigin, ServoUrl};
3434
use time::precise_time_ns;
3535
use webrender_api::ImageKey;
3636

@@ -423,8 +423,8 @@ pub enum CoreResourceMsg {
423423
RemoveHistoryStates(Vec<HistoryStateId>),
424424
/// Synchronization message solely for knowing the state of the ResourceChannelManager loop
425425
Synchronize(IpcSender<()>),
426-
/// Send the network sender in constellation to CoreResourceThread
427-
NetworkMediator(IpcSender<CustomResponseMediator>),
426+
/// Send the service worker network mediator for an origin to CoreResourceThread
427+
NetworkMediator(IpcSender<CustomResponseMediator>, ImmutableOrigin),
428428
/// Message forwarded to file manager's handler
429429
ToFileManager(FileManagerThreadMsg),
430430
/// Break the load handler loop, send a reply when done cleaning up local resources

components/script/serviceworker_manager.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ impl ServiceWorkerManager {
192192
}
193193

194194
impl ServiceWorkerManagerFactory for ServiceWorkerManager {
195-
fn create(sw_senders: SWManagerSenders, _origin: ImmutableOrigin) {
195+
fn create(sw_senders: SWManagerSenders, origin: ImmutableOrigin) {
196196
let (resource_chan, resource_port) = ipc::channel().unwrap();
197197

198198
let SWManagerSenders {
@@ -204,7 +204,7 @@ impl ServiceWorkerManagerFactory for ServiceWorkerManager {
204204

205205
let from_constellation = ROUTER.route_ipc_receiver_to_new_crossbeam_receiver(receiver);
206206
let resource_port = ROUTER.route_ipc_receiver_to_new_crossbeam_receiver(resource_port);
207-
let _ = resource_sender.send(CoreResourceMsg::NetworkMediator(resource_chan));
207+
let _ = resource_sender.send(CoreResourceMsg::NetworkMediator(resource_chan, origin));
208208
if thread::Builder::new()
209209
.name("ServiceWorkerManager".to_owned())
210210
.spawn(move || {

0 commit comments

Comments
 (0)