[go: nahoru, domu]

Replace base::Bind with BindOnce/BindRepeating in media/filters.

Bug: 1007805
Change-Id: I8e0136335d880ce1897d75e70a81dddd2e016d80
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2522397
Reviewed-by: John Rummell <jrummell@chromium.org>
Commit-Queue: David Bienvenu <davidbienvenu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#826515}
diff --git a/media/filters/audio_decoder_unittest.cc b/media/filters/audio_decoder_unittest.cc
index 8bd739f..c02f516 100644
--- a/media/filters/audio_decoder_unittest.cc
+++ b/media/filters/audio_decoder_unittest.cc
@@ -177,8 +177,8 @@
     base::RunLoop run_loop;
     decoder_->Decode(
         std::move(buffer),
-        base::Bind(&AudioDecoderTest::DecodeFinished, base::Unretained(this),
-                   run_loop.QuitClosure()));
+        base::BindOnce(&AudioDecoderTest::DecodeFinished,
+                       base::Unretained(this), run_loop.QuitClosure()));
     run_loop.Run();
     ASSERT_FALSE(pending_decode_);
   }
@@ -246,15 +246,15 @@
 
   void InitializeDecoderWithResult(const AudioDecoderConfig& config,
                                    bool success) {
-    decoder_->Initialize(
-        config, nullptr,
-        base::BindOnce(
-            [](bool success, Status status) {
-              EXPECT_EQ(status.is_ok(), success);
-            },
-            success),
-        base::Bind(&AudioDecoderTest::OnDecoderOutput, base::Unretained(this)),
-        base::DoNothing());
+    decoder_->Initialize(config, nullptr,
+                         base::BindOnce(
+                             [](bool success, Status status) {
+                               EXPECT_EQ(status.is_ok(), success);
+                             },
+                             success),
+                         base::BindRepeating(&AudioDecoderTest::OnDecoderOutput,
+                                             base::Unretained(this)),
+                         base::DoNothing());
     base::RunLoop().RunUntilIdle();
   }
 
diff --git a/media/filters/audio_video_metadata_extractor.cc b/media/filters/audio_video_metadata_extractor.cc
index 77b3bfcf..185819e 100644
--- a/media/filters/audio_video_metadata_extractor.cc
+++ b/media/filters/audio_video_metadata_extractor.cc
@@ -78,7 +78,8 @@
   DCHECK(!extracted_);
 
   bool read_ok = true;
-  media::BlockingUrlProtocol protocol(source, base::Bind(&OnError, &read_ok));
+  media::BlockingUrlProtocol protocol(source,
+                                      base::BindRepeating(&OnError, &read_ok));
   media::FFmpegGlue glue(&protocol);
   AVFormatContext* format_context = glue.format_context();
 
diff --git a/media/filters/blocking_url_protocol.cc b/media/filters/blocking_url_protocol.cc
index 0cf42ec..add92a5 100644
--- a/media/filters/blocking_url_protocol.cc
+++ b/media/filters/blocking_url_protocol.cc
@@ -15,7 +15,7 @@
 namespace media {
 
 BlockingUrlProtocol::BlockingUrlProtocol(DataSource* data_source,
-                                         const base::Closure& error_cb)
+                                         const base::RepeatingClosure& error_cb)
     : data_source_(data_source),
       error_cb_(error_cb),
       is_streaming_(data_source_->IsStreaming()),
diff --git a/media/filters/blocking_url_protocol.h b/media/filters/blocking_url_protocol.h
index 7e6a1eb..be5cdd0 100644
--- a/media/filters/blocking_url_protocol.h
+++ b/media/filters/blocking_url_protocol.h
@@ -25,7 +25,8 @@
  public:
   // Implements FFmpegURLProtocol using the given |data_source|. |error_cb| is
   // fired any time DataSource::Read() returns an error.
-  BlockingUrlProtocol(DataSource* data_source, const base::Closure& error_cb);
+  BlockingUrlProtocol(DataSource* data_source,
+                      const base::RepeatingClosure& error_cb);
   virtual ~BlockingUrlProtocol();
 
   // Aborts any pending reads by returning a read error. After this method
