aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/htmlcanvaselement.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/htmlcanvaselement.rs')
-rw-r--r--components/script/dom/htmlcanvaselement.rs18
1 files changed, 13 insertions, 5 deletions
diff --git a/components/script/dom/htmlcanvaselement.rs b/components/script/dom/htmlcanvaselement.rs
index 38969860722..45c1916f928 100644
--- a/components/script/dom/htmlcanvaselement.rs
+++ b/components/script/dom/htmlcanvaselement.rs
@@ -10,6 +10,7 @@ use dom::bindings::codegen::Bindings::HTMLCanvasElementBinding;
use dom::bindings::codegen::Bindings::HTMLCanvasElementBinding::HTMLCanvasElementMethods;
use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLContextAttributes;
use dom::bindings::codegen::UnionTypes::CanvasRenderingContext2DOrWebGLRenderingContext;
+use dom::bindings::conversions::ConversionResult;
use dom::bindings::error::{Error, Fallible};
use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
@@ -27,6 +28,7 @@ use euclid::size::Size2D;
use image::ColorType;
use image::png::PNGEncoder;
use ipc_channel::ipc::{self, IpcSender};
+use js::error::throw_type_error;
use js::jsapi::{HandleValue, JSContext};
use offscreen_gl_context::GLContextAttributes;
use rustc_serialize::base64::{STANDARD, ToBase64};
@@ -159,11 +161,17 @@ impl HTMLCanvasElement {
let size = self.get_size();
let attrs = if let Some(webgl_attributes) = attrs {
- if let Ok(ref attrs) = unsafe { WebGLContextAttributes::new(cx, webgl_attributes) } {
- From::from(attrs)
- } else {
- debug!("Unexpected error on conversion of WebGLContextAttributes");
- return None;
+ match unsafe {
+ WebGLContextAttributes::new(cx, webgl_attributes) } {
+ Ok(ConversionResult::Success(ref attrs)) => From::from(attrs),
+ Ok(ConversionResult::Failure(ref error)) => {
+ unsafe { throw_type_error(cx, &error); }
+ return None;
+ }
+ _ => {
+ debug!("Unexpected error on conversion of WebGLContextAttributes");
+ return None;
+ }
}
} else {
GLContextAttributes::default()