Commit 3a28e366 authored by Sami Kyostila's avatar Sami Kyostila Committed by Commit Bot

content/browser/media/capture: Always specify thread affinity when posting tasks

*** Note: There is no behavior change from this patch. ***

The PostTask APIs will shortly be changed to require all tasks to explicitly
specify their thread affinity, i.e., whether the task should run on the thread
pool or a specific named thread such as a BrowserThread. This patch updates all
call sites with thread affinity annotation. We also remove the "WithTraits"
suffix to make the call sites more readable.

Before:

    // Thread pool task.
    base::PostTaskWithTraits(FROM_HERE, {...}, ...);

    // UI thread task.
    base::PostTaskWithTraits(FROM_HERE, {BrowserThread::UI, ...}, ...);

After:

    // Thread pool task.
    base::PostTask(FROM_HERE, {base::ThreadPool(), ...}, ...);

    // UI thread task.
    base::PostTask(FROM_HERE, {BrowserThread::UI, ...}, ...);

This patch was semi-automatically prepared with these steps:

    1. Patch in https://chromium-review.googlesource.com/c/chromium/src/+/1635827
       to make thread affinity a build-time requirement.
    2. Run an initial pass with a clang rewriter:
       https://chromium-review.googlesource.com/c/chromium/src/+/1635623
    3. ninja -C out/Debug | grep 'requested here' | cut -d: -f1-3 | sort | \
           uniq > errors.txt
    4. while read line; do
         f=$(echo $line | cut -d: -f 1)
         r=$(echo $line | cut -d: -f 2)
         c=$(echo $line | cut -d: -f 3)
         sed -i "${r}s/./&base::ThreadPool(),/$c" $f
       done < errors.txt
    5. GOTO 3 until build succeeds.
    6. Remove the "WithTraits" suffix from task API call sites:

       $ tools/git/mffr.py -i <(cat <<EOF
       [
         ["PostTaskWithTraits",                            "PostTask"],
         ["PostDelayedTaskWithTraits",                     "PostDelayedTask"],
         ["PostTaskWithTraitsAndReply",                    "PostTaskAndReply"],
         ["CreateTaskRunnerWithTraits",                    "CreateTaskRunner"],
         ["CreateSequencedTaskRunnerWithTraits",           "CreateSequencedTaskRunner"],
         ["CreateUpdateableSequencedTaskRunnerWithTraits", "CreateUpdateableSequencedTaskRunner"],
         ["CreateSingleThreadTaskRunnerWithTraits",        "CreateSingleThreadTaskRunner"],
         ["CreateCOMSTATaskRunnerWithTraits",              "CreateCOMSTATaskRunner"]
       ]
       EOF
       )

This CL was uploaded by git cl split.

R=braveyao@chromium.org, wez@chromium.org

