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

Side by Side Diff: third_party/WebKit/Source/core/dom/DOMArrayBufferView.h

Issue 1414553002: Fix out-of-memory crashes related to ArrayBuffer allocation Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 2 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef DOMArrayBufferView_h 5 #ifndef DOMArrayBufferView_h
6 #define DOMArrayBufferView_h 6 #define DOMArrayBufferView_h
7 7
8 #include "bindings/core/v8/ScriptWrappable.h" 8 #include "bindings/core/v8/ScriptWrappable.h"
9 #include "core/CoreExport.h" 9 #include "core/CoreExport.h"
10 #include "core/dom/DOMArrayBuffer.h" 10 #include "core/dom/DOMArrayBuffer.h"
(...skipping 13 matching lines...) Expand all
24 static const ViewType TypeInt16 = WTF::ArrayBufferView::TypeInt16; 24 static const ViewType TypeInt16 = WTF::ArrayBufferView::TypeInt16;
25 static const ViewType TypeUint16 = WTF::ArrayBufferView::TypeUint16; 25 static const ViewType TypeUint16 = WTF::ArrayBufferView::TypeUint16;
26 static const ViewType TypeInt32 = WTF::ArrayBufferView::TypeInt32; 26 static const ViewType TypeInt32 = WTF::ArrayBufferView::TypeInt32;
27 static const ViewType TypeUint32 = WTF::ArrayBufferView::TypeUint32; 27 static const ViewType TypeUint32 = WTF::ArrayBufferView::TypeUint32;
28 static const ViewType TypeFloat32 = WTF::ArrayBufferView::TypeFloat32; 28 static const ViewType TypeFloat32 = WTF::ArrayBufferView::TypeFloat32;
29 static const ViewType TypeFloat64 = WTF::ArrayBufferView::TypeFloat64; 29 static const ViewType TypeFloat64 = WTF::ArrayBufferView::TypeFloat64;
30 static const ViewType TypeDataView = WTF::ArrayBufferView::TypeDataView; 30 static const ViewType TypeDataView = WTF::ArrayBufferView::TypeDataView;
31 31
32 virtual ~DOMArrayBufferView() { } 32 virtual ~DOMArrayBufferView() { }
33 33
34 PassRefPtr<DOMArrayBuffer> buffer() const 34 PassRefPtr<DOMArrayBuffer> bufferOrNull() const
35 { 35 {
36 ASSERT(!isShared()); 36 ASSERT(!isShared());
37 if (!m_domArrayBuffer) { 37 if (!m_domArrayBuffer) {
38 m_domArrayBuffer = DOMArrayBuffer::create(view()->buffer()); 38 m_domArrayBuffer = DOMArrayBuffer::createOrNull(view()->buffer());
39 } 39 }
40 return static_pointer_cast<DOMArrayBuffer>(m_domArrayBuffer); 40 return static_pointer_cast<DOMArrayBuffer>(m_domArrayBuffer);
41 } 41 }
42 42
43 PassRefPtr<DOMSharedArrayBuffer> bufferShared() const 43 PassRefPtr<DOMSharedArrayBuffer> bufferSharedOrNull() const
44 { 44 {
45 ASSERT(isShared()); 45 ASSERT(isShared());
46 if (!m_domArrayBuffer) { 46 if (!m_domArrayBuffer) {
47 m_domArrayBuffer = DOMSharedArrayBuffer::create(view()->buffer()); 47 m_domArrayBuffer = DOMSharedArrayBuffer::createOrNull(view()->buffer ());
48 } 48 }
49 return static_pointer_cast<DOMSharedArrayBuffer>(m_domArrayBuffer); 49 return static_pointer_cast<DOMSharedArrayBuffer>(m_domArrayBuffer);
50 } 50 }
51 51
52 PassRefPtr<DOMArrayBufferBase> bufferBase() const 52 PassRefPtr<DOMArrayBufferBase> bufferBaseOrNull() const
53 { 53 {
54 if (isShared()) { 54 if (isShared()) {
55 return bufferShared(); 55 return bufferSharedOrNull();
56 } 56 }
57 return buffer(); 57 return bufferOrNull();
58 } 58 }
59 59
60 const WTF::ArrayBufferView* view() const { return m_bufferView.get(); } 60 const WTF::ArrayBufferView* view() const { return m_bufferView.get(); }
61 WTF::ArrayBufferView* view() { return m_bufferView.get(); } 61 WTF::ArrayBufferView* view() { return m_bufferView.get(); }
62 62
63 ViewType type() const { return view()->type(); } 63 ViewType type() const { return view()->type(); }
64 const char* typeName() { return view()->typeName(); } 64 const char* typeName() { return view()->typeName(); }
65 void* baseAddress() const { return view()->baseAddress(); } 65 void* baseAddress() const { return view()->baseAddress(); }
66 unsigned byteOffset() const { return view()->byteOffset(); } 66 unsigned byteOffset() const { return view()->byteOffset(); }
67 unsigned byteLength() const { return view()->byteLength(); } 67 unsigned byteLength() const { return view()->byteLength(); }
(...skipping 21 matching lines...) Expand all
89 } 89 }
90 90
91 private: 91 private:
92 RefPtr<WTF::ArrayBufferView> m_bufferView; 92 RefPtr<WTF::ArrayBufferView> m_bufferView;
93 mutable RefPtr<DOMArrayBufferBase> m_domArrayBuffer; 93 mutable RefPtr<DOMArrayBufferBase> m_domArrayBuffer;
94 }; 94 };
95 95
96 } // namespace blink 96 } // namespace blink
97 97
98 #endif // DOMArrayBufferView_h 98 #endif // DOMArrayBufferView_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698