@@ -51,7 +52,7 @@
   base::Lock data_source_lock_;
   DataSource* data_source_;
 
-  base::Closure error_cb_;
+  base::RepeatingClosure error_cb_;
   const bool is_streaming_;
 
   // Used to unblock the thread during shutdown and when reads complete.
diff --git a/media/filters/blocking_url_protocol_unittest.cc b/media/filters/blocking_url_protocol_unittest.cc
index 362e0b7..8d7c9a7 100644
--- a/media/filters/blocking_url_protocol_unittest.cc
+++ b/media/filters/blocking_url_protocol_unittest.cc
@@ -4,6 +4,8 @@
 
 #include <stdint.h>
 
+#include <memory>
+
 #include "base/bind.h"
 #include "base/files/file_path.h"
 #include "base/macros.h"
@@ -22,8 +24,8 @@
   BlockingUrlProtocolTest()
       : url_protocol_(new BlockingUrlProtocol(
             &data_source_,
-            base::Bind(&BlockingUrlProtocolTest::OnDataSourceError,
-                       base::Unretained(this)))) {
+            base::BindRepeating(&BlockingUrlProtocolTest::OnDataSourceError,
+                                base::Unretained(this)))) {
     CHECK(data_source_.Initialize(GetTestDataFilePath("bear-320x240.webm")));
   }
 
@@ -113,9 +115,10 @@
   EXPECT_FALSE(url_protocol_->IsStreaming());
 
   data_source_.force_streaming_for_testing();
-  url_protocol_.reset(new BlockingUrlProtocol(
-      &data_source_, base::Bind(&BlockingUrlProtocolTest::OnDataSourceError,
-                                base::Unretained(this))));
+  url_protocol_ = std::make_unique<BlockingUrlProtocol>(
+      &data_source_,
+      base::BindRepeating(&BlockingUrlProtocolTest::OnDataSourceError,
+                          base::Unretained(this)));
   EXPECT_TRUE(data_source_.IsStreaming());
   EXPECT_TRUE(url_protocol_->IsStreaming());
 }
diff --git a/media/filters/chunk_demuxer_unittest.cc b/media/filters/chunk_demuxer_unittest.cc
index 4924b69..2ed13c82 100644
--- a/media/filters/chunk_demuxer_unittest.cc
+++ b/media/filters/chunk_demuxer_unittest.cc
@@ -8,6 +8,7 @@
 #include <stdint.h>
 
 #include <algorithm>
+#include <memory>
 #include <queue>
 #include <utility>
 
@@ -177,22 +178,23 @@
   ChunkDemuxerTest()
       : did_progress_(false),
         append_window_end_for_next_append_(kInfiniteDuration) {
-    init_segment_received_cb_ = base::Bind(
+    init_segment_received_cb_ = base::BindRepeating(
         &ChunkDemuxerTest::InitSegmentReceived, base::Unretained(this));
     CreateNewDemuxer();
   }
 
   void CreateNewDemuxer() {
-    base::Closure open_cb =
-        base::Bind(&ChunkDemuxerTest::DemuxerOpened, base::Unretained(this));
-    base::Closure progress_cb =
-        base::Bind(&ChunkDemuxerTest::OnProgress, base::Unretained(this));
+    base::OnceClosure open_cb = base::BindOnce(&ChunkDemuxerTest::DemuxerOpened,
+                                               base::Unretained(this));
+    base::RepeatingClosure progress_cb = base::BindRepeating(
+        &ChunkDemuxerTest::OnProgress, base::Unretained(this));
     Demuxer::EncryptedMediaInitDataCB encrypted_media_init_data_cb =
         base::BindRepeating(&ChunkDemuxerTest::OnEncryptedMediaInitData,
                             base::Unretained(this));
     EXPECT_MEDIA_LOG(ChunkDemuxerCtor());
-    demuxer_.reset(new ChunkDemuxer(open_cb, progress_cb,
-                                    encrypted_media_init_data_cb, &media_log_));
+    demuxer_ = std::make_unique<ChunkDemuxer>(std::move(open_cb), progress_cb,
+                                              encrypted_media_init_data_cb,
+                                              &media_log_);
   }
 
   virtual ~ChunkDemuxerTest() {
@@ -4428,7 +4430,7 @@
 
   task_environment->RunUntilIdle();
 }
-}
+}  // namespace
 
 TEST_F(ChunkDemuxerTest, StreamStatusNotifications) {
   ASSERT_TRUE(InitDemuxer(HAS_AUDIO | HAS_VIDEO));
diff --git a/media/filters/decrypting_audio_decoder_unittest.cc b/media/filters/decrypting_audio_decoder_unittest.cc
index 7772462..b88ec863 100644
--- a/media/filters/decrypting_audio_decoder_unittest.cc
+++ b/media/filters/decrypting_audio_decoder_unittest.cc
@@ -83,16 +83,17 @@
         kNoTimestamp);
     decoded_frame_list_.push_back(decoded_frame_);
 
