Index: Source/modules/imagebitmap/ImageBitmapFactories.cpp |
diff --git a/Source/modules/imagebitmap/ImageBitmapFactories.cpp b/Source/modules/imagebitmap/ImageBitmapFactories.cpp |
index fd4eaf0625fb6ac3dfd00303b406e94198713931..fb6723d7312834a5af4ec218135d874e23ec111d 100644 |
--- a/Source/modules/imagebitmap/ImageBitmapFactories.cpp |
+++ b/Source/modules/imagebitmap/ImageBitmapFactories.cpp |
@@ -67,7 +67,12 @@ static ScriptPromise fulfillImageBitmap(ExecutionContext* context, PassRefPtrWil |
{ |
RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(context); |
ScriptPromise promise = resolver->promise(); |
- resolver->resolve(imageBitmap); |
+ if (imageBitmap) { |
+ resolver->resolve(imageBitmap); |
+ } else { |
+ v8::Isolate* isolate = ScriptState::current()->isolate(); |
+ resolver->reject(ScriptValue(v8::Null(isolate), isolate)); |
+ } |
return promise; |
} |
@@ -185,8 +190,9 @@ ScriptPromise ImageBitmapFactories::createImageBitmap(EventTarget& eventTarget, |
exceptionState.throwDOMException(IndexSizeError, String::format("The source %s provided is 0.", sw ? "height" : "width")); |
return ScriptPromise(); |
} |
+ |
// FIXME: make ImageBitmap creation asynchronous crbug.com/258082 |
- return fulfillImageBitmap(eventTarget.executionContext(), ImageBitmap::create(canvas, IntRect(sx, sy, sw, sh))); |
+ return fulfillImageBitmap(eventTarget.executionContext(), canvas->buffer() ? ImageBitmap::create(canvas, IntRect(sx, sy, sw, sh)) : nullptr); |
} |
ScriptPromise ImageBitmapFactories::createImageBitmap(EventTarget& eventTarget, Blob* blob, ExceptionState& exceptionState) |