| 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
 | 
| 
 |