-    decoder_->Initialize(config, cdm_context_.get(),
-                         base::BindOnce(
-                             [](bool success, Status status) {
-                               EXPECT_EQ(status.is_ok(), success);
-                             },
-                             success),
-                         base::Bind(&DecryptingAudioDecoderTest::FrameReady,
-                                    base::Unretained(this)),
-                         base::Bind(&DecryptingAudioDecoderTest::OnWaiting,
-                                    base::Unretained(this)));
+    decoder_->Initialize(
+        config, cdm_context_.get(),
+        base::BindOnce(
+            [](bool success, Status status) {
+              EXPECT_EQ(status.is_ok(), success);
+            },
+            success),
+        base::BindRepeating(&DecryptingAudioDecoderTest::FrameReady,
+                            base::Unretained(this)),
+        base::BindRepeating(&DecryptingAudioDecoderTest::OnWaiting,
+                            base::Unretained(this)));
     base::RunLoop().RunUntilIdle();
   }
 
@@ -129,17 +130,18 @@
     decoder_->Initialize(
         new_config, cdm_context_.get(),
         base::BindOnce([](Status status) { EXPECT_TRUE(status.is_ok()); }),
-        base::Bind(&DecryptingAudioDecoderTest::FrameReady,
-                   base::Unretained(this)),
-        base::Bind(&DecryptingAudioDecoderTest::OnWaiting,
-                   base::Unretained(this)));
+        base::BindRepeating(&DecryptingAudioDecoderTest::FrameReady,
+                            base::Unretained(this)),
+        base::BindRepeating(&DecryptingAudioDecoderTest::OnWaiting,
+                            base::Unretained(this)));
   }
 
   // Decode |buffer| and expect DecodeDone to get called with |status|.
   void DecodeAndExpect(scoped_refptr<DecoderBuffer> buffer, StatusCode status) {
     EXPECT_CALL(*this, DecodeDone(HasStatusCode(status)));
-    decoder_->Decode(buffer, base::Bind(&DecryptingAudioDecoderTest::DecodeDone,
-                                        base::Unretained(this)));
+    decoder_->Decode(buffer,
+                     base::BindOnce(&DecryptingAudioDecoderTest::DecodeDone,
+                                    base::Unretained(this)));
     base::RunLoop().RunUntilIdle();
   }
 
@@ -190,8 +192,8 @@
         .WillOnce(SaveArg<1>(&pending_audio_decode_cb_));
 
     decoder_->Decode(encrypted_buffer_,
-                     base::Bind(&DecryptingAudioDecoderTest::DecodeDone,
-                                base::Unretained(this)));
+                     base::BindOnce(&DecryptingAudioDecoderTest::DecodeDone,
+                                    base::Unretained(this)));
     base::RunLoop().RunUntilIdle();
     // Make sure the Decode() on the decoder triggers a DecryptAndDecode() on
     // the decryptor.
