|  | // Copyright 2016 The Chromium Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #include "modules/canvas/imagebitmap/ImageBitmapRenderingContext.h" | 
|  |  | 
|  | #include "bindings/modules/v8/rendering_context.h" | 
|  | #include "core/imagebitmap/ImageBitmap.h" | 
|  | #include "platform/graphics/StaticBitmapImage.h" | 
|  |  | 
|  | namespace blink { | 
|  |  | 
|  | ImageBitmapRenderingContext::ImageBitmapRenderingContext( | 
|  | CanvasRenderingContextHost* host, | 
|  | const CanvasContextCreationAttributesCore& attrs) | 
|  | : ImageBitmapRenderingContextBase(host, attrs) {} | 
|  |  | 
|  | ImageBitmapRenderingContext::~ImageBitmapRenderingContext() = default; | 
|  |  | 
|  | void ImageBitmapRenderingContext::SetCanvasGetContextResult( | 
|  | RenderingContext& result) { | 
|  | result.SetImageBitmapRenderingContext(this); | 
|  | } | 
|  |  | 
|  | void ImageBitmapRenderingContext::transferFromImageBitmap( | 
|  | ImageBitmap* image_bitmap, | 
|  | ExceptionState& exception_state) { | 
|  | if (image_bitmap && image_bitmap->IsNeutered()) { | 
|  | exception_state.ThrowDOMException( | 
|  | kInvalidStateError, "The input ImageBitmap has been detached"); | 
|  | return; | 
|  | } | 
|  |  | 
|  | SetImage(image_bitmap); | 
|  | } | 
|  |  | 
|  | CanvasRenderingContext* ImageBitmapRenderingContext::Factory::Create( | 
|  | CanvasRenderingContextHost* host, | 
|  | const CanvasContextCreationAttributesCore& attrs) { | 
|  | if (!RuntimeEnabledFeatures::ExperimentalCanvasFeaturesEnabled()) | 
|  | return nullptr; | 
|  | return new ImageBitmapRenderingContext(host, attrs); | 
|  | } | 
|  |  | 
|  | }  // namespace blink |