aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/canvasrenderingcontext2d.rs
diff options
context:
space:
mode:
authorSendilKumar N <sendilkumarn@live.com>2017-03-09 20:30:01 +0800
committerJosh Matthews <josh@joshmatthews.net>2017-05-19 09:38:50 -0400
commit5acee23f5d46b40c35491de22592a58a9ef5a45b (patch)
tree960083d54ce4929c486cff1e04713ca16cf99a6a /components/script/dom/canvasrenderingcontext2d.rs
parentd855c929ef32e8f7d4bc15ba726e8eb5f8ad8e05 (diff)
downloadservo-5acee23f5d46b40c35491de22592a58a9ef5a45b.tar.gz
servo-5acee23f5d46b40c35491de22592a58a9ef5a45b.zip
Use the origin of the actual image response when determining if a canvas is origin clean.
Diffstat (limited to 'components/script/dom/canvasrenderingcontext2d.rs')
-rw-r--r--components/script/dom/canvasrenderingcontext2d.rs21
1 files changed, 8 insertions, 13 deletions
diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs
index a5ec8d233b6..348ec08aced 100644
--- a/components/script/dom/canvasrenderingcontext2d.rs
+++ b/components/script/dom/canvasrenderingcontext2d.rs
@@ -32,7 +32,7 @@ use dom::htmlcanvaselement::HTMLCanvasElement;
use dom::htmlcanvaselement::utils as canvas_utils;
use dom::htmlimageelement::HTMLImageElement;
use dom::imagedata::ImageData;
-use dom::node::{Node, NodeDamage, window_from_node};
+use dom::node::{document_from_node, Node, NodeDamage, window_from_node};
use dom_struct::dom_struct;
use euclid::matrix2d::Matrix2D;
use euclid::point::Point2D;
@@ -228,16 +228,11 @@ impl CanvasRenderingContext2D {
}
HTMLImageElementOrHTMLCanvasElementOrCanvasRenderingContext2D::CanvasRenderingContext2D(image) =>
image.origin_is_clean(),
- HTMLImageElementOrHTMLCanvasElementOrCanvasRenderingContext2D::HTMLImageElement(image) =>
- match image.get_url() {
- None => true,
- Some(url) => {
- // TODO(zbarsky): we should check the origin of the image against
- // the entry settings object, but for now check it against the canvas' doc.
- let node: &Node = &*self.canvas.upcast();
- url.origin() == node.owner_doc().url().origin()
- }
- }
+ HTMLImageElementOrHTMLCanvasElementOrCanvasRenderingContext2D::HTMLImageElement(image) => {
+ let image_origin = image.get_origin().expect("Image's origin is missing");
+ let document = document_from_node(&*self.canvas);
+ document.url().clone().origin() == image_origin
+ }
}
}
@@ -429,8 +424,8 @@ impl CanvasRenderingContext2D {
};
let img = match self.request_image_from_cache(url) {
- ImageResponse::Loaded(img) => img,
- ImageResponse::PlaceholderLoaded(_) |
+ ImageResponse::Loaded(img, _) => img,
+ ImageResponse::PlaceholderLoaded(_, _) |
ImageResponse::None |
ImageResponse::MetadataLoaded(_) => {
return None;