Migrate blink::WorkerPool away from CrossThreadBind
... in favor of CrossThreadBindOnce.
BUG=963574
R=haraken@chromium.org, hiroshige@chromium.org
Change-Id: Iae1e8bc453c6806dfb0ce6c021d0eee18578f93f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1619838
Commit-Queue: Antonio Gomes <tonikitoo@igalia.com>
Auto-Submit: Antonio Gomes <tonikitoo@igalia.com>
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Cr-Commit-Position: refs/heads/master@{#661429}
diff --git a/third_party/blink/renderer/bindings/core/v8/script_streamer.cc b/third_party/blink/renderer/bindings/core/v8/script_streamer.cc
index 28f8395..198126b 100644
--- a/third_party/blink/renderer/bindings/core/v8/script_streamer.cc
+++ b/third_party/blink/renderer/bindings/core/v8/script_streamer.cc
@@ -467,10 +467,10 @@
// TODO(leszeks): Decrease the priority of these tasks where possible.
worker_pool::PostTaskWithTraits(
FROM_HERE, {base::TaskPriority::USER_BLOCKING, base::MayBlock()},
- CrossThreadBind(RunScriptStreamingTask,
- WTF::Passed(std::move(script_streaming_task)),
- WrapCrossThreadPersistent(this),
- WTF::CrossThreadUnretained(stream_)));
+ CrossThreadBindOnce(RunScriptStreamingTask,
+ WTF::Passed(std::move(script_streaming_task)),
+ WrapCrossThreadPersistent(this),
+ WTF::CrossThreadUnretained(stream_)));
return true;
}
diff --git a/third_party/blink/renderer/core/html/canvas/canvas_async_blob_creator.cc b/third_party/blink/renderer/core/html/canvas/canvas_async_blob_creator.cc
index 12d5f23..9937ec80b 100644
--- a/third_party/blink/renderer/core/html/canvas/canvas_async_blob_creator.cc
+++ b/third_party/blink/renderer/core/html/canvas/canvas_async_blob_creator.cc
@@ -322,9 +322,9 @@
} else {
worker_pool::PostTask(
- FROM_HERE,
- CrossThreadBind(&CanvasAsyncBlobCreator::EncodeImageOnEncoderThread,
- WrapCrossThreadPersistent(this), quality));
+ FROM_HERE, CrossThreadBindOnce(
+ &CanvasAsyncBlobCreator::EncodeImageOnEncoderThread,
+ WrapCrossThreadPersistent(this), quality));
}
} else {
idle_task_status_ = kIdleTaskNotStarted;
diff --git a/third_party/blink/renderer/core/imagebitmap/image_bitmap.cc b/third_party/blink/renderer/core/imagebitmap/image_bitmap.cc
index be5a82a..70230cf 100644
--- a/third_party/blink/renderer/core/imagebitmap/image_bitmap.cc
+++ b/third_party/blink/renderer/core/imagebitmap/image_bitmap.cc
@@ -1014,11 +1014,11 @@
std::make_unique<ParsedOptions>(parsed_options);
worker_pool::PostTask(
FROM_HERE,
- CrossThreadBind(&RasterizeImageOnBackgroundThread,
- WrapCrossThreadPersistent(resolver),
- std::move(paint_record), draw_dst_rect,
- !image->WouldTaintOrigin(),
- WTF::Passed(std::move(passed_parsed_options))));
+ CrossThreadBindOnce(&RasterizeImageOnBackgroundThread,
+ WrapCrossThreadPersistent(resolver),
+ std::move(paint_record), draw_dst_rect,
+ !image->WouldTaintOrigin(),
+ WTF::Passed(std::move(passed_parsed_options))));
return promise;
}
diff --git a/third_party/blink/renderer/core/imagebitmap/image_bitmap_factories.cc b/third_party/blink/renderer/core/imagebitmap/image_bitmap_factories.cc
index a884b0a..fec9bcc 100644
--- a/third_party/blink/renderer/core/imagebitmap/image_bitmap_factories.cc
+++ b/third_party/blink/renderer/core/imagebitmap/image_bitmap_factories.cc
@@ -316,7 +316,7 @@
Thread::Current()->GetTaskRunner();
worker_pool::PostTask(
FROM_HERE,
- CrossThreadBind(
+ CrossThreadBindOnce(
&ImageBitmapFactories::ImageBitmapLoader::DecodeImageOnDecoderThread,
WrapCrossThreadPersistent(this), std::move(task_runner),
WrapCrossThreadPersistent(array_buffer), options_->premultiplyAlpha(),
diff --git a/third_party/blink/renderer/modules/background_fetch/background_fetch_icon_loader.cc b/third_party/blink/renderer/modules/background_fetch/background_fetch_icon_loader.cc
index 699e28e..35da714 100644
--- a/third_party/blink/renderer/modules/background_fetch/background_fetch_icon_loader.cc
+++ b/third_party/blink/renderer/modules/background_fetch/background_fetch_icon_loader.cc
@@ -165,7 +165,7 @@
worker_pool::PostTask(
FROM_HERE,
- CrossThreadBind(
+ CrossThreadBindOnce(
&BackgroundFetchIconLoader::DecodeAndResizeImageOnBackgroundThread,
WrapCrossThreadPersistent(this), std::move(task_runner),
SegmentReader::CreateFromSharedBuffer(std::move(data_))));
diff --git a/third_party/blink/renderer/modules/clipboard/clipboard_writer.cc b/third_party/blink/renderer/modules/clipboard/clipboard_writer.cc
index 6b4fdcb5..23f44c3 100644
--- a/third_party/blink/renderer/modules/clipboard/clipboard_writer.cc
+++ b/third_party/blink/renderer/modules/clipboard/clipboard_writer.cc
@@ -152,12 +152,12 @@
worker_pool::PostTask(
FROM_HERE,
- CrossThreadBind(&ClipboardWriter::DecodeOnBackgroundThread,
- /* This unretained is safe because the ClipboardWriter
- will wait for Decode to finish and return back to this
- thread before deallocating. */
- CrossThreadUnretained(this), clipboard_task_runner_,
- WrapCrossThreadPersistent(array_buffer)));
+ CrossThreadBindOnce(&ClipboardWriter::DecodeOnBackgroundThread,
+ /* This unretained is safe because the ClipboardWriter
+ will wait for Decode to finish and return back to
+ this thread before deallocating. */
+ CrossThreadUnretained(this), clipboard_task_runner_,
+ WrapCrossThreadPersistent(array_buffer)));
}
void ClipboardWriter::DidFail(FileErrorCode error_code) {
diff --git a/third_party/blink/renderer/modules/webaudio/async_audio_decoder.cc b/third_party/blink/renderer/modules/webaudio/async_audio_decoder.cc
index af05c226..3af64ee 100644
--- a/third_party/blink/renderer/modules/webaudio/async_audio_decoder.cc
+++ b/third_party/blink/renderer/modules/webaudio/async_audio_decoder.cc
@@ -57,13 +57,13 @@
worker_pool::PostTask(
FROM_HERE,
- CrossThreadBind(&AsyncAudioDecoder::DecodeOnBackgroundThread,
- WrapCrossThreadPersistent(audio_data), sample_rate,
- WrapCrossThreadPersistent(success_callback),
- WrapCrossThreadPersistent(error_callback),
- WrapCrossThreadPersistent(resolver),
- WrapCrossThreadPersistent(context),
- std::move(task_runner)));
+ CrossThreadBindOnce(&AsyncAudioDecoder::DecodeOnBackgroundThread,
+ WrapCrossThreadPersistent(audio_data), sample_rate,
+ WrapCrossThreadPersistent(success_callback),
+ WrapCrossThreadPersistent(error_callback),
+ WrapCrossThreadPersistent(resolver),
+ WrapCrossThreadPersistent(context),
+ std::move(task_runner)));
}
void AsyncAudioDecoder::DecodeOnBackgroundThread(
diff --git a/third_party/blink/renderer/platform/bindings/parkable_string.cc b/third_party/blink/renderer/platform/bindings/parkable_string.cc
index 2af4525..7bc8a2c 100644
--- a/third_party/blink/renderer/platform/bindings/parkable_string.cc
+++ b/third_party/blink/renderer/platform/bindings/parkable_string.cc
@@ -424,8 +424,9 @@
this, string_.Bytes(), string_.CharactersSizeInBytes(),
Thread::Current()->GetTaskRunner());
worker_pool::PostTask(
- FROM_HERE, CrossThreadBind(&ParkableStringImpl::CompressInBackground,
- WTF::Passed(std::move(params))));
+ FROM_HERE,
+ CrossThreadBindOnce(&ParkableStringImpl::CompressInBackground,
+ WTF::Passed(std::move(params))));
state_ = State::kParkingInProgress;
}
}
diff --git a/third_party/blink/renderer/platform/scheduler/common/worker_pool.cc b/third_party/blink/renderer/platform/scheduler/common/worker_pool.cc
index f272ee6..cad9a8d 100644
--- a/third_party/blink/renderer/platform/scheduler/common/worker_pool.cc
+++ b/third_party/blink/renderer/platform/scheduler/common/worker_pool.cc
@@ -11,7 +11,7 @@
namespace worker_pool {
-void PostTask(const base::Location& location, CrossThreadClosure closure) {
+void PostTask(const base::Location& location, CrossThreadOnceClosure closure) {
PostTaskWithTraits(location,
{base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
std::move(closure));
@@ -19,9 +19,9 @@
void PostTaskWithTraits(const base::Location& location,
const base::TaskTraits& traits,
- CrossThreadClosure closure) {
+ CrossThreadOnceClosure closure) {
base::PostTaskWithTraits(location, traits,
- ConvertToBaseCallback(std::move(closure)));
+ ConvertToBaseOnceCallback(std::move(closure)));
}
} // namespace worker_pool
diff --git a/third_party/blink/renderer/platform/scheduler/common/worker_pool_unittest.cc b/third_party/blink/renderer/platform/scheduler/common/worker_pool_unittest.cc
index 4e3d9398..e34644a 100644
--- a/third_party/blink/renderer/platform/scheduler/common/worker_pool_unittest.cc
+++ b/third_party/blink/renderer/platform/scheduler/common/worker_pool_unittest.cc
@@ -25,8 +25,8 @@
std::unique_ptr<base::WaitableEvent> done_event =
std::make_unique<base::WaitableEvent>();
worker_pool::PostTask(
- FROM_HERE,
- CrossThreadBind(&PingPongTask, CrossThreadUnretained(done_event.get())));
+ FROM_HERE, CrossThreadBindOnce(&PingPongTask,
+ CrossThreadUnretained(done_event.get())));
// Test passes by not hanging on the following wait().
done_event->Wait();
}
diff --git a/third_party/blink/renderer/platform/scheduler/public/worker_pool.h b/third_party/blink/renderer/platform/scheduler/public/worker_pool.h
index 56b00b8bc..3366d417 100644
--- a/third_party/blink/renderer/platform/scheduler/public/worker_pool.h
+++ b/third_party/blink/renderer/platform/scheduler/public/worker_pool.h
@@ -16,7 +16,7 @@
namespace worker_pool {
// These are a thin wrapper around base::ThreadPool to ensure that all
-// callers use WTF::CrossThreadBind instead of base::Bind to ensure that
+// callers use WTF::CrossThreadBindOnce instead of base::Bind to ensure that
// all non-thread-safe objects are copied properly.
//
// All tasks that do not care about which thread they are running on
@@ -25,11 +25,11 @@
// Tasks that have to run on a specific thread (e.g. main thread, compositor
// thread, dedicated worker thread) should be posted via other means
// (e.g. FrameScheduler for main thread tasks).
-PLATFORM_EXPORT void PostTask(const base::Location&, CrossThreadClosure);
+PLATFORM_EXPORT void PostTask(const base::Location&, CrossThreadOnceClosure);
PLATFORM_EXPORT void PostTaskWithTraits(const base::Location&,
const base::TaskTraits&,
- CrossThreadClosure);
+ CrossThreadOnceClosure);
// TODO(altimin): Expose CreateSequencedTaskRunnerWithTraits when the
// need arises.