Bug: 968047
Change-Id: I5223612c9d4bf031e86a570bec68bd75c68dbcd2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1729163
Auto-Submit: Sami Kyöstilä <skyostil@chromium.org>
Commit-Queue: Sami Kyöstilä <skyostil@chromium.org>
Reviewed-by: default avatarYuri Wiitala <miu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#683956}
parent 693fd72d
......@@ -80,10 +80,9 @@ class MockMirroringDestination
render_process_id_, render_frame_id_)) != candidates.end()) {
result.insert(GlobalFrameRoutingId(render_process_id_, render_frame_id_));
}
base::PostTaskWithTraits(
FROM_HERE, {BrowserThread::IO},
base::BindOnce(std::move(*results_callback), std::move(result),
is_duplication_));
base::PostTask(FROM_HERE, {BrowserThread::IO},
base::BindOnce(std::move(*results_callback),
std::move(result), is_duplication_));
}
media::AudioOutputStream* SimulateAddInput(
......
......@@ -47,7 +47,7 @@ class AuraWindowVideoCaptureDevice::WindowTracker
DCHECK(device_task_runner_);
DCHECK(cursor_controller_);
base::PostTaskWithTraits(
base::PostTask(
FROM_HERE, {BrowserThread::UI},
base::BindOnce(&WindowTracker::ResolveTarget, AsWeakPtr(), source_id));
}
......@@ -158,7 +158,7 @@ AuraWindowVideoCaptureDevice::~AuraWindowVideoCaptureDevice() = default;
#if defined(OS_CHROMEOS)
void AuraWindowVideoCaptureDevice::CreateCapturer(
viz::mojom::FrameSinkVideoCapturerRequest request) {
base::PostTaskWithTraits(
base::PostTask(
FROM_HERE, {BrowserThread::UI},
base::BindOnce(
[](base::WeakPtr<WindowTracker> tracker_ptr,
......
......@@ -161,9 +161,8 @@ class AuraWindowVideoCaptureDeviceBrowserTest
// Wait for at least the minimum capture period before checking for more
// captured frames.
base::RunLoop run_loop;
base::PostDelayedTaskWithTraits(FROM_HERE, {BrowserThread::UI},
run_loop.QuitClosure(),
GetMinCapturePeriod());
base::PostDelayedTask(FROM_HERE, {BrowserThread::UI},
run_loop.QuitClosure(), GetMinCapturePeriod());
run_loop.Run();
}
}
......@@ -265,9 +264,8 @@ IN_PROC_BROWSER_TEST_F(AuraWindowVideoCaptureDeviceBrowserTest,
// frames were queued because the device should be suspended.
ChangePageContentColor(SK_ColorGREEN);
base::RunLoop run_loop;
base::PostDelayedTaskWithTraits(FROM_HERE, {BrowserThread::UI},
run_loop.QuitClosure(),
base::TimeDelta::FromSeconds(5));
base::PostDelayedTask(FROM_HERE, {BrowserThread::UI}, run_loop.QuitClosure(),
base::TimeDelta::FromSeconds(5));
run_loop.Run();
EXPECT_FALSE(HasCapturedFramesInQueue());
......
......@@ -253,7 +253,7 @@ void DesktopCaptureDevice::Core::AllocateAndStart(
// TODO(https://crbug.com/823869): Fix DesktopCaptureDeviceTest and remove
// this conditional.
if (BrowserThread::IsThreadInitialized(BrowserThread::UI)) {
base::PostTaskWithTraitsAndReplyWithResult(
base::PostTaskAndReplyWithResult(
FROM_HERE, {BrowserThread::UI}, base::BindOnce(&GetServiceConnector),
base::BindOnce(&DesktopCaptureDevice::Core::RequestWakeLock,
weak_factory_.GetWeakPtr()));
......
......@@ -67,7 +67,7 @@ std::string DesktopStreamsRegistryImpl::RegisterStream(
stream.extension_name = extension_name;
stream.type = type;
base::PostDelayedTaskWithTraits(
base::PostDelayedTask(
FROM_HERE, {BrowserThread::UI},
base::BindOnce(&DesktopStreamsRegistryImpl::CleanupStream,
base::Unretained(this), id),
......
......@@ -118,7 +118,7 @@ void FrameSinkVideoCaptureDevice::AllocateAndStartWithReceiver(
capturer_->ChangeTarget(target_);
}
base::PostTaskWithTraits(
base::PostTask(
FROM_HERE, {BrowserThread::UI},
base::BindOnce(&MouseCursorOverlayController::Start,
cursor_controller_->GetWeakPtr(),
......@@ -133,7 +133,7 @@ void FrameSinkVideoCaptureDevice::AllocateAndStartWithReceiver(
DCHECK(!wake_lock_);
// Gets a service_manager::Connector first, then request a wake lock.
base::PostTaskWithTraitsAndReplyWithResult(
base::PostTaskAndReplyWithResult(
FROM_HERE, {BrowserThread::UI}, base::BindOnce(&MaybeGetServiceConnector),
base::BindOnce(&FrameSinkVideoCaptureDevice::RequestWakeLock,
weak_factory_.GetWeakPtr()));
......@@ -178,9 +178,9 @@ void FrameSinkVideoCaptureDevice::StopAndDeAllocate() {
wake_lock_.reset();
}
base::PostTaskWithTraits(FROM_HERE, {BrowserThread::UI},
base::BindOnce(&MouseCursorOverlayController::Stop,
cursor_controller_->GetWeakPtr()));
base::PostTask(FROM_HERE, {BrowserThread::UI},
base::BindOnce(&MouseCursorOverlayController::Stop,
cursor_controller_->GetWeakPtr()));
MaybeStopConsuming();
capturer_.reset();
......@@ -302,16 +302,15 @@ void FrameSinkVideoCaptureDevice::CreateCapturerViaGlobalManager(
viz::mojom::FrameSinkVideoCapturerRequest request) {
// Send the request to UI thread because that's where HostFrameSinkManager
// lives.
base::PostTaskWithTraits(
FROM_HERE, {BrowserThread::UI},
base::BindOnce(
[](viz::mojom::FrameSinkVideoCapturerRequest request) {
viz::HostFrameSinkManager* const manager =
GetHostFrameSinkManager();
DCHECK(manager);
manager->CreateVideoCapturer(std::move(request));
},
std::move(request)));
base::PostTask(FROM_HERE, {BrowserThread::UI},
base::BindOnce(
[](viz::mojom::FrameSinkVideoCapturerRequest request) {
viz::HostFrameSinkManager* const manager =
GetHostFrameSinkManager();
DCHECK(manager);
manager->CreateVideoCapturer(std::move(request));
},
std::move(request)));
}
void FrameSinkVideoCaptureDevice::MaybeStartConsuming() {
......
......@@ -53,7 +53,7 @@ namespace {
// Convenience macro to post a task to run on the device thread.
#define POST_DEVICE_TASK(closure) \
base::PostTaskWithTraits(FROM_HERE, {BrowserThread::IO}, closure)
base::PostTask(FROM_HERE, {BrowserThread::IO}, closure)
// Convenience macro to block the test procedure until all pending tasks have
// run on the device thread.
......@@ -263,14 +263,13 @@ class FrameSinkVideoCaptureDeviceForTest : public FrameSinkVideoCaptureDevice {
protected:
void CreateCapturer(viz::mojom::FrameSinkVideoCapturerRequest request) final {
base::PostTaskWithTraits(
FROM_HERE, {BrowserThread::UI},
base::BindOnce(
[](MockFrameSinkVideoCapturer* capturer,
viz::mojom::FrameSinkVideoCapturerRequest request) {
capturer->Bind(std::move(request));
},
capturer_, std::move(request)));
base::PostTask(FROM_HERE, {BrowserThread::UI},
base::BindOnce(
[](MockFrameSinkVideoCapturer* capturer,
viz::mojom::FrameSinkVideoCapturerRequest request) {
capturer->Bind(std::move(request));
},
capturer_, std::move(request)));
}
MockFrameSinkVideoCapturer* const capturer_;
......
......@@ -63,9 +63,8 @@ class MouseCursorOverlayControllerBrowserTest : public ContentBrowserTest {
auto overlay_ptr = std::make_unique<FakeOverlay>();
FakeOverlay* const overlay = overlay_ptr.get();
DCHECK_CURRENTLY_ON(BrowserThread::UI);
controller_.Start(
std::move(overlay_ptr),
base::CreateSingleThreadTaskRunnerWithTraits({BrowserThread::UI}));
controller_.Start(std::move(overlay_ptr),
base::CreateSingleThreadTaskRunner({BrowserThread::UI}));
return overlay;
}
......
......@@ -186,9 +186,8 @@ bool WebContentsAudioInputStream::Impl::Open() {
void WebContentsAudioInputStream::Impl::IncrementCapturerCount() {
if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) {
base::PostTaskWithTraits(
FROM_HERE, {BrowserThread::UI},
base::BindOnce(&Impl::IncrementCapturerCount, this));
base::PostTask(FROM_HERE, {BrowserThread::UI},
base::BindOnce(&Impl::IncrementCapturerCount, this));
return;
}
......@@ -219,8 +218,8 @@ void WebContentsAudioInputStream::Impl::Start(AudioInputCallback* callback) {
// WebContents audio muting is implemented as audio capture to nowhere.
// Unmuting will stop that audio capture, allowing AudioMirroringManager to
// divert audio capture to here.
base::PostTaskWithTraits(FROM_HERE, {BrowserThread::UI},
base::BindOnce(&Impl::UnmuteWebContentsAudio, this));
base::PostTask(FROM_HERE, {BrowserThread::UI},
base::BindOnce(&Impl::UnmuteWebContentsAudio, this));
}
void WebContentsAudioInputStream::Impl::Stop() {
......@@ -255,9 +254,8 @@ void WebContentsAudioInputStream::Impl::Close() {
void WebContentsAudioInputStream::Impl::DecrementCapturerCount() {
if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) {
base::PostTaskWithTraits(
FROM_HERE, {BrowserThread::UI},
base::BindOnce(&Impl::DecrementCapturerCount, this));
base::PostTask(FROM_HERE, {BrowserThread::UI},
base::BindOnce(&Impl::DecrementCapturerCount, this));
return;
}
......@@ -275,20 +273,19 @@ void WebContentsAudioInputStream::Impl::ReportError() {
void WebContentsAudioInputStream::Impl::StartMirroring() {
DCHECK(thread_checker_.CalledOnValidThread());
base::PostTaskWithTraits(
FROM_HERE, {BrowserThread::IO},
base::BindOnce(&AudioMirroringManager::StartMirroring,
base::Unretained(mirroring_manager_),
base::RetainedRef(this)));
base::PostTask(FROM_HERE, {BrowserThread::IO},
base::BindOnce(&AudioMirroringManager::StartMirroring,
base::Unretained(mirroring_manager_),
base::RetainedRef(this)));
}
void WebContentsAudioInputStream::Impl::StopMirroring() {
DCHECK(thread_checker_.CalledOnValidThread());
base::PostTaskWithTraits(FROM_HERE, {BrowserThread::IO},
base::BindOnce(&AudioMirroringManager::StopMirroring,
base::Unretained(mirroring_manager_),
base::RetainedRef(this)));
base::PostTask(FROM_HERE, {BrowserThread::IO},
base::BindOnce(&AudioMirroringManager::StopMirroring,
base::Unretained(mirroring_manager_),
base::RetainedRef(this)));
}
void WebContentsAudioInputStream::Impl::UnmuteWebContentsAudio() {
......@@ -302,7 +299,7 @@ void WebContentsAudioInputStream::Impl::UnmuteWebContentsAudio() {
void WebContentsAudioInputStream::Impl::QueryForMatches(
const std::set<GlobalFrameRoutingId>& candidates,
MatchesCallback results_callback) {
base::PostTaskWithTraits(
base::PostTask(
FROM_HERE, {BrowserThread::UI},
base::BindOnce(&Impl::QueryForMatchesOnUIThread, this, candidates,
media::BindToCurrentLoop(std::move(results_callback))));
......
......@@ -283,7 +283,7 @@ class WebContentsAudioInputStreamTest : public testing::TestWithParam<bool> {
// causes our mock to set |destination_|. Block until that has happened.
base::WaitableEvent done(base::WaitableEvent::ResetPolicy::AUTOMATIC,
base::WaitableEvent::InitialState::NOT_SIGNALED);
base::PostTaskWithTraits(
base::PostTask(
FROM_HERE, {BrowserThread::IO},
base::BindOnce(&base::WaitableEvent::Signal, base::Unretained(&done)));
done.Wait();
......
......@@ -93,7 +93,7 @@ class WebContentsAudioMuter::MuteDestination
void QueryForMatches(const std::set<GlobalFrameRoutingId>& candidates,
MatchesCallback results_callback) override {
base::PostTaskWithTraits(
base::PostTask(
FROM_HERE, {BrowserThread::UI},
base::BindOnce(&MuteDestination::QueryForMatchesOnUIThread, this,
candidates,
......@@ -148,7 +148,7 @@ void WebContentsAudioMuter::StartMuting() {
if (is_muting_)
return;
is_muting_ = true;
base::PostTaskWithTraits(
base::PostTask(
FROM_HERE, {BrowserThread::IO},
base::BindOnce(&AudioMirroringManager::StartMirroring,
base::Unretained(AudioMirroringManager::GetInstance()),
......@@ -160,7 +160,7 @@ void WebContentsAudioMuter::StopMuting() {
if (!is_muting_)
return;
is_muting_ = false;
base::PostTaskWithTraits(
base::PostTask(
FROM_HERE, {BrowserThread::IO},
base::BindOnce(&AudioMirroringManager::StopMirroring,
base::Unretained(AudioMirroringManager::GetInstance()),
......
......@@ -35,7 +35,7 @@ void WebContentsTracker::Start(int render_process_id, int main_render_frame_id,
if (BrowserThread::CurrentlyOn(BrowserThread::UI)) {
StartObservingWebContents(render_process_id, main_render_frame_id);
} else {
base::PostTaskWithTraits(
base::PostTask(
FROM_HERE, {BrowserThread::UI},
base::BindOnce(&WebContentsTracker::StartObservingWebContents, this,
render_process_id, main_render_frame_id));
......@@ -51,10 +51,9 @@ void WebContentsTracker::Stop() {
if (BrowserThread::CurrentlyOn(BrowserThread::UI)) {
WebContentsObserver::Observe(nullptr);
} else {
base::PostTaskWithTraits(
FROM_HERE, {BrowserThread::UI},
base::BindOnce(&WebContentsTracker::Observe, this,
static_cast<WebContents*>(nullptr)));
base::PostTask(FROM_HERE, {BrowserThread::UI},
base::BindOnce(&WebContentsTracker::Observe, this,
static_cast<WebContents*>(nullptr)));
}
}
......
......@@ -45,7 +45,7 @@ class WebContentsVideoCaptureDevice::FrameTracker
DCHECK(device_task_runner_);
DCHECK(cursor_controller_);
base::PostTaskWithTraits(
base::PostTask(
FROM_HERE, {BrowserThread::UI},
base::BindOnce(
[](base::WeakPtr<FrameTracker> self, int process_id, int frame_id) {
......@@ -236,7 +236,7 @@ WebContentsVideoCaptureDevice::Create(const std::string& device_id) {
}
void WebContentsVideoCaptureDevice::WillStart() {
base::PostTaskWithTraits(
base::PostTask(
FROM_HERE, {BrowserThread::UI},
base::BindOnce(&FrameTracker::WillStartCapturingWebContents,
tracker_->AsWeakPtr(),
......@@ -244,10 +244,9 @@ void WebContentsVideoCaptureDevice::WillStart() {
}
void WebContentsVideoCaptureDevice::DidStop() {
base::PostTaskWithTraits(
FROM_HERE, {BrowserThread::UI},
base::BindOnce(&FrameTracker::DidStopCapturingWebContents,
tracker_->AsWeakPtr()));
base::PostTask(FROM_HERE, {BrowserThread::UI},
base::BindOnce(&FrameTracker::DidStopCapturingWebContents,
tracker_->AsWeakPtr()));
}
} // namespace content
......@@ -144,9 +144,8 @@ class WebContentsVideoCaptureDeviceBrowserTest
// Wait for at least the minimum capture period before checking for more
// captured frames.
base::RunLoop run_loop;
base::PostDelayedTaskWithTraits(FROM_HERE, {BrowserThread::UI},
run_loop.QuitClosure(),
GetMinCapturePeriod());
base::PostDelayedTask(FROM_HERE, {BrowserThread::UI},
run_loop.QuitClosure(), GetMinCapturePeriod());
run_loop.Run();
}
}
......@@ -320,9 +319,8 @@ IN_PROC_BROWSER_TEST_F(WebContentsVideoCaptureDeviceBrowserTest,
// frames were queued because the device should be suspended.
ChangePageContentColor(SK_ColorGREEN);
base::RunLoop run_loop;
base::PostDelayedTaskWithTraits(FROM_HERE, {BrowserThread::UI},
run_loop.QuitClosure(),
base::TimeDelta::FromSeconds(5));
base::PostDelayedTask(FROM_HERE, {BrowserThread::UI}, run_loop.QuitClosure(),
base::TimeDelta::FromSeconds(5));
run_loop.Run();
EXPECT_FALSE(HasCapturedFramesInQueue());
......
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