aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosh Matthews <josh@joshmatthews.net>2019-10-01 17:54:43 -0400
committerJosh Matthews <josh@joshmatthews.net>2019-10-04 09:22:21 -0400
commit583536c9406e685405d5b28da99dd8cab94c7d66 (patch)
treef7e62e5363d54a45ae09c9e9537090b7906f0354
parent81a67aed9e0cc866f4689e8d7a5541198d75e445 (diff)
downloadservo-583536c9406e685405d5b28da99dd8cab94c7d66.tar.gz
servo-583536c9406e685405d5b28da99dd8cab94c7d66.zip
Use the paint worklet's base URL for the 2d canvas' origin checks.
-rw-r--r--components/script/dom/canvasrenderingcontext2d.rs11
1 files changed, 10 insertions, 1 deletions
diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs
index e2495816408..380b9a8312a 100644
--- a/components/script/dom/canvasrenderingcontext2d.rs
+++ b/components/script/dom/canvasrenderingcontext2d.rs
@@ -24,6 +24,7 @@ use crate::dom::globalscope::GlobalScope;
use crate::dom::htmlcanvaselement::{CanvasContext, HTMLCanvasElement};
use crate::dom::imagedata::ImageData;
use crate::dom::node::{Node, NodeDamage};
+use crate::dom::paintworkletglobalscope::PaintWorkletGlobalScope;
use crate::dom::textmetrics::TextMetrics;
use crate::unpremultiplytable::UNPREMULTIPLY_TABLE;
use canvas_traits::canvas::{Canvas2dMsg, CanvasId, CanvasMsg};
@@ -144,6 +145,14 @@ impl CanvasState {
.unwrap();
let (ipc_renderer, canvas_id) = receiver.recv().unwrap();
debug!("Done.");
+ // Worklets always receive a unique origin. This messes with fetching
+ // cached images in the case of paint worklets, since the image cache
+ // is keyed on the origin requesting the image data.
+ let origin = if global.is::<PaintWorkletGlobalScope>() {
+ global.api_base_url().origin()
+ } else {
+ global.origin().immutable().clone()
+ };
CanvasState {
ipc_renderer: ipc_renderer,
canvas_id: canvas_id,
@@ -153,7 +162,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(),
+ origin,
}
}