mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
Refactor ImageCache::find_image_or_metadata API.
This commit is contained in:
parent
7d1f968d52
commit
2742fd2bea
9 changed files with 266 additions and 227 deletions
|
@ -101,22 +101,50 @@ pub enum UsePlaceholder {
|
|||
// ImageCache public API.
|
||||
// ======================================================================
|
||||
|
||||
pub enum ImageCacheResult {
|
||||
Available(ImageOrMetadataAvailable),
|
||||
LoadError,
|
||||
Pending(PendingImageId),
|
||||
ReadyForRequest(PendingImageId),
|
||||
}
|
||||
|
||||
pub trait ImageCache: Sync + Send {
|
||||
fn new(webrender_api: WebrenderIpcSender) -> Self
|
||||
where
|
||||
Self: Sized;
|
||||
|
||||
/// Return any available metadata or image for the given URL,
|
||||
/// or an indication that the image is not yet available if it is in progress,
|
||||
/// or else reserve a slot in the cache for the URL if the consumer can request images.
|
||||
fn find_image_or_metadata(
|
||||
/// Definitively check whether there is a cached, fully loaded image available.
|
||||
fn get_image(
|
||||
&self,
|
||||
url: ServoUrl,
|
||||
origin: ImmutableOrigin,
|
||||
cors_setting: Option<CorsSettings>,
|
||||
) -> Option<Arc<Image>>;
|
||||
|
||||
fn get_cached_image_status(
|
||||
&self,
|
||||
url: ServoUrl,
|
||||
origin: ImmutableOrigin,
|
||||
cors_setting: Option<CorsSettings>,
|
||||
use_placeholder: UsePlaceholder,
|
||||
can_request: CanRequestImages,
|
||||
) -> Result<ImageOrMetadataAvailable, ImageState>;
|
||||
) -> ImageCacheResult;
|
||||
|
||||
/// Add a listener for the provided pending image id, eventually called by
|
||||
/// ImageCacheStore::complete_load.
|
||||
/// If only metadata is available, Available(ImageOrMetadataAvailable) will
|
||||
/// be returned.
|
||||
/// If Available(ImageOrMetadataAvailable::Image) or LoadError is the final value,
|
||||
/// the provided listener will be dropped (consumed & not added to PendingLoad).
|
||||
fn track_image(
|
||||
&self,
|
||||
url: ServoUrl,
|
||||
origin: ImmutableOrigin,
|
||||
cors_setting: Option<CorsSettings>,
|
||||
sender: IpcSender<PendingImageResponse>,
|
||||
use_placeholder: UsePlaceholder,
|
||||
can_request: CanRequestImages,
|
||||
) -> ImageCacheResult;
|
||||
|
||||
/// Add a new listener for the given pending image id. If the image is already present,
|
||||
/// the responder will still receive the expected response.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue