[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Public WebGL] Firefox 4 and blacklist reporting



On Mon, Mar 28, 2011 at 11:18 AM, Benoit Jacob <bjacob@mozilla.com> wrote:
> Hi,
>
> ________________________________
>
> Hi all -- I work on Google Body. Our latest "check WebGL capabilities" code
> will look approximately like this:
>     *    *    *
>
> // 0 = OK. 1 = no GL. 2 = GL couldn't initialize. Other = error text.
> function testGL() {
>   try {
>     if (!window.WebGLRenderingContext) { return 1; }
>     var canvas = document.getElementById('gltest');
>     var gl = canvas.getContext('webgl');
>     if (!gl) {
>       gl = canvas.getContext('experimental-webgl');
>     }
>     if (!gl) { return 2; }
>     return 0;
>   } catch(err) {
>     // [report err.message]
>   }
> }
>     *    *    *
>
> Using FF4/Mac on OS X 10.5.8, the above throws an exception, with
> err.message =
>     "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE)
> [nsIDOMHTMLCanvasElement.getContext]"
>
> I understand from the Firefox blocklist wiki page that Firefox is
> blacklisting WebGL. I'm curious why this is being reported via an exception.
>
> Does the spec say something about that? Or have other browsers agreed on
> behavior in that case?

The spec says that getContext() is supposed to return null, not throw
an exception, and report a webglcontextcreationerror. See
http://www.khronos.org/registry/webgl/specs/latest/#5.14.3 .

-Ken

> The problem I'm having is that I want to show different UI for these two
> cases:
>   - GL is blacklisted (=> fine, can take user to troubleshooting page and
> coach them through it)
>   - A Javascript error occurred (=> not fine, need to investigate)
> and I'm not sure what the best way going forward is to distinguish those
> cases.
>
> I think I understand your concern: that adding this try {...} catch block
> may hide javascript errors. But so far, this had been the standard way of
> creating WebGL contexts, see the WebGL conformance tests, get.webgl.org,
> etc.
>
> If other browser implementers think that we should not generate JS
> exceptions in getContext() on blacklisted drivers/systems, I'm not opposed
> to such a change. Would getContext() then just return null? I couldn't find
> in the spec anything about errors in getContext and return values?
>
> Benoit
>

-----------------------------------------------------------
You are currently subscribed to public_webgl@khronos.org.
To unsubscribe, send an email to majordomo@khronos.org with
the following command in the body of your email:
unsubscribe public_webgl
-----------------------------------------------------------