summaryrefslogtreecommitdiffstats
path: root/WebCore/bindings/js/JSDataViewCustom.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/bindings/js/JSDataViewCustom.cpp')
-rw-r--r--WebCore/bindings/js/JSDataViewCustom.cpp174
1 files changed, 0 insertions, 174 deletions
diff --git a/WebCore/bindings/js/JSDataViewCustom.cpp b/WebCore/bindings/js/JSDataViewCustom.cpp
deleted file mode 100644
index f17e0e1..0000000
--- a/WebCore/bindings/js/JSDataViewCustom.cpp
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * Copyright (C) 2010 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-
-#if ENABLE(3D_CANVAS) || ENABLE(BLOB)
-
-#include "JSDataView.h"
-
-#include "DataView.h"
-#include "ExceptionCode.h"
-#include "JSArrayBufferViewHelper.h"
-#include <wtf/MathExtras.h>
-
-using namespace JSC;
-
-namespace WebCore {
-
-enum DataViewAccessType {
- AccessDataViewMemberAsInt8,
- AccessDataViewMemberAsUint8,
- AccessDataViewMemberAsFloat32,
- AccessDataViewMemberAsFloat64
-};
-
-JSValue toJS(ExecState* exec, JSDOMGlobalObject* globalObject, DataView* object)
-{
- return getDOMObjectWrapper<JSDataView>(exec, globalObject, object);
-}
-
-EncodedJSValue JSC_HOST_CALL JSDataViewConstructor::constructJSDataView(ExecState* exec)
-{
- if (exec->argument(0).isNull() || !exec->argument(0).isObject())
- return throwVMTypeError(exec);
-
- RefPtr<DataView> view = constructArrayBufferViewWithArrayBufferArgument<DataView, char>(exec);
- if (!view.get()) {
- setDOMException(exec, INDEX_SIZE_ERR);
- return JSValue::encode(jsUndefined());
- }
-
- JSDataViewConstructor* jsConstructor = static_cast<JSDataViewConstructor*>(exec->callee());
- return JSValue::encode(asObject(toJS(exec, jsConstructor->globalObject(), view.get())));
-}
-
-static JSValue getDataViewMember(ExecState* exec, DataViewAccessType type)
-{
- JSValue thisValue = exec->hostThisValue();
- if (!thisValue.inherits(&JSDataView::s_info))
- return throwTypeError(exec);
- JSDataView* castedThis = static_cast<JSDataView*>(asObject(thisValue));
- DataView* imp = static_cast<DataView*>(castedThis->impl());
- if (exec->argumentCount() < 1)
- return throwError(exec, createSyntaxError(exec, "Not enough arguments"));
- ExceptionCode ec = 0;
- unsigned byteOffset = exec->argument(0).toUInt32(exec);
- if (exec->hadException())
- return jsUndefined();
-
- bool littleEndian = false;
- if (exec->argumentCount() > 1 && (type == AccessDataViewMemberAsFloat32 || type == AccessDataViewMemberAsFloat64)) {
- littleEndian = exec->argument(1).toBoolean(exec);
- if (exec->hadException())
- return jsUndefined();
- }
-
- JSC::JSValue result;
- switch (type) {
- case AccessDataViewMemberAsInt8:
- result = jsNumber(imp->getInt8(byteOffset, ec));
- break;
- case AccessDataViewMemberAsUint8:
- result = jsNumber(imp->getUint8(byteOffset, ec));
- break;
- case AccessDataViewMemberAsFloat32:
- case AccessDataViewMemberAsFloat64: {
- double value = (type == AccessDataViewMemberAsFloat32) ? imp->getFloat32(byteOffset, littleEndian, ec) : imp->getFloat64(byteOffset, littleEndian, ec);
- result = isnan(value) ? JSValue(nonInlineNaN()) : jsNumber(value);
- break;
- } default:
- ASSERT_NOT_REACHED();
- break;
- }
- setDOMException(exec, ec);
- return result;
-}
-
-JSValue JSC_HOST_CALL JSDataView::getInt8(ExecState* exec)
-{
- return getDataViewMember(exec, AccessDataViewMemberAsInt8);
-}
-
-JSValue JSC_HOST_CALL JSDataView::getUint8(ExecState* exec)
-{
- return getDataViewMember(exec, AccessDataViewMemberAsUint8);
-}
-
-JSValue JSC_HOST_CALL JSDataView::getFloat32(ExecState* exec)
-{
- return getDataViewMember(exec, AccessDataViewMemberAsFloat32);
-}
-
-JSValue JSC_HOST_CALL JSDataView::getFloat64(ExecState* exec)
-{
- return getDataViewMember(exec, AccessDataViewMemberAsFloat64);
-}
-
-static JSValue setDataViewMember(ExecState* exec, DataViewAccessType type)
-{
- JSValue thisValue = exec->hostThisValue();
- if (!thisValue.inherits(&JSDataView::s_info))
- return throwTypeError(exec);
- JSDataView* castedThis = static_cast<JSDataView*>(asObject(thisValue));
- DataView* imp = static_cast<DataView*>(castedThis->impl());
- if (exec->argumentCount() < 2)
- return throwError(exec, createSyntaxError(exec, "Not enough arguments"));
- ExceptionCode ec = 0;
- unsigned byteOffset = exec->argument(0).toUInt32(exec);
- if (exec->hadException())
- return jsUndefined();
- int value = exec->argument(1).toInt32(exec);
- if (exec->hadException())
- return jsUndefined();
-
- switch (type) {
- case AccessDataViewMemberAsInt8:
- imp->setInt8(byteOffset, static_cast<char>(value), ec);
- break;
- case AccessDataViewMemberAsUint8:
- imp->setUint8(byteOffset, static_cast<unsigned char>(value), ec);
- break;
- default:
- ASSERT_NOT_REACHED();
- break;
- }
- setDOMException(exec, ec);
- return jsUndefined();
-}
-
-JSValue JSC_HOST_CALL JSDataView::setInt8(ExecState* exec)
-{
- return setDataViewMember(exec, AccessDataViewMemberAsInt8);
-}
-
-JSValue JSC_HOST_CALL JSDataView::setUint8(ExecState* exec)
-{
- return setDataViewMember(exec, AccessDataViewMemberAsUint8);
-}
-
-} // namespace WebCore
-
-#endif // ENABLE(3D_CANVAS) || ENABLE(BLOB)