Commit 339de5d8 authored by Yi Xu's avatar Yi Xu Committed by Commit Bot

Fix initial value setting for ImageRendering for OffscreenCanvas on a worker

Bug: 645994

Change-Id: Iadc2c787270edfebb449c3a0e221ac7d33c4f713
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1865771
Commit-Queue: Yi Xu <yiyix@chromium.org>
Reviewed-by: default avatarFernando Serboncini <fserb@chromium.org>
Reviewed-by: default avatarJeremy Roman <jbroman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#707182}
parent 7253b9df
......@@ -64,7 +64,8 @@ enum SerializationTag {
// -> ImageBitmap (ref)
kImageBitmapTransferTag =
'G', // index:uint32_t -> ImageBitmap. For ImageBitmap transfer
kOffscreenCanvasTransferTag = 'H', // index, width, height, id:uint32_t ->
kOffscreenCanvasTransferTag = 'H', // index, width, height, id,
// filter_quality::uint32_t ->
// OffscreenCanvas. For OffscreenCanvas
// transfer
kReadableStreamTransferTag = 'r', // index:uint32_t
......
......@@ -33,6 +33,7 @@
#include "third_party/blink/renderer/core/typed_arrays/dom_shared_array_buffer.h"
#include "third_party/blink/renderer/platform/runtime_enabled_features.h"
#include "third_party/blink/renderer/platform/wtf/date_math.h"
#include "third_party/skia/include/core/SkFilterQuality.h"
namespace blink {
......@@ -509,15 +510,20 @@ ScriptWrappable* V8ScriptValueDeserializer::ReadDOMObject(
std::move(serialized_script_value_->MojoHandles()[index]));
}
case kOffscreenCanvasTransferTag: {
uint32_t width = 0, height = 0, canvas_id = 0, client_id = 0, sink_id = 0;
uint32_t width = 0, height = 0, canvas_id = 0, client_id = 0, sink_id = 0,
filter_quality = 0;
if (!ReadUint32(&width) || !ReadUint32(&height) ||
!ReadUint32(&canvas_id) || !ReadUint32(&client_id) ||
!ReadUint32(&sink_id))
!ReadUint32(&sink_id) || !ReadUint32(&filter_quality))
return nullptr;
OffscreenCanvas* canvas = OffscreenCanvas::Create(
ExecutionContext::From(GetScriptState()), width, height);
canvas->SetPlaceholderCanvasId(canvas_id);
canvas->SetFrameSinkId(client_id, sink_id);
if (filter_quality == 0)
canvas->SetFilterQuality(kNone_SkFilterQuality);
else
canvas->SetFilterQuality(kLow_SkFilterQuality);
return canvas;
}
case kReadableStreamTransferTag: {
......
......@@ -513,6 +513,7 @@ bool V8ScriptValueSerializer::WriteDOMObject(ScriptWrappable* wrappable,
WriteUint64(canvas->PlaceholderCanvasId());
WriteUint32(canvas->ClientId());
WriteUint32(canvas->SinkId());
WriteUint32(canvas->FilterQuality() == kNone_SkFilterQuality ? 0 : 1);
return true;
}
if (wrapper_type_info == V8ReadableStream::GetWrapperTypeInfo() &&
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment