Upstream version 10.38.208.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / domain_reliability / service_factory.cc
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/domain_reliability/service_factory.h"
6
7 #include "base/command_line.h"
8 #include "base/metrics/field_trial.h"
9 #include "base/prefs/pref_service.h"
10 #include "chrome/browser/browser_process.h"
11 #include "chrome/common/chrome_switches.h"
12 #include "chrome/common/pref_names.h"
13 #include "components/domain_reliability/service.h"
14 #include "components/keyed_service/content/browser_context_dependency_manager.h"
15 #include "content/public/browser/browser_context.h"
16
17 namespace domain_reliability {
18
19 namespace {
20
21 // Identifies Chrome as the source of Domain Reliability uploads it sends.
22 const char* kDomainReliabilityUploadReporterString = "chrome";
23
24 bool IsDomainReliabilityMonitoringEnabled() {
25   CommandLine* command_line = CommandLine::ForCurrentProcess();
26   if (command_line->HasSwitch(switches::kDisableDomainReliability))
27     return false;
28   if (command_line->HasSwitch(switches::kEnableDomainReliability))
29     return true;
30   return base::FieldTrialList::FindFullName("DomRel-Enable") == "enable";
31 }
32
33 }  // namespace
34
35 // static
36 DomainReliabilityService*
37 DomainReliabilityServiceFactory::GetForBrowserContext(
38     content::BrowserContext* context) {
39   return static_cast<DomainReliabilityService*>(
40       GetInstance()->GetServiceForBrowserContext(context,
41                                                  /* create = */ true));
42 }
43
44 // static
45 DomainReliabilityServiceFactory*
46 DomainReliabilityServiceFactory::GetInstance() {
47   return Singleton<DomainReliabilityServiceFactory>::get();
48 }
49
50 DomainReliabilityServiceFactory::DomainReliabilityServiceFactory()
51     : BrowserContextKeyedServiceFactory(
52           "DomainReliabilityService",
53           BrowserContextDependencyManager::GetInstance()) {}
54
55 DomainReliabilityServiceFactory::~DomainReliabilityServiceFactory() {}
56
57 KeyedService* DomainReliabilityServiceFactory::BuildServiceInstanceFor(
58     content::BrowserContext* context) const {
59   if (!IsDomainReliabilityMonitoringEnabled())
60     return NULL;
61
62   if (!g_browser_process->local_state()->GetBoolean(
63           prefs::kMetricsReportingEnabled)) {
64     return NULL;
65   }
66
67   return DomainReliabilityService::Create(
68       kDomainReliabilityUploadReporterString);
69 }
70
71 }  // namespace domain_reliability