summaryrefslogtreecommitdiffstats
path: root/WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp')
-rw-r--r--WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp85
1 files changed, 78 insertions, 7 deletions
diff --git a/WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp b/WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp
index ff2be37..de4fcbf 100644
--- a/WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp
+++ b/WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp
@@ -52,6 +52,7 @@
#include "Storage.h"
#include "V8Binding.h"
#include "V8BindingDOMWindow.h"
+#include "V8BindingMacros.h"
#include "V8BindingState.h"
#include "V8CustomEventListener.h"
#include "V8Database.h"
@@ -68,6 +69,16 @@
#if ENABLE(WEB_SOCKETS)
#include "WebSocket.h"
#endif
+#if ENABLE(3D_CANVAS)
+#include "V8ArrayBuffer.h"
+#include "V8Int8Array.h"
+#include "V8FloatArray.h"
+#include "V8Int32Array.h"
+#include "V8Int16Array.h"
+#include "V8Uint8Array.h"
+#include "V8Uint32Array.h"
+#include "V8Uint16Array.h"
+#endif
#include "WindowFeatures.h"
// Horizontal and vertical offset, from the parent content area, around newly
@@ -248,6 +259,61 @@ v8::Handle<v8::Value> V8DOMWindow::OptionAccessorGetter(v8::Local<v8::String> na
return V8DOMWrapper::getConstructor(&V8HTMLOptionElementConstructor::info, window);
}
+#if ENABLE(3D_CANVAS)
+
+// Temporary aliases to keep current WebGL content working during transition period to TypedArray spec.
+// To be removed before WebGL spec is finalized. (FIXME)
+v8::Handle<v8::Value> V8DOMWindow::WebGLArrayBufferAccessorGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info)
+{
+ DOMWindow* window = V8DOMWindow::toNative(info.Holder());
+ return V8DOMWrapper::getConstructor(&V8ArrayBuffer::info, window);
+}
+
+v8::Handle<v8::Value> V8DOMWindow::WebGLByteArrayAccessorGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info)
+{
+ DOMWindow* window = V8DOMWindow::toNative(info.Holder());
+ return V8DOMWrapper::getConstructor(&V8Int8Array::info, window);
+}
+
+v8::Handle<v8::Value> V8DOMWindow::WebGLUnsignedByteArrayAccessorGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info)
+{
+ DOMWindow* window = V8DOMWindow::toNative(info.Holder());
+ return V8DOMWrapper::getConstructor(&V8Uint8Array::info, window);
+}
+
+v8::Handle<v8::Value> V8DOMWindow::WebGLShortArrayAccessorGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info)
+{
+ DOMWindow* window = V8DOMWindow::toNative(info.Holder());
+ return V8DOMWrapper::getConstructor(&V8Int16Array::info, window);
+}
+
+v8::Handle<v8::Value> V8DOMWindow::WebGLUnsignedShortArrayAccessorGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info)
+{
+ DOMWindow* window = V8DOMWindow::toNative(info.Holder());
+ return V8DOMWrapper::getConstructor(&V8Uint16Array::info, window);
+}
+
+v8::Handle<v8::Value> V8DOMWindow::WebGLIntArrayAccessorGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info)
+{
+ DOMWindow* window = V8DOMWindow::toNative(info.Holder());
+ return V8DOMWrapper::getConstructor(&V8Int32Array::info, window);
+}
+
+v8::Handle<v8::Value> V8DOMWindow::WebGLUnsignedIntArrayAccessorGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info)
+{
+ DOMWindow* window = V8DOMWindow::toNative(info.Holder());
+ return V8DOMWrapper::getConstructor(&V8Uint32Array::info, window);
+}
+
+v8::Handle<v8::Value> V8DOMWindow::WebGLFloatArrayAccessorGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info)
+{
+ DOMWindow* window = V8DOMWindow::toNative(info.Holder());
+ return V8DOMWrapper::getConstructor(&V8FloatArray::info, window);
+}
+
+#endif
+
+
v8::Handle<v8::Value> V8DOMWindow::addEventListenerCallback(const v8::Arguments& args)
{
INC_STATS("DOM.DOMWindow.addEventListener()");
@@ -719,21 +785,26 @@ v8::Handle<v8::Value> V8DOMWindow::openDatabaseCallback(const v8::Arguments& arg
{
INC_STATS("DOM.DOMWindow.openDatabase");
if (args.Length() < 4)
- return v8::Undefined();
+ return throwError(SYNTAX_ERR);
+
+ EXCEPTION_BLOCK(String, name, toWebCoreString(args[0]));
+ EXCEPTION_BLOCK(String, version, toWebCoreString(args[1]));
+ EXCEPTION_BLOCK(String, displayName, toWebCoreString(args[2]));
+ EXCEPTION_BLOCK(unsigned long, estimatedSize, args[3]->Uint32Value());
DOMWindow* imp = V8DOMWindow::toNative(args.Holder());
if (!V8BindingSecurity::canAccessFrame(V8BindingState::Only(), imp->frame(), true))
return v8::Undefined();
- ExceptionCode ec = 0;
- String name = toWebCoreString(args[0]);
- String version = toWebCoreString(args[1]);
- String displayName = toWebCoreString(args[2]);
- unsigned long estimatedSize = args[3]->IntegerValue();
RefPtr<DatabaseCallback> creationCallback;
- if ((args.Length() >= 5) && args[4]->IsObject())
+ if (args.Length() >= 5) {
+ if (!args[4]->IsObject())
+ return throwError(TYPE_MISMATCH_ERR);
+
creationCallback = V8DatabaseCallback::create(args[4], imp->frame());
+ }
+ ExceptionCode ec = 0;
v8::Handle<v8::Value> result = toV8(imp->openDatabase(name, version, displayName, estimatedSize, creationCallback.release(), ec));
V8Proxy::setDOMException(ec);