#include "third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.h"
#include "base/metrics/histogram_functions.h"
#include "base/trace_event/trace_event.h"
#include "third_party/blink/public/common/features.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_canvas_font_stretch.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_canvas_text_rendering.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_union_gpucanvascontext_imagebitmaprenderingcontext_offscreencanvasrenderingcontext2d_webgl2renderingcontext_webglrenderingcontext.h"
#include "third_party/blink/renderer/core/css/offscreen_font_selector.h"
#include "third_party/blink/renderer/core/css/parser/css_parser.h"
#include "third_party/blink/renderer/core/css/resolver/font_style_resolver.h"
#include "third_party/blink/renderer/core/execution_context/execution_context.h"
#include "third_party/blink/renderer/core/frame/local_dom_window.h"
#include "third_party/blink/renderer/core/frame/local_frame.h"
#include "third_party/blink/renderer/core/frame/settings.h"
#include "third_party/blink/renderer/core/html/canvas/text_metrics.h"
#include "third_party/blink/renderer/core/imagebitmap/image_bitmap.h"
#include "third_party/blink/renderer/core/workers/worker_global_scope.h"
#include "third_party/blink/renderer/core/workers/worker_settings.h"
#include "third_party/blink/renderer/platform/bindings/exception_state.h"
#include "third_party/blink/renderer/platform/fonts/text_run_paint_info.h"
#include "third_party/blink/renderer/platform/graphics/canvas_resource_provider.h"
#include "third_party/blink/renderer/platform/graphics/graphics_types.h"
#include "third_party/blink/renderer/platform/graphics/paint/paint_canvas.h"
#include "third_party/blink/renderer/platform/graphics/skia/skia_utils.h"
#include "third_party/blink/renderer/platform/graphics/static_bitmap_image.h"
#include "third_party/blink/renderer/platform/heap/garbage_collected.h"
#include "third_party/blink/renderer/platform/wtf/linked_hash_set.h"
#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
namespace {
const size_t kHardMaxCachedFonts = …;
const size_t kMaxCachedFonts = …;
static const unsigned kMaxIframeContextLoseDelay = …;
class OffscreenFontCache { … };
OffscreenFontCache& GetOffscreenFontCache() { … }
}
namespace blink {
CanvasRenderingContext* OffscreenCanvasRenderingContext2D::Factory::Create(
CanvasRenderingContextHost* host,
const CanvasContextCreationAttributesCore& attrs) { … }
OffscreenCanvasRenderingContext2D::~OffscreenCanvasRenderingContext2D() =
default;
OffscreenCanvasRenderingContext2D::OffscreenCanvasRenderingContext2D(
OffscreenCanvas* canvas,
const CanvasContextCreationAttributesCore& attrs)
: … { … }
void OffscreenCanvasRenderingContext2D::Trace(Visitor* visitor) const { … }
void OffscreenCanvasRenderingContext2D::FinalizeFrame(FlushReason reason) { … }
bool OffscreenCanvasRenderingContext2D::OriginClean() const { … }
void OffscreenCanvasRenderingContext2D::SetOriginTainted() { … }
int OffscreenCanvasRenderingContext2D::Width() const { … }
int OffscreenCanvasRenderingContext2D::Height() const { … }
bool OffscreenCanvasRenderingContext2D::CanCreateCanvas2dResourceProvider()
const { … }
CanvasResourceProvider*
OffscreenCanvasRenderingContext2D::GetOrCreateCanvasResourceProvider() const { … }
CanvasResourceProvider*
OffscreenCanvasRenderingContext2D::GetCanvasResourceProvider() const { … }
void OffscreenCanvasRenderingContext2D::Reset() { … }
scoped_refptr<CanvasResource>
OffscreenCanvasRenderingContext2D::ProduceCanvasResource(FlushReason reason) { … }
bool OffscreenCanvasRenderingContext2D::PushFrame() { … }
CanvasRenderingContextHost*
OffscreenCanvasRenderingContext2D::GetCanvasRenderingContextHost() const { … }
ExecutionContext* OffscreenCanvasRenderingContext2D::GetTopExecutionContext()
const { … }
ImageBitmap* OffscreenCanvasRenderingContext2D::TransferToImageBitmap(
ScriptState* script_state,
ExceptionState& exception_state) { … }
scoped_refptr<StaticBitmapImage> OffscreenCanvasRenderingContext2D::GetImage(
FlushReason reason) { … }
V8RenderingContext* OffscreenCanvasRenderingContext2D::AsV8RenderingContext() { … }
V8OffscreenRenderingContext*
OffscreenCanvasRenderingContext2D::AsV8OffscreenRenderingContext() { … }
Color OffscreenCanvasRenderingContext2D::GetCurrentColor() const { … }
cc::PaintCanvas* OffscreenCanvasRenderingContext2D::GetOrCreatePaintCanvas() { … }
const cc::PaintCanvas* OffscreenCanvasRenderingContext2D::GetPaintCanvas()
const { … }
const MemoryManagedPaintRecorder* OffscreenCanvasRenderingContext2D::Recorder()
const { … }
void OffscreenCanvasRenderingContext2D::WillDraw(
const SkIRect& dirty_rect,
CanvasPerformanceMonitor::DrawType draw_type) { … }
sk_sp<PaintFilter> OffscreenCanvasRenderingContext2D::StateGetFilter() { … }
void OffscreenCanvasRenderingContext2D::LoseContext(LostContextMode lost_mode) { … }
bool OffscreenCanvasRenderingContext2D::IsPaintable() const { … }
bool OffscreenCanvasRenderingContext2D::WritePixels(
const SkImageInfo& orig_info,
const void* pixels,
size_t row_bytes,
int x,
int y) { … }
bool OffscreenCanvasRenderingContext2D::ResolveFont(const String& new_font) { … }
bool OffscreenCanvasRenderingContext2D::IsCanvas2DBufferValid() const { … }
void OffscreenCanvasRenderingContext2D::DispatchContextLostEvent(
TimerBase* time) { … }
void OffscreenCanvasRenderingContext2D::TryRestoreContextEvent(
TimerBase* timer) { … }
std::optional<cc::PaintRecord> OffscreenCanvasRenderingContext2D::FlushCanvas(
FlushReason reason) { … }
OffscreenCanvas* OffscreenCanvasRenderingContext2D::HostAsOffscreenCanvas()
const { … }
FontSelector* OffscreenCanvasRenderingContext2D::GetFontSelector() const { … }
int OffscreenCanvasRenderingContext2D::LayerCount() const { … }
}