| Index: third_party/WebKit/Source/modules/push_messaging/PushMessageData.cpp
|
| diff --git a/third_party/WebKit/Source/modules/push_messaging/PushMessageData.cpp b/third_party/WebKit/Source/modules/push_messaging/PushMessageData.cpp
|
| index f870943c2f7a4d7eee536ddc6a1d3e488f95a59d..f7d6a91ae5c125a21f3e17fe3b2e24691246345d 100644
|
| --- a/third_party/WebKit/Source/modules/push_messaging/PushMessageData.cpp
|
| +++ b/third_party/WebKit/Source/modules/push_messaging/PushMessageData.cpp
|
| @@ -17,18 +17,22 @@
|
|
|
| namespace blink {
|
|
|
| -PushMessageData* PushMessageData::create(const String& messageString)
|
| +PushMessageData* PushMessageData::create(const String& messageString, ExceptionState& exceptionState)
|
| {
|
| - return PushMessageData::create(ArrayBufferOrArrayBufferViewOrUSVString::fromUSVString(messageString));
|
| + return PushMessageData::create(ArrayBufferOrArrayBufferViewOrUSVString::fromUSVString(messageString), exceptionState);
|
| }
|
|
|
| -PushMessageData* PushMessageData::create(const ArrayBufferOrArrayBufferViewOrUSVString& messageData)
|
| +PushMessageData* PushMessageData::create(const ArrayBufferOrArrayBufferViewOrUSVString& messageData, ExceptionState& exceptionState)
|
| {
|
| if (messageData.isArrayBuffer() || messageData.isArrayBufferView()) {
|
| RefPtr<DOMArrayBuffer> buffer = messageData.isArrayBufferView()
|
| - ? messageData.getAsArrayBufferView()->buffer()
|
| + ? messageData.getAsArrayBufferView()->bufferOrNull()
|
| : messageData.getAsArrayBuffer();
|
|
|
| + if (!buffer) {
|
| + exceptionState.throwRangeError("Out of memory. Failed to allocate array buffer for push message data.");
|
| + return nullptr;
|
| + }
|
| return new PushMessageData(static_cast<const char*>(buffer->data()), buffer->byteLength());
|
| }
|
|
|
| @@ -54,9 +58,12 @@ PushMessageData::~PushMessageData()
|
| {
|
| }
|
|
|
| -PassRefPtr<DOMArrayBuffer> PushMessageData::arrayBuffer() const
|
| +PassRefPtr<DOMArrayBuffer> PushMessageData::arrayBuffer(ExceptionState& exceptionState) const
|
| {
|
| - return DOMArrayBuffer::create(m_data.data(), m_data.size());
|
| + RefPtr<DOMArrayBuffer> buffer = DOMArrayBuffer::createOrNull(m_data.data(), m_data.size());
|
| + if (!buffer)
|
| + exceptionState.throwRangeError("Out of memory. Failed to allocate array buffer.");
|
| + return buffer.release();
|
| }
|
|
|
| Blob* PushMessageData::blob() const
|
|
|