@@ -204,8 +206,8 @@
             RunCallback<1>(Decryptor::kNoKey, Decryptor::AudioFrames()));
     EXPECT_CALL(*this, OnWaiting(WaitingReason::kNoDecryptionKey));
     decoder_->Decode(encrypted_buffer_,
-                     base::Bind(&DecryptingAudioDecoderTest::DecodeDone,
-                                base::Unretained(this)));
+                     base::BindOnce(&DecryptingAudioDecoderTest::DecodeDone,
+                                    base::Unretained(this)));
 
     base::RunLoop().RunUntilIdle();
   }
diff --git a/media/filters/decrypting_demuxer_stream_unittest.cc b/media/filters/decrypting_demuxer_stream_unittest.cc
index 8ea826b7..bcfb290e 100644
--- a/media/filters/decrypting_demuxer_stream_unittest.cc
+++ b/media/filters/decrypting_demuxer_stream_unittest.cc
@@ -77,8 +77,8 @@
       : demuxer_stream_(new DecryptingDemuxerStream(
             task_environment_.GetMainThreadTaskRunner(),
             &media_log_,
-            base::Bind(&DecryptingDemuxerStreamTest::OnWaiting,
-                       base::Unretained(this)))),
+            base::BindRepeating(&DecryptingDemuxerStreamTest::OnWaiting,
+                                base::Unretained(this)))),
         cdm_context_(new StrictMock<MockCdmContext>()),
         decryptor_(new StrictMock<MockDecryptor>()),
         is_initialized_(false),
diff --git a/media/filters/decrypting_video_decoder_unittest.cc b/media/filters/decrypting_video_decoder_unittest.cc
index caa4221..525fdb2 100644
--- a/media/filters/decrypting_video_decoder_unittest.cc
+++ b/media/filters/decrypting_video_decoder_unittest.cc
@@ -78,16 +78,17 @@
   // can succeed or fail.
   void InitializeAndExpectResult(const VideoDecoderConfig& config,
                                  bool success) {
-    decoder_->Initialize(config, false, cdm_context_.get(),
-                         base::BindOnce(
-                             [](bool success, Status status) {
-                               EXPECT_EQ(status.is_ok(), success);
-                             },
-                             success),
-                         base::Bind(&DecryptingVideoDecoderTest::FrameReady,
-                                    base::Unretained(this)),
-                         base::Bind(&DecryptingVideoDecoderTest::OnWaiting,
-                                    base::Unretained(this)));
+    decoder_->Initialize(
+        config, false, cdm_context_.get(),
+        base::BindOnce(
+            [](bool success, Status status) {
+              EXPECT_EQ(status.is_ok(), success);
+            },
+            success),
+        base::BindRepeating(&DecryptingVideoDecoderTest::FrameReady,
+                            base::Unretained(this)),
+        base::BindRepeating(&DecryptingVideoDecoderTest::OnWaiting,
+                            base::Unretained(this)));
     base::RunLoop().RunUntilIdle();
   }
 
diff --git a/media/filters/demuxer_perftest.cc b/media/filters/demuxer_perftest.cc
index fe3dc42d..d444f4d 100644
--- a/media/filters/demuxer_perftest.cc
+++ b/media/filters/demuxer_perftest.cc
@@ -184,7 +184,7 @@
     Demuxer::EncryptedMediaInitDataCB encrypted_media_init_data_cb =
         base::BindRepeating(&OnEncryptedMediaInitData);
     Demuxer::MediaTracksUpdatedCB tracks_updated_cb =
-        base::Bind(&OnMediaTracksUpdated);
+        base::BindRepeating(&OnMediaTracksUpdated);
     FFmpegDemuxer demuxer(base::ThreadTaskRunnerHandle::Get(), &data_source,
                           encrypted_media_init_data_cb, tracks_updated_cb,
                           &media_log_, true);
diff --git a/media/filters/fake_video_decoder_unittest.cc b/media/filters/fake_video_decoder_unittest.cc
index 39f51b6..4913015 100644
--- a/media/filters/fake_video_decoder_unittest.cc
+++ b/media/filters/fake_video_decoder_unittest.cc
@@ -4,6 +4,9 @@
 
 #include "media/filters/fake_video_decoder.h"
 
+#include <memory>
+#include <utility>
+
 #include "base/bind.h"
 #include "base/callback_helpers.h"
 #include "base/macros.h"
