Commit 501f9a1d authored by Eric Seckler's avatar Eric Seckler Committed by Commit Bot

content: Respect Nestable task trait in BrowserTaskExecutor

This accidentally disappeared in crrev.com/c/1224115 :)

Bug: 867421
Change-Id: Ib77fc096ffd4bd98f134107180a020d9f829db7f
Reviewed-on: https://chromium-review.googlesource.com/1225763Reviewed-by: default avatarAlex Clarke <alexclarke@chromium.org>
Commit-Queue: Eric Seckler <eseckler@chromium.org>
Cr-Commit-Position: refs/heads/master@{#591395}
parent cfe23d7e
......@@ -4,8 +4,6 @@
#include "content/browser/scheduler/browser_task_executor.h"
#include "content/public/browser/browser_task_traits.h"
namespace content {
namespace {
......@@ -40,8 +38,16 @@ bool BrowserTaskExecutor::PostDelayedTaskWithTraits(
const base::TaskTraits& traits,
base::OnceClosure task,
base::TimeDelta delay) {
return GetTaskRunner(traits)->PostDelayedTask(from_here, std::move(task),
delay);
DCHECK_EQ(BrowserTaskTraitsExtension::kExtensionId, traits.extension_id());
const BrowserTaskTraitsExtension& extension =
traits.GetExtension<BrowserTaskTraitsExtension>();
if (extension.nestable()) {
return GetTaskRunner(extension)->PostDelayedTask(from_here, std::move(task),
delay);
} else {
return GetTaskRunner(extension)->PostNonNestableDelayedTask(
from_here, std::move(task), delay);
}
}
scoped_refptr<base::TaskRunner> BrowserTaskExecutor::CreateTaskRunnerWithTraits(
......@@ -76,6 +82,11 @@ scoped_refptr<base::SingleThreadTaskRunner> BrowserTaskExecutor::GetTaskRunner(
DCHECK_EQ(BrowserTaskTraitsExtension::kExtensionId, traits.extension_id());
const BrowserTaskTraitsExtension& extension =
traits.GetExtension<BrowserTaskTraitsExtension>();
return GetTaskRunner(extension);
}
scoped_refptr<base::SingleThreadTaskRunner> BrowserTaskExecutor::GetTaskRunner(
const BrowserTaskTraitsExtension& extension) {
BrowserThread::ID thread_id = extension.browser_thread();
DCHECK_LT(thread_id, BrowserThread::ID::ID_COUNT);
return BrowserThread::GetTaskRunnerForThread(thread_id);
......
......@@ -8,6 +8,7 @@
#include "base/task/task_executor.h"
#include "build/build_config.h"
#include "content/common/content_export.h"
#include "content/public/browser/browser_task_traits.h"
namespace content {
......@@ -52,6 +53,9 @@ class CONTENT_EXPORT BrowserTaskExecutor : public base::TaskExecutor {
scoped_refptr<base::SingleThreadTaskRunner> GetTaskRunner(
const base::TaskTraits& traits);
scoped_refptr<base::SingleThreadTaskRunner> GetTaskRunner(
const BrowserTaskTraitsExtension& extension);
DISALLOW_COPY_AND_ASSIGN(BrowserTaskExecutor);
};
......
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