// 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 GetExtensionFileTaskRunner() { return g_task_runner.Get(); } scoped_refptr GetOneShotFileTaskRunner( base::TaskPriority priority) { return base::ThreadPool::CreateSequencedTaskRunner( {base::MayBlock(), base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN, priority}); } } // namespace extensions