diff options
author | Lars Knoll <lars.knoll@qt.io> | 2018-08-10 13:04:42 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@qt.io> | 2018-08-20 20:32:27 +0000 |
commit | 36ea464b3dcce6319c5252553d48dd5ac6ba8f41 (patch) | |
tree | 947dd32727ebbebd2e7d94a2306406c3f2b6ac82 /src/qml/jsruntime/qv4arraybuffer_p.h | |
parent | 59a90975bb7aa2dbbfe0986f19da1053275c6fef (diff) |
Implement the $262.detachArrayBuffer() method for testing
Change-Id: I30ddca4402254e1cde17712d07ea0bff2ea5f595
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/jsruntime/qv4arraybuffer_p.h')
-rw-r--r-- | src/qml/jsruntime/qv4arraybuffer_p.h | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/qml/jsruntime/qv4arraybuffer_p.h b/src/qml/jsruntime/qv4arraybuffer_p.h index 089dbc522f..036d141c2f 100644 --- a/src/qml/jsruntime/qv4arraybuffer_p.h +++ b/src/qml/jsruntime/qv4arraybuffer_p.h @@ -69,7 +69,15 @@ struct Q_QML_PRIVATE_EXPORT ArrayBuffer : Object { void destroy(); QTypedArrayData<char> *data; - uint byteLength() const { return data->size; } + uint byteLength() const { return data ? data->size : 0; } + + void detachArrayBuffer() { + if (data && !data->ref.deref()) + QTypedArrayData<char>::deallocate(data); + data = nullptr; + } + bool isDetachedBuffer() const { return !data; } + bool isSharedArrayBuffer() const { return false; } }; } @@ -96,8 +104,11 @@ struct Q_QML_PRIVATE_EXPORT ArrayBuffer : Object char *data() { detach(); return d()->data ? d()->data->data() : nullptr; } const char *constData() { detach(); return d()->data ? d()->data->data() : nullptr; } -private: + bool isShared() { return d()->data && d()->data->ref.isShared(); } + bool isDetachedBuffer() const { return !d()->data; } + bool isSharedArrayBuffer() const { return false; } void detach(); + void detachArrayBuffer() { d()->detachArrayBuffer(); } }; struct ArrayBufferPrototype: Object |