From cfd446218b9d84e9c6f1b078f8d73fb6df7a8277 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Wed, 3 Oct 2018 10:43:41 +0200 Subject: [PATCH] Slightly clean up the final URL creation in canvas.toDataURL --- components/script/dom/htmlcanvaselement.rs | 23 ++++++++++------------ 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/components/script/dom/htmlcanvaselement.rs b/components/script/dom/htmlcanvaselement.rs index 2d50830fba1..2a84accf37c 100644 --- a/components/script/dom/htmlcanvaselement.rs +++ b/components/script/dom/htmlcanvaselement.rs @@ -396,19 +396,16 @@ impl HTMLCanvasElementMethods for HTMLCanvasElement { }, }; - // Only handle image/png for now. - let mime_type = "image/png"; - - let mut encoded = Vec::new(); - { - let encoder: PNGEncoder<&mut Vec> = PNGEncoder::new(&mut encoded); - encoder - .encode(&raw_data, self.Width(), self.Height(), ColorType::RGBA(8)) - .unwrap(); - } - - let encoded = base64::encode(&encoded); - Ok(USVString(format!("data:{};base64,{}", mime_type, encoded))) + // FIXME: Only handle image/png for now. + let mut png = Vec::new(); + PNGEncoder::new(&mut png) + .encode(&raw_data, self.Width(), self.Height(), ColorType::RGBA(8)) + .unwrap(); + let mut url = "data:image/png;base64,".to_owned(); + // FIXME(nox): Should this use base64::URL_SAFE? + // FIXME(nox): https://github.com/alicemaz/rust-base64/pull/56 + base64::encode_config_buf(&png, base64::STANDARD, &mut url); + Ok(USVString(url)) } }