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

[Public WebGL] Please make the ArrayBufferView constructor visible

Dear WebGL working group,

ArrayBufferView is currently marked as [NoInterfaceObject] in the
Typed Array IDL.

Higher-level abstractions need to be able to write "x instanceof
ArrayBufferView". Currently, implementors have to do horrible things
to work around the lack of an ArrayBufferView name. For example,
Google Chrome's authors recommend this hack to obtain a reference to

var ArrayBufferView = (new Uint8Array(0)).__proto__.__proto__.constructor;
Source: https://code.google.com/p/chromium/issues/detail?id=60449

Please make ArrayBufferView available in the global namespace, so
instanceof checks can work. I would suggest that the constructor
should throw a TypeError exception if called, to be consistent with
the current behavior of the above workaround. I haven't thought too
much about that though. Also, given the above workaround, I don't
think there is any security implication in making ArrayBufferView
available in the global namespace.

In case you're looking for a real-life application: I am the author of
dropbox.js, a JavaScript library that serves as a client to the
Dropbox API. I want to make it easy to my users to write files, so I
let them pass anything that contains data -- Strings, Files, Blobs,
ArrayBuffers, ArrayBufferViews. Not having ArrayBufferView available
means I'll have to use the horrible hack suggested by the Chrome

Please consider making this change, so future Web developers can have
a better life!

Thank you very much,
    Victor Costan

Victor Costan | victor@costan.us | www.costan.us | +1 (646) 434-8887
Massachusetts Institute of Technology
Department of Electrical Engineering and Computer Science, B.S. '07,
M.Eng '08, Ph.D. '14
Sloan School of Management, B.S. '07

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