[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