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.