Chromium Code Reviews| Index: third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.cpp |
| diff --git a/third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.cpp b/third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.cpp |
| index 71c3c6faeebe085a32bfe670837ca9c95499bea8..552c9d98e5240bcfbdb4f9b56bdfe005f685f61c 100644 |
| --- a/third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.cpp |
| +++ b/third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.cpp |
| @@ -45,6 +45,7 @@ |
| #include "core/html/ImageData.h" |
| #include "core/imagebitmap/ImageBitmapOptions.h" |
| #include "core/offscreencanvas/OffscreenCanvas.h" |
| +#include "core/svg/SVGImageElement.h" |
| #include "core/svg/graphics/SVGImage.h" |
| #include "core/workers/WorkerGlobalScope.h" |
| #include "platform/CrossThreadFunctional.h" |
| @@ -60,13 +61,20 @@ namespace blink { |
| static inline ImageBitmapSource* toImageBitmapSourceInternal( |
| const ImageBitmapSourceUnion& value, |
| - ExceptionState& exceptionState, |
| + ExceptionState* exceptionState, |
|
fs
2017/04/06 20:27:54
Was this required by anything now?
fserb
2017/04/06 21:03:49
It isn't. Lint was complaining that it should be e
fs
2017/04/06 21:11:27
What Lint was that? (ExceptionState& is pretty muc
fserb
2017/04/07 18:36:28
done.
|
| const ImageBitmapOptions& options, |
| bool hasCropRect) { |
| + HTMLAndSVGImageElementSource* imageElement = nullptr; |
| if (value.isHTMLImageElement()) { |
| - HTMLImageElement* imageElement = value.getAsHTMLImageElement(); |
| - if (!imageElement || !imageElement->cachedImage()) { |
| - exceptionState.throwDOMException( |
| + if (!(imageElement = value.getAsHTMLImageElement())) |
| + return nullptr; |
| + } else if (value.isSVGImageElement()) { |
| + if (!(imageElement = value.getAsSVGImageElement())) |
| + return nullptr; |
| + } |
| + if (imageElement) { |
| + if (!imageElement->cachedImage()) { |
| + exceptionState->throwDOMException( |
| InvalidStateError, |
| "No image can be retrieved from the provided element."); |
| return nullptr; |
| @@ -76,7 +84,7 @@ static inline ImageBitmapSource* toImageBitmapSourceInternal( |
| if (!image->hasIntrinsicDimensions() && |
| (!hasCropRect && |
| (!options.hasResizeWidth() || !options.hasResizeHeight()))) { |
| - exceptionState.throwDOMException( |
| + exceptionState->throwDOMException( |
| InvalidStateError, |
| "The image element contains an SVG image without intrinsic " |
| "dimensions, and no resize options or crop region are specified."); |
| @@ -131,8 +139,8 @@ ScriptPromise ImageBitmapFactories::createImageBitmap( |
| ExceptionState& exceptionState) { |
| UseCounter::Feature feature = UseCounter::CreateImageBitmap; |
| UseCounter::count(scriptState->getExecutionContext(), feature); |
| - ImageBitmapSource* bitmapSourceInternal = |
| - toImageBitmapSourceInternal(bitmapSource, exceptionState, options, false); |
| + ImageBitmapSource* bitmapSourceInternal = toImageBitmapSourceInternal( |
| + bitmapSource, &exceptionState, options, false); |
| if (!bitmapSourceInternal) |
| return ScriptPromise(); |
| return createImageBitmap(scriptState, eventTarget, bitmapSourceInternal, |
| @@ -152,7 +160,7 @@ ScriptPromise ImageBitmapFactories::createImageBitmap( |
| UseCounter::Feature feature = UseCounter::CreateImageBitmap; |
| UseCounter::count(scriptState->getExecutionContext(), feature); |
| ImageBitmapSource* bitmapSourceInternal = |
| - toImageBitmapSourceInternal(bitmapSource, exceptionState, options, true); |
| + toImageBitmapSourceInternal(bitmapSource, &exceptionState, options, true); |
| if (!bitmapSourceInternal) |
| return ScriptPromise(); |
| Optional<IntRect> cropRect = IntRect(sx, sy, sw, sh); |