| Index: third_party/WebKit/Source/core/html/ImageData.cpp | 
| diff --git a/third_party/WebKit/Source/core/html/ImageData.cpp b/third_party/WebKit/Source/core/html/ImageData.cpp | 
| index f0cec65d2ecd00cf4d5c6b57a1d593615b16ecda..428c86136683e18a577f1133df04ae0ee14d143a 100644 | 
| --- a/third_party/WebKit/Source/core/html/ImageData.cpp | 
| +++ b/third_party/WebKit/Source/core/html/ImageData.cpp | 
| @@ -36,18 +36,22 @@ | 
|  | 
| namespace blink { | 
|  | 
| -ImageData* ImageData::create(const IntSize& size) | 
| +ImageData* ImageData::create(const IntSize& size, ExceptionState& exceptionState) | 
| { | 
| Checked<int, RecordOverflow> dataSize = 4; | 
| dataSize *= size.width(); | 
| dataSize *= size.height(); | 
| -    if (dataSize.hasOverflowed() || dataSize.unsafeGet() < 0) | 
| +    if (dataSize.hasOverflowed() || dataSize.unsafeGet() < 0) { | 
| +        exceptionState.throwDOMException(IndexSizeError, "The requested image size exceeds the supported range."); | 
| return nullptr; | 
| +    } | 
|  | 
| RefPtr<DOMUint8ClampedArray> byteArray = | 
| DOMUint8ClampedArray::createOrNull(dataSize.unsafeGet()); | 
| -    if (!byteArray) | 
| +    if (!byteArray) { | 
| +        exceptionState.throwRangeError("ImageData object creation failed due to insufficient available memory."); | 
| return nullptr; | 
| +    } | 
|  | 
| return new ImageData(size, byteArray.release()); | 
| } | 
| @@ -57,12 +61,11 @@ ImageData* ImageData::create(const IntSize& size, PassRefPtr<DOMUint8ClampedArra | 
| Checked<int, RecordOverflow> dataSize = 4; | 
| dataSize *= size.width(); | 
| dataSize *= size.height(); | 
| -    if (dataSize.hasOverflowed()) | 
| -        return nullptr; | 
| - | 
| -    if (dataSize.unsafeGet() < 0 | 
| -        || static_cast<unsigned>(dataSize.unsafeGet()) > byteArray->length()) | 
| +    if (dataSize.hasOverflowed() | 
| +        || dataSize.unsafeGet() < 0 | 
| +        || static_cast<unsigned>(dataSize.unsafeGet()) > byteArray->length()) { | 
| return nullptr; | 
| +    } | 
|  | 
| return new ImageData(size, byteArray); | 
| } | 
| @@ -87,7 +90,7 @@ ImageData* ImageData::create(unsigned width, unsigned height, ExceptionState& ex | 
| RefPtr<DOMUint8ClampedArray> byteArray = | 
| DOMUint8ClampedArray::createOrNull(dataSize.unsafeGet()); | 
| if (!byteArray) { | 
| -        exceptionState.throwDOMException(V8GeneralError, "Out of memory at ImageData creation"); | 
| +        exceptionState.throwRangeError("ImageData object creation failed due to insufficient available memory."); | 
| return nullptr; | 
| } | 
|  | 
|  |