| Index: Source/core/dom/DOMArrayBufferView.h
|
| diff --git a/Source/core/dom/DOMArrayBufferView.h b/Source/core/dom/DOMArrayBufferView.h
|
| index c19594f7c21cf82ab968a115a57fe3f212cb8212..846a1f96b0e6cd209ffe12eab1a47a259b1c7cb1 100644
|
| --- a/Source/core/dom/DOMArrayBufferView.h
|
| +++ b/Source/core/dom/DOMArrayBufferView.h
|
| @@ -8,6 +8,7 @@
|
| #include "bindings/core/v8/ScriptWrappable.h"
|
| #include "core/CoreExport.h"
|
| #include "core/dom/DOMArrayBuffer.h"
|
| +#include "core/dom/DOMSharedArrayBuffer.h"
|
| #include "wtf/ArrayBufferView.h"
|
| #include "wtf/RefCounted.h"
|
|
|
| @@ -32,9 +33,28 @@ public:
|
|
|
| PassRefPtr<DOMArrayBuffer> buffer() const
|
| {
|
| - if (!m_domArrayBuffer)
|
| + ASSERT(!isShared());
|
| + if (!m_domArrayBuffer) {
|
| m_domArrayBuffer = DOMArrayBuffer::create(view()->buffer());
|
| - return m_domArrayBuffer;
|
| + }
|
| + return static_pointer_cast<DOMArrayBuffer>(m_domArrayBuffer);
|
| + }
|
| +
|
| + PassRefPtr<DOMSharedArrayBuffer> bufferShared() const
|
| + {
|
| + ASSERT(isShared());
|
| + if (!m_domArrayBuffer) {
|
| + m_domArrayBuffer = DOMSharedArrayBuffer::create(view()->buffer());
|
| + }
|
| + return static_pointer_cast<DOMSharedArrayBuffer>(m_domArrayBuffer);
|
| + }
|
| +
|
| + PassRefPtr<DOMArrayBufferBase> bufferBase() const
|
| + {
|
| + if (isShared()) {
|
| + return bufferShared();
|
| + }
|
| + return buffer();
|
| }
|
|
|
| const WTF::ArrayBufferView* view() const { return m_bufferView.get(); }
|
| @@ -46,6 +66,7 @@ public:
|
| unsigned byteOffset() const { return view()->byteOffset(); }
|
| unsigned byteLength() const { return view()->byteLength(); }
|
| void setNeuterable(bool flag) { return view()->setNeuterable(flag); }
|
| + bool isShared() const { return view()->isShared(); }
|
|
|
| virtual v8::Local<v8::Object> wrap(v8::Isolate*, v8::Local<v8::Object> creationContext) override
|
| {
|
| @@ -64,7 +85,7 @@ protected:
|
| {
|
| ASSERT(m_bufferView);
|
| }
|
| - DOMArrayBufferView(PassRefPtr<WTF::ArrayBufferView> bufferView, PassRefPtr<DOMArrayBuffer> domArrayBuffer)
|
| + DOMArrayBufferView(PassRefPtr<WTF::ArrayBufferView> bufferView, PassRefPtr<DOMArrayBufferBase> domArrayBuffer)
|
| : m_bufferView(bufferView), m_domArrayBuffer(domArrayBuffer)
|
| {
|
| ASSERT(m_bufferView);
|
| @@ -74,7 +95,7 @@ protected:
|
|
|
| private:
|
| RefPtr<WTF::ArrayBufferView> m_bufferView;
|
| - mutable RefPtr<DOMArrayBuffer> m_domArrayBuffer;
|
| + mutable RefPtr<DOMArrayBufferBase> m_domArrayBuffer;
|
| };
|
|
|
| } // namespace blink
|
|
|