[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc
crogers at google.com
crogers at google.com
Wed Dec 22 13:15:11 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit 29d0a3821f2a5bf3f3dc4b74e3b22ad54c25ace0
Author: crogers at google.com <crogers at google.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Thu Sep 9 22:22:17 2010 +0000
2010-09-09 Chris Rogers <crogers at google.com>
Reviewed by Kenneth Russell.
Add setRange() and zeroRange() methods to TypedArrayBase
https://bugs.webkit.org/show_bug.cgi?id=45419
No new tests since adding new methods which are not yet called anywhere.
* html/canvas/ArrayBufferView.cpp:
(WebCore::ArrayBufferView::setRangeImpl):
(WebCore::ArrayBufferView::zeroRangeImpl):
* html/canvas/ArrayBufferView.h:
* html/canvas/TypedArrayBase.h:
(WebCore::TypedArrayBase::setRange):
(WebCore::TypedArrayBase::zeroRange):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@67120 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index f3696b4..a561952 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,20 @@
+2010-09-09 Chris Rogers <crogers at google.com>
+
+ Reviewed by Kenneth Russell.
+
+ Add setRange() and zeroRange() methods to TypedArrayBase
+ https://bugs.webkit.org/show_bug.cgi?id=45419
+
+ No new tests since adding new methods which are not yet called anywhere.
+
+ * html/canvas/ArrayBufferView.cpp:
+ (WebCore::ArrayBufferView::setRangeImpl):
+ (WebCore::ArrayBufferView::zeroRangeImpl):
+ * html/canvas/ArrayBufferView.h:
+ * html/canvas/TypedArrayBase.h:
+ (WebCore::TypedArrayBase::setRange):
+ (WebCore::TypedArrayBase::zeroRange):
+
2010-09-09 Robert Hogan <robert at webkit.org>
Reviewed by Andreas Kling.
diff --git a/WebCore/html/canvas/ArrayBufferView.cpp b/WebCore/html/canvas/ArrayBufferView.cpp
index bd22f88..485d18b 100644
--- a/WebCore/html/canvas/ArrayBufferView.cpp
+++ b/WebCore/html/canvas/ArrayBufferView.cpp
@@ -59,6 +59,34 @@ void ArrayBufferView::setImpl(ArrayBufferView* array, unsigned byteOffset, Excep
memmove(base + byteOffset, array->baseAddress(), array->byteLength());
}
+void ArrayBufferView::setRangeImpl(const char* data, size_t dataByteLength, unsigned byteOffset, ExceptionCode& ec)
+{
+ if (byteOffset > byteLength()
+ || byteOffset + dataByteLength > byteLength()
+ || byteOffset + dataByteLength < byteOffset) {
+ // Out of range offset or overflow
+ ec = INDEX_SIZE_ERR;
+ return;
+ }
+
+ char* base = static_cast<char*>(baseAddress());
+ memmove(base + byteOffset, data, dataByteLength);
+}
+
+void ArrayBufferView::zeroRangeImpl(unsigned byteOffset, size_t rangeByteLength, ExceptionCode& ec)
+{
+ if (byteOffset > byteLength()
+ || byteOffset + rangeByteLength > byteLength()
+ || byteOffset + rangeByteLength < byteOffset) {
+ // Out of range offset or overflow
+ ec = INDEX_SIZE_ERR;
+ return;
+ }
+
+ char* base = static_cast<char*>(baseAddress());
+ memset(base + byteOffset, 0, rangeByteLength);
+}
+
void ArrayBufferView::calculateOffsetAndLength(int start, int end, unsigned arraySize,
unsigned* offset, unsigned* length)
{
diff --git a/WebCore/html/canvas/ArrayBufferView.h b/WebCore/html/canvas/ArrayBufferView.h
index 29ad691..ee685b1 100644
--- a/WebCore/html/canvas/ArrayBufferView.h
+++ b/WebCore/html/canvas/ArrayBufferView.h
@@ -73,6 +73,10 @@ class ArrayBufferView : public RefCounted<ArrayBufferView> {
void setImpl(ArrayBufferView* array, unsigned byteOffset, ExceptionCode& ec);
+ void setRangeImpl(const char* data, size_t dataByteLength, unsigned byteOffset, ExceptionCode& ec);
+
+ void zeroRangeImpl(unsigned byteOffset, size_t rangeByteLength, ExceptionCode& ec);
+
static void calculateOffsetAndLength(int start, int end, unsigned arraySize,
unsigned* offset, unsigned* length);
diff --git a/WebCore/html/canvas/TypedArrayBase.h b/WebCore/html/canvas/TypedArrayBase.h
index e69c2b5..77283df 100644
--- a/WebCore/html/canvas/TypedArrayBase.h
+++ b/WebCore/html/canvas/TypedArrayBase.h
@@ -42,6 +42,16 @@ class TypedArrayBase : public ArrayBufferView {
setImpl(array, offset * sizeof(T), ec);
}
+ void setRange(const T* data, size_t dataLength, unsigned offset, ExceptionCode& ec)
+ {
+ setRangeImpl(reinterpret_cast<const char*>(data), dataLength * sizeof(T), offset * sizeof(T), ec);
+ }
+
+ void zeroRange(unsigned offset, size_t length, ExceptionCode& ec)
+ {
+ zeroRangeImpl(offset * sizeof(T), length * sizeof(T), ec);
+ }
+
// Overridden from ArrayBufferView. This must be public because of
// rules about inheritance of members in template classes, and
// because it is accessed via pointers to subclasses.
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list