blob: 42581776d946efb087ae75a524e5dea120092f13 [file] [log] [blame]
[email protected]1eab4e92014-05-09 02:17:191// Copyright 2014 The Chromium Authors. All rights reserved.
[email protected]48372252013-12-20 12:18:012// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
[email protected]1eab4e92014-05-09 02:17:195#include "components/feedback/feedback_uploader_factory.h"
[email protected]48372252013-12-20 12:18:016
7#include "base/memory/singleton.h"
Ahmed Fakhryaf8ab052017-07-21 21:39:078#include "base/single_thread_task_runner.h"
Gabriel Charette44db1422018-08-06 11:19:339#include "base/task/post_task.h"
10#include "base/task/task_traits.h"
Gabriel Charettedd8d5985e2020-02-26 18:38:3511#include "base/task/thread_pool.h"
[email protected]1eab4e92014-05-09 02:17:1912#include "components/feedback/feedback_uploader.h"
[email protected]95003d522014-03-13 20:22:3113#include "components/keyed_service/content/browser_context_dependency_manager.h"
Robbie McElrathd956f862018-07-09 22:01:0214#include "content/public/browser/browser_context.h"
[email protected]48372252013-12-20 12:18:0115
16namespace feedback {
17
18// static
19FeedbackUploaderFactory* FeedbackUploaderFactory::GetInstance() {
olli.raula36aa8be2015-09-10 11:14:2220 return base::Singleton<FeedbackUploaderFactory>::get();
[email protected]48372252013-12-20 12:18:0121}
22
23// static
24FeedbackUploader* FeedbackUploaderFactory::GetForBrowserContext(
25 content::BrowserContext* context) {
Ahmed Fakhry7ff0cdb2017-08-22 20:11:4526 return static_cast<FeedbackUploader*>(
[email protected]48372252013-12-20 12:18:0127 GetInstance()->GetServiceForBrowserContext(context, true));
28}
29
Ahmed Fakhryaf8ab052017-07-21 21:39:0730// static
31scoped_refptr<base::SingleThreadTaskRunner>
32FeedbackUploaderFactory::CreateUploaderTaskRunner() {
33 // Uses a BLOCK_SHUTDOWN file task runner because we really don't want to
34 // lose reports or corrupt their files.
Gabriel Charettedd8d5985e2020-02-26 18:38:3535 return base::ThreadPool::CreateSingleThreadTaskRunner(
36 {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
Ahmed Fakhryaf8ab052017-07-21 21:39:0737 base::TaskShutdownBehavior::BLOCK_SHUTDOWN});
38}
39
Ahmed Fakhry7ff0cdb2017-08-22 20:11:4540FeedbackUploaderFactory::FeedbackUploaderFactory(const char* service_name)
41 : BrowserContextKeyedServiceFactory(
42 service_name,
43 BrowserContextDependencyManager::GetInstance()),
44 task_runner_(CreateUploaderTaskRunner()) {}
45
[email protected]48372252013-12-20 12:18:0146FeedbackUploaderFactory::FeedbackUploaderFactory()
47 : BrowserContextKeyedServiceFactory(
48 "feedback::FeedbackUploader",
Ahmed Fakhryaf8ab052017-07-21 21:39:0749 BrowserContextDependencyManager::GetInstance()),
50 task_runner_(CreateUploaderTaskRunner()) {}
[email protected]48372252013-12-20 12:18:0151
52FeedbackUploaderFactory::~FeedbackUploaderFactory() {}
53
[email protected]95003d522014-03-13 20:22:3154KeyedService* FeedbackUploaderFactory::BuildServiceInstanceFor(
[email protected]48372252013-12-20 12:18:0155 content::BrowserContext* context) const {
Evan Stadec34903a2019-10-09 01:15:3656 return new FeedbackUploader(context, task_runner_);
[email protected]48372252013-12-20 12:18:0157}
58
[email protected]873a6c082014-01-18 03:25:0759content::BrowserContext* FeedbackUploaderFactory::GetBrowserContextToUse(
60 content::BrowserContext* context) const {
[email protected]1eab4e92014-05-09 02:17:1961 return context;
[email protected]873a6c082014-01-18 03:25:0762}
63
[email protected]48372252013-12-20 12:18:0164} // namespace feedback