@@ -37,8 +40,8 @@
             "FakeVideoDecoder",
             GetParam().decoding_delay,
             GetParam().max_decode_requests,
-            base::Bind(&FakeVideoDecoderTest::OnBytesDecoded,
-                       base::Unretained(this)))),
+            base::BindRepeating(&FakeVideoDecoderTest::OnBytesDecoded,
+                                base::Unretained(this)))),
         num_input_buffers_(0),
         num_decoded_frames_(0),
         num_bytes_decoded_(0),
@@ -53,15 +56,15 @@
 
   void InitializeWithConfigAndExpectResult(const VideoDecoderConfig& config,
                                            bool success) {
-    decoder_->Initialize(
-        config, false, nullptr,
-        base::BindOnce(
-            [](bool success, Status status) {
-              EXPECT_EQ(status.is_ok(), success);
-            },
-            success),
-        base::Bind(&FakeVideoDecoderTest::FrameReady, base::Unretained(this)),
-        base::NullCallback());
+    decoder_->Initialize(config, false, nullptr,
+                         base::BindOnce(
+                             [](bool success, Status status) {
+                               EXPECT_EQ(status.is_ok(), success);
+                             },
+                             success),
+                         base::BindRepeating(&FakeVideoDecoderTest::FrameReady,
+                                             base::Unretained(this)),
+                         base::NullCallback());
     base::RunLoop().RunUntilIdle();
     current_config_ = config;
   }
