Commit 1d58980c authored by Sami Kyostila's avatar Sami Kyostila Committed by Commit Bot

headless: 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.

TBR=caseq@chromium.org

Bug: 968047
Change-Id: Icec07c2acaf89d4a2fc7d833f8144e31bbef6ecf
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1729212
Commit-Queue: Sami Kyöstilä <skyostil@chromium.org>
Auto-Submit: Sami Kyöstilä <skyostil@chromium.org>
Reviewed-by: default avatarSami Kyöstilä <skyostil@chromium.org>
Cr-Commit-Position: refs/heads/master@{#682774}
parent 6e7a4b6f
...@@ -228,8 +228,8 @@ HeadlessShell::~HeadlessShell() = default; ...@@ -228,8 +228,8 @@ HeadlessShell::~HeadlessShell() = default;
void HeadlessShell::OnStart(HeadlessBrowser* browser) { void HeadlessShell::OnStart(HeadlessBrowser* browser) {
browser_ = browser; browser_ = browser;
devtools_client_ = HeadlessDevToolsClient::Create(); devtools_client_ = HeadlessDevToolsClient::Create();
file_task_runner_ = base::CreateSequencedTaskRunnerWithTraits( file_task_runner_ = base::CreateSequencedTaskRunner(
{base::MayBlock(), base::TaskPriority::BEST_EFFORT}); {base::ThreadPool(), base::MayBlock(), base::TaskPriority::BEST_EFFORT});
HeadlessBrowserContext::Builder context_builder = HeadlessBrowserContext::Builder context_builder =
browser_->CreateBrowserContextBuilder(); browser_->CreateBrowserContextBuilder();
......
...@@ -55,8 +55,7 @@ HeadlessBrowserImpl::CreateBrowserContextBuilder() { ...@@ -55,8 +55,7 @@ HeadlessBrowserImpl::CreateBrowserContextBuilder() {
scoped_refptr<base::SingleThreadTaskRunner> scoped_refptr<base::SingleThreadTaskRunner>
HeadlessBrowserImpl::BrowserMainThread() const { HeadlessBrowserImpl::BrowserMainThread() const {
return base::CreateSingleThreadTaskRunnerWithTraits( return base::CreateSingleThreadTaskRunner({content::BrowserThread::UI});
{content::BrowserThread::UI});
} }
void HeadlessBrowserImpl::Shutdown() { void HeadlessBrowserImpl::Shutdown() {
......
...@@ -86,8 +86,8 @@ void HeadlessDevToolsClientImpl::AttachToExternalHost( ...@@ -86,8 +86,8 @@ void HeadlessDevToolsClientImpl::AttachToExternalHost(
} }
void HeadlessDevToolsClientImpl::InitBrowserMainThread() { void HeadlessDevToolsClientImpl::InitBrowserMainThread() {
browser_main_thread_ = base::CreateSingleThreadTaskRunnerWithTraits( browser_main_thread_ =
{content::BrowserThread::UI}); base::CreateSingleThreadTaskRunner({content::BrowserThread::UI});
} }
void HeadlessDevToolsClientImpl::ChannelClosed() { void HeadlessDevToolsClientImpl::ChannelClosed() {
......
...@@ -70,9 +70,8 @@ Response BrowserHandler::GetWindowBounds( ...@@ -70,9 +70,8 @@ Response BrowserHandler::GetWindowBounds(
} }
Response BrowserHandler::Close() { Response BrowserHandler::Close() {
base::PostTaskWithTraits( base::PostTask(FROM_HERE, {content::BrowserThread::UI},
FROM_HERE, {content::BrowserThread::UI}, base::BindOnce(&HeadlessBrowserImpl::Shutdown, browser()));
base::BindOnce(&HeadlessBrowserImpl::Shutdown, browser()));
return Response::OK(); return Response::OK();
} }
......
...@@ -90,9 +90,9 @@ class TestNetworkInterceptor::Impl { ...@@ -90,9 +90,9 @@ class TestNetworkInterceptor::Impl {
} }
Response* FindResponse(const std::string& method, const std::string& url) { Response* FindResponse(const std::string& method, const std::string& url) {
base::PostTaskWithTraits(FROM_HERE, {BrowserThread::UI}, base::PostTask(FROM_HERE, {BrowserThread::UI},
base::BindOnce(&TestNetworkInterceptor::LogRequest, base::BindOnce(&TestNetworkInterceptor::LogRequest,
interceptor_, method, url)); interceptor_, method, url));
auto it = response_map_.find(StripFragment(url)); auto it = response_map_.find(StripFragment(url));
return it == response_map_.end() ? nullptr : it->second.get(); return it == response_map_.end() ? nullptr : it->second.get();
} }
...@@ -177,7 +177,7 @@ TestNetworkInterceptor::~TestNetworkInterceptor() { ...@@ -177,7 +177,7 @@ TestNetworkInterceptor::~TestNetworkInterceptor() {
void TestNetworkInterceptor::InsertResponse(std::string url, void TestNetworkInterceptor::InsertResponse(std::string url,
Response response) { Response response) {
base::PostTaskWithTraits( base::PostTask(
FROM_HERE, {BrowserThread::IO}, FROM_HERE, {BrowserThread::IO},
base::BindOnce(&Impl::InsertResponse, base::Unretained(impl_.get()), base::BindOnce(&Impl::InsertResponse, base::Unretained(impl_.get()),
std::move(url), std::move(response))); std::move(url), std::move(response)));
......
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