blob: 3e84eee083abfd40df585b4598341b4f130a0b84 [file] [log] [blame]
// 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.
#ifndef EXTENSIONS_BROWSER_EXTENSION_FILE_TASK_RUNNER_H_
#define EXTENSIONS_BROWSER_EXTENSION_FILE_TASK_RUNNER_H_
#include "base/memory/ref_counted.h"
#include "base/task/task_traits.h"
namespace base {
class SequencedTaskRunner;
}
namespace extensions {
// Returns the singleton instance of the task runner to be used for most
// extension-related tasks that read, modify, or delete files. All these tasks
// must be posted to this task runner, even if it is only reading the file,
// since other tasks may be modifying it.
scoped_refptr<base::SequencedTaskRunner> GetExtensionFileTaskRunner();
// Returns a non-singleton task runner, for tasks that touch files, but won't
// race with each other. Currently, this is used to unpack multiple extensions
// in parallel. They each touch a different set of files, which avoids potential
// race conditions.
scoped_refptr<base::SequencedTaskRunner> GetOneShotFileTaskRunner(
base::TaskPriority priority);
} // namespace extensions
#endif // EXTENSIONS_BROWSER_EXTENSION_FILE_TASK_RUNNER_H_