aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/canvasrenderingcontext2d.rs
diff options
context:
space:
mode:
authorJosh Matthews <josh@joshmatthews.net>2019-10-01 13:11:50 -0400
committerJosh Matthews <josh@joshmatthews.net>2019-10-04 09:22:21 -0400
commit81a67aed9e0cc866f4689e8d7a5541198d75e445 (patch)
tree65c5496febb57bab609aa1c62a771ae06a9ee49b /components/script/dom/canvasrenderingcontext2d.rs
parentea4600828861010da859399d3d432e2252619c2d (diff)
downloadservo-81a67aed9e0cc866f4689e8d7a5541198d75e445.tar.gz
servo-81a67aed9e0cc866f4689e8d7a5541198d75e445.zip
Double key image cache by requesting origin, and store CORS status with cached images.
Diffstat (limited to 'components/script/dom/canvasrenderingcontext2d.rs')
-rw-r--r--components/script/dom/canvasrenderingcontext2d.rs5
1 files changed, 4 insertions, 1 deletions
diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs
index 1faf9878b53..e2495816408 100644
--- a/components/script/dom/canvasrenderingcontext2d.rs
+++ b/components/script/dom/canvasrenderingcontext2d.rs
@@ -47,7 +47,7 @@ use net_traits::image_cache::UsePlaceholder;
use pixels::PixelFormat;
use profile_traits::ipc as profiled_ipc;
use script_traits::ScriptMsg;
-use servo_url::ServoUrl;
+use servo_url::{ImmutableOrigin, ServoUrl};
use std::cell::Cell;
use std::str::FromStr;
use std::sync::Arc;
@@ -126,6 +126,7 @@ pub struct CanvasState {
/// The base URL for resolving CSS image URL values.
/// Needed because of https://github.com/servo/servo/issues/17625
base_url: ServoUrl,
+ origin: ImmutableOrigin,
/// Any missing image URLs.
missing_image_urls: DomRefCell<Vec<ServoUrl>>,
saved_states: DomRefCell<Vec<CanvasContextState>>,
@@ -152,6 +153,7 @@ impl CanvasState {
base_url: global.api_base_url(),
missing_image_urls: DomRefCell::new(Vec::new()),
saved_states: DomRefCell::new(Vec::new()),
+ origin: global.origin().immutable().clone(),
}
}
@@ -222,6 +224,7 @@ impl CanvasState {
fn request_image_from_cache(&self, url: ServoUrl) -> ImageResponse {
let response = self.image_cache.find_image_or_metadata(
url.clone(),
+ self.origin.clone(),
UsePlaceholder::No,
CanRequestImages::No,
);