OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ios/chrome/browser/ios_chrome_main_parts.h" | 5 #include "ios/chrome/browser/ios_chrome_main_parts.h" |
6 | 6 |
7 #include "base/base_switches.h" | 7 #include "base/base_switches.h" |
8 #include "base/feature_list.h" | 8 #include "base/feature_list.h" |
9 #include "base/files/file_path.h" | 9 #include "base/files/file_path.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
| 11 #include "base/memory/ptr_util.h" |
11 #include "base/path_service.h" | 12 #include "base/path_service.h" |
12 #include "base/time/default_tick_clock.h" | 13 #include "base/time/default_tick_clock.h" |
13 #include "components/content_settings/core/browser/cookie_settings.h" | 14 #include "components/content_settings/core/browser/cookie_settings.h" |
14 #include "components/content_settings/core/common/content_settings_pattern.h" | 15 #include "components/content_settings/core/common/content_settings_pattern.h" |
15 #include "components/flags_ui/pref_service_flags_storage.h" | 16 #include "components/flags_ui/pref_service_flags_storage.h" |
16 #include "components/language_usage_metrics/language_usage_metrics.h" | 17 #include "components/language_usage_metrics/language_usage_metrics.h" |
17 #include "components/metrics/metrics_service.h" | 18 #include "components/metrics/metrics_service.h" |
18 #include "components/metrics/profiler/ios/ios_tracking_synchronizer_delegate.h" | 19 #include "components/metrics/profiler/ios/ios_tracking_synchronizer_delegate.h" |
19 #include "components/metrics/profiler/tracking_synchronizer.h" | 20 #include "components/metrics/profiler/tracking_synchronizer.h" |
20 #include "components/metrics_services_manager/metrics_services_manager.h" | 21 #include "components/metrics_services_manager/metrics_services_manager.h" |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
98 local_state_ = application_context_->GetLocalState(); | 99 local_state_ = application_context_->GetLocalState(); |
99 DCHECK(local_state_); | 100 DCHECK(local_state_); |
100 | 101 |
101 flags_ui::PrefServiceFlagsStorage flags_storage_( | 102 flags_ui::PrefServiceFlagsStorage flags_storage_( |
102 application_context_->GetLocalState()); | 103 application_context_->GetLocalState()); |
103 ConvertFlagsToSwitches(&flags_storage_, | 104 ConvertFlagsToSwitches(&flags_storage_, |
104 base::CommandLine::ForCurrentProcess()); | 105 base::CommandLine::ForCurrentProcess()); |
105 | 106 |
106 // Initialize tracking synchronizer system. | 107 // Initialize tracking synchronizer system. |
107 tracking_synchronizer_ = new metrics::TrackingSynchronizer( | 108 tracking_synchronizer_ = new metrics::TrackingSynchronizer( |
108 make_scoped_ptr(new base::DefaultTickClock()), | 109 base::WrapUnique(new base::DefaultTickClock()), |
109 base::Bind(&metrics::IOSTrackingSynchronizerDelegate::Create)); | 110 base::Bind(&metrics::IOSTrackingSynchronizerDelegate::Create)); |
110 | 111 |
111 // Now the command line has been mutated based on about:flags, we can setup | 112 // Now the command line has been mutated based on about:flags, we can setup |
112 // metrics and initialize field trials that are needed by IOSChromeIOThread's | 113 // metrics and initialize field trials that are needed by IOSChromeIOThread's |
113 // initialization which happens in ApplicationContext:PreCreateThreads. | 114 // initialization which happens in ApplicationContext:PreCreateThreads. |
114 SetUpMetricsAndFieldTrials(); | 115 SetUpMetricsAndFieldTrials(); |
115 | 116 |
116 // Initialize FieldTrialSynchronizer system. | 117 // Initialize FieldTrialSynchronizer system. |
117 field_trial_synchronizer_.reset(new ios::FieldTrialSynchronizer); | 118 field_trial_synchronizer_.reset(new ios::FieldTrialSynchronizer); |
118 | 119 |
(...skipping 23 matching lines...) Expand all Loading... |
142 browser_state_manager->GetLastUsedBrowserState(); | 143 browser_state_manager->GetLastUsedBrowserState(); |
143 | 144 |
144 #if defined(ENABLE_RLZ) | 145 #if defined(ENABLE_RLZ) |
145 // Init the RLZ library. This just schedules a task on the file thread to be | 146 // Init the RLZ library. This just schedules a task on the file thread to be |
146 // run sometime later. If this is the first run we record the installation | 147 // run sometime later. If this is the first run we record the installation |
147 // event. | 148 // event. |
148 int ping_delay = last_used_browser_state->GetPrefs()->GetInteger( | 149 int ping_delay = last_used_browser_state->GetPrefs()->GetInteger( |
149 FirstRun::GetPingDelayPrefName()); | 150 FirstRun::GetPingDelayPrefName()); |
150 // Negative ping delay means to send ping immediately after a first search is | 151 // Negative ping delay means to send ping immediately after a first search is |
151 // recorded. | 152 // recorded. |
152 rlz::RLZTracker::SetRlzDelegate(make_scoped_ptr(new RLZTrackerDelegateImpl)); | 153 rlz::RLZTracker::SetRlzDelegate(base::WrapUnique(new RLZTrackerDelegateImpl)); |
153 rlz::RLZTracker::InitRlzDelayed( | 154 rlz::RLZTracker::InitRlzDelayed( |
154 FirstRun::IsChromeFirstRun(), ping_delay < 0, | 155 FirstRun::IsChromeFirstRun(), ping_delay < 0, |
155 base::TimeDelta::FromMilliseconds(abs(ping_delay)), | 156 base::TimeDelta::FromMilliseconds(abs(ping_delay)), |
156 RLZTrackerDelegateImpl::IsGoogleDefaultSearch(last_used_browser_state), | 157 RLZTrackerDelegateImpl::IsGoogleDefaultSearch(last_used_browser_state), |
157 RLZTrackerDelegateImpl::IsGoogleHomepage(last_used_browser_state), | 158 RLZTrackerDelegateImpl::IsGoogleHomepage(last_used_browser_state), |
158 RLZTrackerDelegateImpl::IsGoogleInStartpages(last_used_browser_state)); | 159 RLZTrackerDelegateImpl::IsGoogleInStartpages(last_used_browser_state)); |
159 #endif // defined(ENABLE_RLZ) | 160 #endif // defined(ENABLE_RLZ) |
160 | 161 |
161 TranslateServiceIOS::Initialize(); | 162 TranslateServiceIOS::Initialize(); |
162 language_usage_metrics::LanguageUsageMetrics::RecordAcceptLanguages( | 163 language_usage_metrics::LanguageUsageMetrics::RecordAcceptLanguages( |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
214 if (command_line->HasSwitch(switches::kIOSForceVariationIds)) { | 215 if (command_line->HasSwitch(switches::kIOSForceVariationIds)) { |
215 // Create default variation ids which will always be included in the | 216 // Create default variation ids which will always be included in the |
216 // X-Client-Data request header. | 217 // X-Client-Data request header. |
217 variations::VariationsHttpHeaderProvider* provider = | 218 variations::VariationsHttpHeaderProvider* provider = |
218 variations::VariationsHttpHeaderProvider::GetInstance(); | 219 variations::VariationsHttpHeaderProvider::GetInstance(); |
219 bool result = provider->SetDefaultVariationIds( | 220 bool result = provider->SetDefaultVariationIds( |
220 command_line->GetSwitchValueASCII(switches::kIOSForceVariationIds)); | 221 command_line->GetSwitchValueASCII(switches::kIOSForceVariationIds)); |
221 CHECK(result) << "Invalid --" << switches::kIOSForceVariationIds | 222 CHECK(result) << "Invalid --" << switches::kIOSForceVariationIds |
222 << " list specified."; | 223 << " list specified."; |
223 } | 224 } |
224 scoped_ptr<base::FeatureList> feature_list(new base::FeatureList); | 225 std::unique_ptr<base::FeatureList> feature_list(new base::FeatureList); |
225 feature_list->InitializeFromCommandLine( | 226 feature_list->InitializeFromCommandLine( |
226 command_line->GetSwitchValueASCII(switches::kEnableIOSFeatures), | 227 command_line->GetSwitchValueASCII(switches::kEnableIOSFeatures), |
227 command_line->GetSwitchValueASCII(switches::kDisableIOSFeatures)); | 228 command_line->GetSwitchValueASCII(switches::kDisableIOSFeatures)); |
228 | 229 |
229 variations::VariationsService* variations_service = | 230 variations::VariationsService* variations_service = |
230 application_context_->GetVariationsService(); | 231 application_context_->GetVariationsService(); |
231 if (variations_service) | 232 if (variations_service) |
232 variations_service->CreateTrialsFromSeed(feature_list.get()); | 233 variations_service->CreateTrialsFromSeed(feature_list.get()); |
233 | 234 |
234 base::FeatureList::SetInstance(std::move(feature_list)); | 235 base::FeatureList::SetInstance(std::move(feature_list)); |
235 | 236 |
236 SetupFieldTrials(parsed_command_line_, | 237 SetupFieldTrials(parsed_command_line_, |
237 base::Time::FromTimeT(metrics->GetInstallDate())); | 238 base::Time::FromTimeT(metrics->GetInstallDate())); |
238 | 239 |
239 // Now that field trials have been created, initializes metrics recording. | 240 // Now that field trials have been created, initializes metrics recording. |
240 metrics->InitializeMetricsRecordingState(); | 241 metrics->InitializeMetricsRecordingState(); |
241 } | 242 } |
242 | 243 |
243 void IOSChromeMainParts::StartMetricsRecording() { | 244 void IOSChromeMainParts::StartMetricsRecording() { |
244 bool wifiOnly = local_state_->GetBoolean(prefs::kMetricsReportingWifiOnly); | 245 bool wifiOnly = local_state_->GetBoolean(prefs::kMetricsReportingWifiOnly); |
245 bool isConnectionCellular = net::NetworkChangeNotifier::IsConnectionCellular( | 246 bool isConnectionCellular = net::NetworkChangeNotifier::IsConnectionCellular( |
246 net::NetworkChangeNotifier::GetConnectionType()); | 247 net::NetworkChangeNotifier::GetConnectionType()); |
247 bool mayUpload = !wifiOnly || !isConnectionCellular; | 248 bool mayUpload = !wifiOnly || !isConnectionCellular; |
248 | 249 |
249 application_context_->GetMetricsServicesManager()->UpdateUploadPermissions( | 250 application_context_->GetMetricsServicesManager()->UpdateUploadPermissions( |
250 mayUpload); | 251 mayUpload); |
251 } | 252 } |
OLD | NEW |