Skip to content

Commit ccebbee

Browse files
committed
add test for resource storage sharing
1 parent 20c30b1 commit ccebbee

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

tests/unit/resources/resource_storage.rs

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -805,3 +805,48 @@ mod scriptlet_storage_tests {
805805
assert_eq!(resources.get_scriptlet_resources([("test, 1", PERM01), ("test-wrapper, 2", PERM01), ("shared, 3", Default::default())]), "permissioned\na\ncommon\nb\nfunction test() {}\nfunction testWrapper() { test(arguments) }\nfunction shared() { }\ntry {\ntest(\"1\")\n} catch ( e ) { }\ntry {\ntestWrapper(\"2\")\n} catch ( e ) { }\ntry {\nshared(\"3\")\n} catch ( e ) { }\n");
806806
}
807807
}
808+
809+
#[cfg(all(test, feature = "single-thread"))]
810+
mod shared_storage_tests {
811+
use super::super::*;
812+
use crate::resources::MimeType;
813+
814+
use std::rc::Rc;
815+
816+
/// To be wrapped in [Rc] for shared access across engines.
817+
struct BraveCoreResourceStorageInner {
818+
/// Stores each resource by its canonical name
819+
resources: HashMap<String, Resource>,
820+
}
821+
822+
#[derive(Clone)]
823+
struct BraveCoreResourceStorage {
824+
shared_storage: Rc<BraveCoreResourceStorageInner>,
825+
}
826+
827+
impl ResourceStorageBackend for BraveCoreResourceStorage {
828+
fn get_resource(&self, resource_ident: &str) -> Option<Resource> {
829+
self.shared_storage.resources.get(resource_ident).cloned()
830+
}
831+
}
832+
833+
#[test]
834+
fn share_resources() {
835+
let shared_storage = Rc::new(BraveCoreResourceStorageInner {
836+
resources: HashMap::from_iter([
837+
("test-scriptlet.js".to_string(), Resource::simple("test-scriptlet", MimeType::ApplicationJavascript, "success!"))
838+
]),
839+
});
840+
841+
let mut engine1 = crate::Engine::from_rules(["example1.com##+js(test-scriptlet)"], Default::default());
842+
engine1.use_resource_storage(BraveCoreResourceStorage { shared_storage: Rc::clone(&shared_storage) });
843+
844+
let mut engine2 = crate::Engine::from_rules(["example2.com##+js(test-scriptlet)"], Default::default());
845+
engine2.use_resource_storage(BraveCoreResourceStorage { shared_storage: Rc::clone(&shared_storage) });
846+
847+
assert!(engine1.url_cosmetic_resources("https://example1.com").injected_script.contains("success!"));
848+
assert!(!engine1.url_cosmetic_resources("https://example2.com").injected_script.contains("success!"));
849+
assert!(!engine2.url_cosmetic_resources("https://example1.com").injected_script.contains("success!"));
850+
assert!(engine2.url_cosmetic_resources("https://example2.com").injected_script.contains("success!"));
851+
}
852+
}

0 commit comments

Comments
 (0)