@@ -158,7 +161,7 @@
   void ReadAllFrames() {
     do {
       Decode();
-    } while (num_input_buffers_ <= kTotalBuffers); // All input buffers + EOS.
+    } while (num_input_buffers_ <= kTotalBuffers);  // All input buffers + EOS.
   }
 
   void EnterPendingReadState() {
@@ -284,10 +287,10 @@
 }
 
 TEST_P(FakeVideoDecoderTest, Read_ZeroDelay) {
-  decoder_.reset(
-      new FakeVideoDecoder("FakeVideoDecoder", 0, 1,
-                           base::Bind(&FakeVideoDecoderTest::OnBytesDecoded,
-                                      base::Unretained(this))));
+  decoder_ = std::make_unique<FakeVideoDecoder>(
+      "FakeVideoDecoder", 0, 1,
+      base::BindRepeating(&FakeVideoDecoderTest::OnBytesDecoded,
+                          base::Unretained(this)));
   Initialize();
 
   while (num_input_buffers_ < kTotalBuffers) {
diff --git a/media/filters/ffmpeg_demuxer.cc b/media/filters/ffmpeg_demuxer.cc
index 15045a1..fa39c569 100644
--- a/media/filters/ffmpeg_demuxer.cc
+++ b/media/filters/ffmpeg_demuxer.cc
@@ -952,7 +952,7 @@
   // Give a WeakPtr to BlockingUrlProtocol since we'll need to release it on the
   // blocking thread pool.
   url_protocol_ = std::make_unique<BlockingUrlProtocol>(
-      data_source_, BindToCurrentLoop(base::Bind(
+      data_source_, BindToCurrentLoop(base::BindRepeating(
                         &FFmpegDemuxer::OnDataSourceError, weak_this_)));
   glue_ = std::make_unique<FFmpegGlue>(url_protocol_.get());
   AVFormatContext* format_context = glue_->format_context();
diff --git a/media/filters/ffmpeg_demuxer_unittest.cc b/media/filters/ffmpeg_demuxer_unittest.cc
index a43334e..5bdd717b 100644
--- a/media/filters/ffmpeg_demuxer_unittest.cc
+++ b/media/filters/ffmpeg_demuxer_unittest.cc
@@ -338,7 +338,7 @@
         base::BindRepeating(&FFmpegDemuxerTest::OnEncryptedMediaInitData,
                             base::Unretained(this));
 
-    Demuxer::MediaTracksUpdatedCB tracks_updated_cb = base::Bind(
+    Demuxer::MediaTracksUpdatedCB tracks_updated_cb = base::BindRepeating(
         &FFmpegDemuxerTest::OnMediaTracksUpdated, base::Unretained(this));
 
     demuxer_.reset(new FFmpegDemuxer(
diff --git a/media/filters/ffmpeg_video_decoder_unittest.cc b/media/filters/ffmpeg_video_decoder_unittest.cc
index 452cb18a..599fb12 100644
--- a/media/filters/ffmpeg_video_decoder_unittest.cc
+++ b/media/filters/ffmpeg_video_decoder_unittest.cc
@@ -80,7 +80,8 @@
               EXPECT_EQ(status.is_ok(), success);
             },
             success),
-        base::Bind(&FFmpegVideoDecoderTest::FrameReady, base::Unretained(this)),
+        base::BindRepeating(&FFmpegVideoDecoderTest::FrameReady,
+                            base::Unretained(this)),
         base::NullCallback());
     base::RunLoop().RunUntilIdle();
   }
diff --git a/media/filters/frame_buffer_pool.cc b/media/filters/frame_buffer_pool.cc
index 0374054..c6aa7d03 100644
--- a/media/filters/frame_buffer_pool.cc
+++ b/media/filters/frame_buffer_pool.cc
@@ -108,14 +108,14 @@
   return frame_buffer->alpha_data.get();
 }
 
-base::Closure FrameBufferPool::CreateFrameCallback(void* fb_priv) {
+base::OnceClosure FrameBufferPool::CreateFrameCallback(void* fb_priv) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
 
   auto* frame_buffer = static_cast<FrameBuffer*>(fb_priv);
   ++frame_buffer->held_by_frame;
 
-  return base::Bind(&FrameBufferPool::OnVideoFrameDestroyed, this,
-                    base::SequencedTaskRunnerHandle::Get(), frame_buffer);
+  return base::BindOnce(&FrameBufferPool::OnVideoFrameDestroyed, this,
+                        base::SequencedTaskRunnerHandle::Get(), frame_buffer);
 }
 
 bool FrameBufferPool::OnMemoryDump(
diff --git a/media/filters/frame_buffer_pool.h b/media/filters/frame_buffer_pool.h
index b108dd2..9dddec6 100644
--- a/media/filters/frame_buffer_pool.h
+++ b/media/filters/frame_buffer_pool.h
@@ -47,7 +47,7 @@
 
   // Generates a "no_longer_needed" closure that holds a reference to this pool;
   // |fb_priv| must be a value previously returned by GetFrameBuffer().
-  base::Closure CreateFrameCallback(void* fb_priv);
+  base::OnceClosure CreateFrameCallback(void* fb_priv);
 
   size_t get_pool_size_for_testing() const { return frame_buffers_.size(); }
 
diff --git a/media/filters/frame_buffer_pool_unittest.cc b/media/filters/frame_buffer_pool_unittest.cc
index 409029a..8644ce3 100644
--- a/media/filters/frame_buffer_pool_unittest.cc
+++ b/media/filters/frame_buffer_pool_unittest.cc
@@ -53,7 +53,7 @@
   memset(alpha, 0, kBufferSize);
 
   // This will release all memory since we're in the shutdown state.
-  frame_release_cb.Run();
+  std::move(frame_release_cb).Run();
   EXPECT_EQ(0u, pool->get_pool_size_for_testing());
 }
 
@@ -74,7 +74,7 @@
   auto frame_release_cb = pool->CreateFrameCallback(priv1);
   pool->ReleaseFrameBuffer(priv1);
   priv1 = buf1 = nullptr;
-  frame_release_cb.Run();
+  std::move(frame_release_cb).Run();
 
   // Frame buffers should not be immediately deleted upon return.
   EXPECT_EQ(3u, pool->get_pool_size_for_testing());
@@ -87,7 +87,7 @@
   frame_release_cb = pool->CreateFrameCallback(priv2);
   pool->ReleaseFrameBuffer(priv2);
   priv2 = buf2 = nullptr;
-  frame_release_cb.Run();
+  std::move(frame_release_cb).Run();
   EXPECT_EQ(3u, pool->get_pool_size_for_testing());
 
   test_clock.Advance(
@@ -97,7 +97,7 @@
   frame_release_cb = pool->CreateFrameCallback(priv3);
   pool->ReleaseFrameBuffer(priv3);
   priv3 = buf3 = nullptr;
-  frame_release_cb.Run();
+  std::move(frame_release_cb).Run();
   EXPECT_EQ(1u, pool->get_pool_size_for_testing());
 
   pool->Shutdown();
diff --git a/media/filters/media_file_checker.cc b/media/filters/media_file_checker.cc
index c65d808..a0f2848 100644
--- a/media/filters/media_file_checker.cc
+++ b/media/filters/media_file_checker.cc
@@ -47,7 +47,7 @@
 
   bool read_ok = true;
   media::BlockingUrlProtocol protocol(
-      &source, base::Bind(&OnMediaFileCheckerError, &read_ok));
+      &source, base::BindRepeating(&OnMediaFileCheckerError, &read_ok));
   media::FFmpegGlue glue(&protocol);
   AVFormatContext* format_context = glue.format_context();
 
diff --git a/media/filters/offloading_video_decoder_unittest.cc b/media/filters/offloading_video_decoder_unittest.cc
index 9f4bb3b..29813ad 100644
--- a/media/filters/offloading_video_decoder_unittest.cc
+++ b/media/filters/offloading_video_decoder_unittest.cc
@@ -91,8 +91,8 @@
   VideoDecoder::OutputCB ExpectOutputCB() {
     EXPECT_CALL(*this, OutputDone(_))
         .WillOnce(VerifyOn(task_env_.GetMainThreadTaskRunner()));
-    return base::Bind(&OffloadingVideoDecoderTest::OutputDone,
-                      base::Unretained(this));
+    return base::BindRepeating(&OffloadingVideoDecoderTest::OutputDone,
+                               base::Unretained(this));
   }
 
   VideoDecoder::DecodeCB ExpectDecodeCB(StatusCode status) {
@@ -131,7 +131,7 @@
     // Verify decode works and is called on the right thread.
     EXPECT_CALL(*decoder_, Decode_(_, _))
         .WillOnce(DoAll(VerifyOn(task_env_.GetMainThreadTaskRunner()),
-                        RunClosure(base::Bind(output_cb, nullptr)),
+                        RunOnceClosure(base::BindOnce(output_cb, nullptr)),
                         RunOnceCallback<1>(DecodeStatus::OK)));
     offloading_decoder_->Decode(DecoderBuffer::CreateEOSBuffer(),
                                 ExpectDecodeCB(DecodeStatus::OK));
@@ -176,7 +176,7 @@
                                 ExpectDecodeCB(DecodeStatus::OK));
     EXPECT_CALL(*decoder_, Decode_(_, _))
         .WillOnce(DoAll(VerifyNotOn(task_env_.GetMainThreadTaskRunner()),
-                        RunClosure(base::Bind(output_cb, nullptr)),
+                        RunOnceClosure(base::BindOnce(output_cb, nullptr)),
                         RunOnceCallback<1>(DecodeStatus::OK)));
     task_env_.RunUntilIdle();
 
@@ -242,8 +242,8 @@
   VideoDecoder::OutputCB output_cb;
   offloading_decoder_->Initialize(
       TestVideoConfig::Normal(kCodecVP9), false, nullptr, ExpectInitCB(true),
-      base::Bind(&OffloadingVideoDecoderTest::OutputDone,
-                 base::Unretained(this)),
+      base::BindRepeating(&OffloadingVideoDecoderTest::OutputDone,
+                          base::Unretained(this)),
       base::NullCallback());
   EXPECT_CALL(*decoder_, Detach())
       .WillOnce(VerifyNotOn(task_env_.GetMainThreadTaskRunner()));
diff --git a/media/filters/source_buffer_state_unittest.cc b/media/filters/source_buffer_state_unittest.cc
index d5eb381..f0fd900 100644
--- a/media/filters/source_buffer_state_unittest.cc
+++ b/media/filters/source_buffer_state_unittest.cc
@@ -84,16 +84,17 @@
                       auto ignore_text_track, auto encrypted_media_init_data_cb,
                       auto new_segment_cb, auto end_of_segment_cb,
                       auto media_log) { new_config_cb_ = config_cb; });
