Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(426)

Unified Diff: Source/core/dom/DOMArrayBufferView.h

Issue 1179373004: Add DOMSharedArrayBuffer type (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: merge master Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/dom/DOMArrayBufferBase.h ('k') | Source/core/dom/DOMDataView.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « Source/core/dom/DOMArrayBufferBase.h ('k') | Source/core/dom/DOMDataView.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698