perf(web-surface): avoid snapshot clones on live ticks
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
use ely_browser_core::BrowserCore;
|
||||
#[cfg(test)]
|
||||
use ely_browser_core::BrowserSnapshot;
|
||||
use ely_domain::{BrowserTab, SiteOrigin, SitePermissionDecision, SitePermissionFeature};
|
||||
|
||||
@@ -30,6 +32,7 @@ impl WebSurfaceSitePermission {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
pub(super) fn web_surface_site_permissions_for_tab(
|
||||
tab: &BrowserTab,
|
||||
snapshot: &BrowserSnapshot,
|
||||
@@ -49,6 +52,22 @@ pub(super) fn web_surface_site_permissions_for_tab(
|
||||
.collect()
|
||||
}
|
||||
|
||||
pub(super) fn web_surface_site_permissions_for_core_tab(
|
||||
core: &BrowserCore,
|
||||
tab: &BrowserTab,
|
||||
) -> Vec<WebSurfaceSitePermission> {
|
||||
let Ok(Some(origin)) = SiteOrigin::from_url(tab.url()) else {
|
||||
return Vec::new();
|
||||
};
|
||||
|
||||
core.site_permissions_for_profile_origin(tab.profile_id(), &origin)
|
||||
.into_iter()
|
||||
.map(|entry| {
|
||||
WebSurfaceSitePermission::new(entry.origin().clone(), entry.feature(), entry.decision())
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use std::error::Error;
|
||||
|
||||
Reference in New Issue
Block a user