1234567891011121314151617181920212223242526272829303132333435363738394041 |
- // Copyright 2017 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #include "extensions/browser/extension_file_task_runner.h"
- #include "base/task/lazy_thread_pool_task_runner.h"
- #include "base/task/sequenced_task_runner.h"
- #include "base/task/task_traits.h"
- #include "base/task/thread_pool.h"
- namespace extensions {
- namespace {
- // Note: All tasks posted to a single task runner have the same priority. This
- // is unfortunate, since some file-related tasks are high priority (like serving
- // a file from the extension protocols or loading an extension in response to a
- // user action), and others are low priority (like garbage collection). Split
- // the difference and use USER_VISIBLE, which is the default priority and what a
- // task posted to a named thread (like the FILE thread) would receive.
- base::LazyThreadPoolSequencedTaskRunner g_task_runner =
- LAZY_THREAD_POOL_SEQUENCED_TASK_RUNNER_INITIALIZER(
- base::TaskTraits(base::MayBlock(),
- base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN,
- base::TaskPriority::USER_VISIBLE));
- } // namespace
- scoped_refptr<base::SequencedTaskRunner> GetExtensionFileTaskRunner() {
- return g_task_runner.Get();
- }
- scoped_refptr<base::SequencedTaskRunner> GetOneShotFileTaskRunner(
- base::TaskPriority priority) {
- return base::ThreadPool::CreateSequencedTaskRunner(
- {base::MayBlock(), base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN,
- priority});
- }
- } // namespace extensions
|