Index: Source/modules/imagebitmap/ImageBitmapFactories.cpp |
diff --git a/Source/modules/imagebitmap/ImageBitmapFactories.cpp b/Source/modules/imagebitmap/ImageBitmapFactories.cpp |
index fd4eaf0625fb6ac3dfd00303b406e94198713931..debe56b6b83c1c647466131198d0e77192f3f227 100644 |
--- a/Source/modules/imagebitmap/ImageBitmapFactories.cpp |
+++ b/Source/modules/imagebitmap/ImageBitmapFactories.cpp |
@@ -63,11 +63,16 @@ static IntSize sizeFor(HTMLVideoElement* video) |
return IntSize(); |
} |
-static ScriptPromise fulfillImageBitmap(ExecutionContext* context, PassRefPtrWillBeRawPtr<ImageBitmap> imageBitmap) |
+ScriptPromise fulfillImageBitmap(ExecutionContext* context, PassRefPtrWillBeRawPtr<ImageBitmap> imageBitmap) |
Stephen White
2014/03/25 16:56:31
Is there a reason this needs to be non-static?
|
{ |
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) |