-    sbs->Init(base::BindOnce(&SourceBufferStateTest::SourceInitDone,
-                             base::Unretained(this)),
-              expected_codecs,
-              base::BindRepeating(
-                  &SourceBufferStateTest::StreamParserEncryptedInitData,
-                  base::Unretained(this)),
-              base::Bind(&SourceBufferStateTest::StreamParserNewTextTrack,
-                         base::Unretained(this)));
+    sbs->Init(
+        base::BindOnce(&SourceBufferStateTest::SourceInitDone,
+                       base::Unretained(this)),
+        expected_codecs,
+        base::BindRepeating(
+            &SourceBufferStateTest::StreamParserEncryptedInitData,
+            base::Unretained(this)),
+        base::BindRepeating(&SourceBufferStateTest::StreamParserNewTextTrack,
+                            base::Unretained(this)));
 
-    sbs->SetTracksWatcher(base::Bind(
+    sbs->SetTracksWatcher(base::BindRepeating(
         &SourceBufferStateTest::OnMediaTracksUpdated, base::Unretained(this)));
 
     // These tests are not expected to issue any parse warnings.
diff --git a/media/filters/video_renderer_algorithm_unittest.cc b/media/filters/video_renderer_algorithm_unittest.cc
index f111cc7..26d919f 100644
--- a/media/filters/video_renderer_algorithm_unittest.cc
+++ b/media/filters/video_renderer_algorithm_unittest.cc
@@ -73,8 +73,8 @@
  public:
   VideoRendererAlgorithmTest()
       : tick_clock_(new base::SimpleTestTickClock()),
-        algorithm_(base::Bind(&WallClockTimeSource::GetWallClockTimes,
-                              base::Unretained(&time_source_)),
+        algorithm_(base::BindRepeating(&WallClockTimeSource::GetWallClockTimes,
+                                       base::Unretained(&time_source_)),
                    &media_log_) {
     // Always start the TickClock at a non-zero value since null values have
     // special connotations.
diff --git a/media/filters/vpx_video_decoder_fuzzertest.cc b/media/filters/vpx_video_decoder_fuzzertest.cc
index cc1a198..85cc43f 100644
--- a/media/filters/vpx_video_decoder_fuzzertest.cc
+++ b/media/filters/vpx_video_decoder_fuzzertest.cc
@@ -104,7 +104,7 @@
     decoder.Initialize(
         config, true /* low_delay */, nullptr /* cdm_context */,
         base::BindOnce(&OnInitDone, run_loop.QuitClosure(), &success),
-        base::Bind(&OnOutputComplete), base::NullCallback());
+        base::BindRepeating(&OnOutputComplete), base::NullCallback());
     run_loop.Run();
     if (!success)
       return 0;
diff --git a/media/filters/vpx_video_decoder_unittest.cc b/media/filters/vpx_video_decoder_unittest.cc
index 17bf433..be6824bf 100644
--- a/media/filters/vpx_video_decoder_unittest.cc
+++ b/media/filters/vpx_video_decoder_unittest.cc
@@ -38,15 +38,15 @@
 
   void InitializeWithConfigWithResult(const VideoDecoderConfig& config,
                                       bool success) {
-    decoder_->Initialize(
-        config, false, nullptr,
-        base::BindOnce(
-            [](bool success, Status status) {
-              EXPECT_EQ(status.is_ok(), success);
-            },
-            success),
-        base::Bind(&VpxVideoDecoderTest::FrameReady, base::Unretained(this)),
-        base::NullCallback());
+    decoder_->Initialize(config, false, nullptr,
+                         base::BindOnce(
+                             [](bool success, Status status) {
+                               EXPECT_EQ(status.is_ok(), success);
+                             },
+                             success),
+                         base::BindRepeating(&VpxVideoDecoderTest::FrameReady,
+                                             base::Unretained(this)),
+                         base::NullCallback());
     base::RunLoop().RunUntilIdle();
   }