OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 //------------------------------------------------------------------------------ | 5 //------------------------------------------------------------------------------ |
6 // Description of the life cycle of a instance of MetricsService. | 6 // Description of the life cycle of a instance of MetricsService. |
7 // | 7 // |
8 // OVERVIEW | 8 // OVERVIEW |
9 // | 9 // |
10 // A MetricsService instance is typically created at application startup. It is | 10 // A MetricsService instance is typically created at application startup. It is |
(...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
373 }; | 373 }; |
374 | 374 |
375 // Handles asynchronous fetching of memory details. | 375 // Handles asynchronous fetching of memory details. |
376 // Will run the provided task after finished. | 376 // Will run the provided task after finished. |
377 class MetricsMemoryDetails : public MemoryDetails { | 377 class MetricsMemoryDetails : public MemoryDetails { |
378 public: | 378 public: |
379 explicit MetricsMemoryDetails(const base::Closure& callback) | 379 explicit MetricsMemoryDetails(const base::Closure& callback) |
380 : callback_(callback) {} | 380 : callback_(callback) {} |
381 | 381 |
382 virtual void OnDetailsAvailable() OVERRIDE { | 382 virtual void OnDetailsAvailable() OVERRIDE { |
383 MessageLoop::current()->PostTask(FROM_HERE, callback_); | 383 base::MessageLoop::current()->PostTask(FROM_HERE, callback_); |
384 } | 384 } |
385 | 385 |
386 private: | 386 private: |
387 virtual ~MetricsMemoryDetails() {} | 387 virtual ~MetricsMemoryDetails() {} |
388 | 388 |
389 base::Closure callback_; | 389 base::Closure callback_; |
390 DISALLOW_COPY_AND_ASSIGN(MetricsMemoryDetails); | 390 DISALLOW_COPY_AND_ASSIGN(MetricsMemoryDetails); |
391 }; | 391 }; |
392 | 392 |
393 // static | 393 // static |
(...skipping 559 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
953 const std::vector<webkit::WebPluginInfo>& plugins) { | 953 const std::vector<webkit::WebPluginInfo>& plugins) { |
954 DCHECK_EQ(INIT_TASK_SCHEDULED, state_); | 954 DCHECK_EQ(INIT_TASK_SCHEDULED, state_); |
955 plugins_ = plugins; | 955 plugins_ = plugins; |
956 | 956 |
957 // Schedules a task on a blocking pool thread to gather Google Update | 957 // Schedules a task on a blocking pool thread to gather Google Update |
958 // statistics (requires Registry reads). | 958 // statistics (requires Registry reads). |
959 BrowserThread::PostBlockingPoolTask( | 959 BrowserThread::PostBlockingPoolTask( |
960 FROM_HERE, | 960 FROM_HERE, |
961 base::Bind(&MetricsService::InitTaskGetGoogleUpdateData, | 961 base::Bind(&MetricsService::InitTaskGetGoogleUpdateData, |
962 self_ptr_factory_.GetWeakPtr(), | 962 self_ptr_factory_.GetWeakPtr(), |
963 MessageLoop::current()->message_loop_proxy())); | 963 base::MessageLoop::current()->message_loop_proxy())); |
964 } | 964 } |
965 | 965 |
966 // static | 966 // static |
967 void MetricsService::InitTaskGetGoogleUpdateData( | 967 void MetricsService::InitTaskGetGoogleUpdateData( |
968 base::WeakPtr<MetricsService> self, | 968 base::WeakPtr<MetricsService> self, |
969 base::MessageLoopProxy* target_loop) { | 969 base::MessageLoopProxy* target_loop) { |
970 GoogleUpdateMetrics google_update_metrics; | 970 GoogleUpdateMetrics google_update_metrics; |
971 | 971 |
972 #if defined(OS_WIN) && defined(GOOGLE_CHROME_BUILD) | 972 #if defined(OS_WIN) && defined(GOOGLE_CHROME_BUILD) |
973 const bool system_install = GoogleUpdateSettings::IsSystemInstall(); | 973 const bool system_install = GoogleUpdateSettings::IsSystemInstall(); |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1064 std::string MetricsService::GenerateClientID() { | 1064 std::string MetricsService::GenerateClientID() { |
1065 return base::GenerateGUID(); | 1065 return base::GenerateGUID(); |
1066 } | 1066 } |
1067 | 1067 |
1068 //------------------------------------------------------------------------------ | 1068 //------------------------------------------------------------------------------ |
1069 // State save methods | 1069 // State save methods |
1070 | 1070 |
1071 void MetricsService::ScheduleNextStateSave() { | 1071 void MetricsService::ScheduleNextStateSave() { |
1072 state_saver_factory_.InvalidateWeakPtrs(); | 1072 state_saver_factory_.InvalidateWeakPtrs(); |
1073 | 1073 |
1074 MessageLoop::current()->PostDelayedTask(FROM_HERE, | 1074 base::MessageLoop::current()->PostDelayedTask(FROM_HERE, |
1075 base::Bind(&MetricsService::SaveLocalState, | 1075 base::Bind(&MetricsService::SaveLocalState, |
1076 state_saver_factory_.GetWeakPtr()), | 1076 state_saver_factory_.GetWeakPtr()), |
1077 base::TimeDelta::FromMinutes(kSaveStateIntervalMinutes)); | 1077 base::TimeDelta::FromMinutes(kSaveStateIntervalMinutes)); |
1078 } | 1078 } |
1079 | 1079 |
1080 void MetricsService::SaveLocalState() { | 1080 void MetricsService::SaveLocalState() { |
1081 PrefService* pref = g_browser_process->local_state(); | 1081 PrefService* pref = g_browser_process->local_state(); |
1082 if (!pref) { | 1082 if (!pref) { |
1083 NOTREACHED(); | 1083 NOTREACHED(); |
1084 return; | 1084 return; |
(...skipping 20 matching lines...) Expand all Loading... |
1105 | 1105 |
1106 // Schedules a task on the file thread for execution of slower | 1106 // Schedules a task on the file thread for execution of slower |
1107 // initialization steps (such as plugin list generation) necessary | 1107 // initialization steps (such as plugin list generation) necessary |
1108 // for sending the initial log. This avoids blocking the main UI | 1108 // for sending the initial log. This avoids blocking the main UI |
1109 // thread. | 1109 // thread. |
1110 BrowserThread::PostDelayedTask( | 1110 BrowserThread::PostDelayedTask( |
1111 BrowserThread::FILE, | 1111 BrowserThread::FILE, |
1112 FROM_HERE, | 1112 FROM_HERE, |
1113 base::Bind(&MetricsService::InitTaskGetHardwareClass, | 1113 base::Bind(&MetricsService::InitTaskGetHardwareClass, |
1114 self_ptr_factory_.GetWeakPtr(), | 1114 self_ptr_factory_.GetWeakPtr(), |
1115 MessageLoop::current()->message_loop_proxy()), | 1115 base::MessageLoop::current()->message_loop_proxy()), |
1116 base::TimeDelta::FromSeconds(kInitializationDelaySeconds)); | 1116 base::TimeDelta::FromSeconds(kInitializationDelaySeconds)); |
1117 } | 1117 } |
1118 } | 1118 } |
1119 | 1119 |
1120 void MetricsService::CloseCurrentLog() { | 1120 void MetricsService::CloseCurrentLog() { |
1121 if (!log_manager_.current_log()) | 1121 if (!log_manager_.current_log()) |
1122 return; | 1122 return; |
1123 | 1123 |
1124 // TODO(jar): Integrate bounds on log recording more consistently, so that we | 1124 // TODO(jar): Integrate bounds on log recording more consistently, so that we |
1125 // can stop recording logs that are too big much sooner. | 1125 // can stop recording logs that are too big much sooner. |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1256 | 1256 |
1257 // Create a callback_task for OnHistogramSynchronizationDone. | 1257 // Create a callback_task for OnHistogramSynchronizationDone. |
1258 base::Closure callback = base::Bind( | 1258 base::Closure callback = base::Bind( |
1259 &MetricsService::OnHistogramSynchronizationDone, | 1259 &MetricsService::OnHistogramSynchronizationDone, |
1260 self_ptr_factory_.GetWeakPtr()); | 1260 self_ptr_factory_.GetWeakPtr()); |
1261 | 1261 |
1262 // Set up the callback to task to call after we receive histograms from all | 1262 // Set up the callback to task to call after we receive histograms from all |
1263 // child processes. Wait time specifies how long to wait before absolutely | 1263 // child processes. Wait time specifies how long to wait before absolutely |
1264 // calling us back on the task. | 1264 // calling us back on the task. |
1265 content::FetchHistogramsAsynchronously( | 1265 content::FetchHistogramsAsynchronously( |
1266 MessageLoop::current(), callback, | 1266 base::MessageLoop::current(), callback, |
1267 base::TimeDelta::FromMilliseconds(kMaxHistogramGatheringWaitDuration)); | 1267 base::TimeDelta::FromMilliseconds(kMaxHistogramGatheringWaitDuration)); |
1268 } | 1268 } |
1269 | 1269 |
1270 void MetricsService::OnHistogramSynchronizationDone() { | 1270 void MetricsService::OnHistogramSynchronizationDone() { |
1271 DCHECK(IsSingleThreaded()); | 1271 DCHECK(IsSingleThreaded()); |
1272 // This function should only be called as the callback from an ansynchronous | 1272 // This function should only be called as the callback from an ansynchronous |
1273 // step. | 1273 // step. |
1274 DCHECK(waiting_for_asynchronous_reporting_step_); | 1274 DCHECK(waiting_for_asynchronous_reporting_step_); |
1275 | 1275 |
1276 waiting_for_asynchronous_reporting_step_ = false; | 1276 waiting_for_asynchronous_reporting_step_ = false; |
(...skipping 534 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1811 if (local_state) { | 1811 if (local_state) { |
1812 const PrefService::Preference* uma_pref = | 1812 const PrefService::Preference* uma_pref = |
1813 local_state->FindPreference(prefs::kMetricsReportingEnabled); | 1813 local_state->FindPreference(prefs::kMetricsReportingEnabled); |
1814 if (uma_pref) { | 1814 if (uma_pref) { |
1815 bool success = uma_pref->GetValue()->GetAsBoolean(&result); | 1815 bool success = uma_pref->GetValue()->GetAsBoolean(&result); |
1816 DCHECK(success); | 1816 DCHECK(success); |
1817 } | 1817 } |
1818 } | 1818 } |
1819 return result; | 1819 return result; |
1820 } | 1820 } |
OLD | NEW |