Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(421)

Side by Side Diff: chrome/browser/metrics/metrics_service.cc

Issue 292433015: Refactor MetricsLogChromeOS to ChromeOSMetricsProvider. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 #include "extensions/browser/process_map.h" 219 #include "extensions/browser/process_map.h"
220 #include "net/base/load_flags.h" 220 #include "net/base/load_flags.h"
221 #include "net/url_request/url_fetcher.h" 221 #include "net/url_request/url_fetcher.h"
222 222
223 // TODO(port): port browser_distribution.h. 223 // TODO(port): port browser_distribution.h.
224 #if !defined(OS_POSIX) 224 #if !defined(OS_POSIX)
225 #include "chrome/installer/util/browser_distribution.h" 225 #include "chrome/installer/util/browser_distribution.h"
226 #endif 226 #endif
227 227
228 #if defined(OS_CHROMEOS) 228 #if defined(OS_CHROMEOS)
229 #include "chrome/browser/chromeos/settings/cros_settings.h" 229 #include "chrome/browser/chromeos/settings/cros_settings.h"
Alexei Svitkine (slow) 2014/05/23 08:41:47 Do you mind doing the hardware class fetching and
Alexei Svitkine (slow) 2014/05/23 08:42:31 (Similar to what GoogleUpdateMetricsProviderWin do
blundell 2014/05/23 12:09:22 I'd prefer to leave this as a followup (and create
Alexei Svitkine (slow) 2014/05/23 14:16:20 OK
230 #include "chrome/browser/metrics/chromeos_metrics_provider.h"
230 #include "chromeos/system/statistics_provider.h" 231 #include "chromeos/system/statistics_provider.h"
231 #endif 232 #endif
232 233
233 #if defined(OS_WIN) 234 #if defined(OS_WIN)
234 #include <windows.h> // Needed for STATUS_* codes 235 #include <windows.h> // Needed for STATUS_* codes
235 #include "base/win/registry.h" 236 #include "base/win/registry.h"
236 #include "chrome/browser/metrics/google_update_metrics_provider_win.h" 237 #include "chrome/browser/metrics/google_update_metrics_provider_win.h"
237 #endif 238 #endif
238 239
239 #if !defined(OS_ANDROID) 240 #if !defined(OS_ANDROID)
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after
483 484
484 // TODO(asvitkine): Move this out of MetricsService. 485 // TODO(asvitkine): Move this out of MetricsService.
485 RegisterMetricsProvider( 486 RegisterMetricsProvider(
486 scoped_ptr<metrics::MetricsProvider>(new OmniboxMetricsProvider)); 487 scoped_ptr<metrics::MetricsProvider>(new OmniboxMetricsProvider));
487 488
488 #if defined(OS_WIN) 489 #if defined(OS_WIN)
489 google_update_metrics_provider_ = new GoogleUpdateMetricsProviderWin; 490 google_update_metrics_provider_ = new GoogleUpdateMetricsProviderWin;
490 RegisterMetricsProvider(scoped_ptr<metrics::MetricsProvider>( 491 RegisterMetricsProvider(scoped_ptr<metrics::MetricsProvider>(
491 google_update_metrics_provider_)); 492 google_update_metrics_provider_));
492 #endif 493 #endif
494
495 #if defined(OS_CHROMEOS)
496 RegisterMetricsProvider(
497 scoped_ptr<metrics::MetricsProvider>(new ChromeOSMetricsProvider));
498 #endif
499
493 BrowserChildProcessObserver::Add(this); 500 BrowserChildProcessObserver::Add(this);
494 } 501 }
495 502
496 MetricsService::~MetricsService() { 503 MetricsService::~MetricsService() {
497 DisableRecording(); 504 DisableRecording();
498 505
499 BrowserChildProcessObserver::Remove(this); 506 BrowserChildProcessObserver::Remove(this);
500 } 507 }
501 508
502 void MetricsService::InitializeMetricsRecordingState() { 509 void MetricsService::InitializeMetricsRecordingState() {
(...skipping 522 matching lines...) Expand 10 before | Expand all | Expand 10 after
1025 1032
1026 void MetricsService::RemoveObserver(MetricsServiceObserver* observer) { 1033 void MetricsService::RemoveObserver(MetricsServiceObserver* observer) {
1027 DCHECK(thread_checker_.CalledOnValidThread()); 1034 DCHECK(thread_checker_.CalledOnValidThread());
1028 observers_.RemoveObserver(observer); 1035 observers_.RemoveObserver(observer);
1029 } 1036 }
1030 1037
1031 void MetricsService::NotifyOnDidCreateMetricsLog() { 1038 void MetricsService::NotifyOnDidCreateMetricsLog() {
1032 DCHECK(thread_checker_.CalledOnValidThread()); 1039 DCHECK(thread_checker_.CalledOnValidThread());
1033 FOR_EACH_OBSERVER( 1040 FOR_EACH_OBSERVER(
1034 MetricsServiceObserver, observers_, OnDidCreateMetricsLog()); 1041 MetricsServiceObserver, observers_, OnDidCreateMetricsLog());
1042 for (size_t i = 0; i < metrics_providers_.size(); ++i)
1043 metrics_providers_[i]->OnDidCreateMetricsLog();
1035 } 1044 }
1036 1045
1037 //------------------------------------------------------------------------------ 1046 //------------------------------------------------------------------------------
1038 // State save methods 1047 // State save methods
1039 1048
1040 void MetricsService::ScheduleNextStateSave() { 1049 void MetricsService::ScheduleNextStateSave() {
1041 state_saver_factory_.InvalidateWeakPtrs(); 1050 state_saver_factory_.InvalidateWeakPtrs();
1042 1051
1043 base::MessageLoop::current()->PostDelayedTask(FROM_HERE, 1052 base::MessageLoop::current()->PostDelayedTask(FROM_HERE,
1044 base::Bind(&MetricsService::SaveLocalState, 1053 base::Bind(&MetricsService::SaveLocalState,
(...skipping 675 matching lines...) Expand 10 before | Expand all | Expand 10 after
1720 // Redundant setting to assure that we always reset this value at shutdown 1729 // Redundant setting to assure that we always reset this value at shutdown
1721 // (and that we don't use some alternate path, and not call LogCleanShutdown). 1730 // (and that we don't use some alternate path, and not call LogCleanShutdown).
1722 clean_shutdown_status_ = CLEANLY_SHUTDOWN; 1731 clean_shutdown_status_ = CLEANLY_SHUTDOWN;
1723 1732
1724 RecordBooleanPrefValue(prefs::kStabilityExitedCleanly, true); 1733 RecordBooleanPrefValue(prefs::kStabilityExitedCleanly, true);
1725 PrefService* pref = g_browser_process->local_state(); 1734 PrefService* pref = g_browser_process->local_state();
1726 pref->SetInteger(prefs::kStabilityExecutionPhase, 1735 pref->SetInteger(prefs::kStabilityExecutionPhase,
1727 MetricsService::SHUTDOWN_COMPLETE); 1736 MetricsService::SHUTDOWN_COMPLETE);
1728 } 1737 }
1729 1738
1730 #if defined(OS_CHROMEOS)
1731 void MetricsService::LogChromeOSCrash(const std::string &crash_type) {
1732 if (crash_type == "user")
1733 IncrementPrefValue(prefs::kStabilityOtherUserCrashCount);
1734 else if (crash_type == "kernel")
1735 IncrementPrefValue(prefs::kStabilityKernelCrashCount);
1736 else if (crash_type == "uncleanshutdown")
1737 IncrementPrefValue(prefs::kStabilitySystemUncleanShutdownCount);
1738 else
1739 NOTREACHED() << "Unexpected Chrome OS crash type " << crash_type;
1740 // Wake up metrics logs sending if necessary now that new
1741 // log data is available.
1742 HandleIdleSinceLastTransmission(false);
1743 }
1744 #endif // OS_CHROMEOS
1745
1746 void MetricsService::LogPluginLoadingError(const base::FilePath& plugin_path) { 1739 void MetricsService::LogPluginLoadingError(const base::FilePath& plugin_path) {
1747 content::WebPluginInfo plugin; 1740 content::WebPluginInfo plugin;
1748 bool success = 1741 bool success =
1749 content::PluginService::GetInstance()->GetPluginInfoByPath(plugin_path, 1742 content::PluginService::GetInstance()->GetPluginInfoByPath(plugin_path,
1750 &plugin); 1743 &plugin);
1751 DCHECK(success); 1744 DCHECK(success);
1752 ChildProcessStats& stats = child_process_stats_buffer_[plugin.name]; 1745 ChildProcessStats& stats = child_process_stats_buffer_[plugin.name];
1753 // Initialize the type if this entry is new. 1746 // Initialize the type if this entry is new.
1754 if (stats.process_type == content::PROCESS_TYPE_UNKNOWN) { 1747 if (stats.process_type == content::PROCESS_TYPE_UNKNOWN) {
1755 // The plug-in process might not actually of type PLUGIN (which means 1748 // The plug-in process might not actually of type PLUGIN (which means
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
1930 if (metrics_service) 1923 if (metrics_service)
1931 metrics_service->AddObserver(observer); 1924 metrics_service->AddObserver(observer);
1932 } 1925 }
1933 1926
1934 void MetricsServiceHelper::RemoveMetricsServiceObserver( 1927 void MetricsServiceHelper::RemoveMetricsServiceObserver(
1935 MetricsServiceObserver* observer) { 1928 MetricsServiceObserver* observer) {
1936 MetricsService* metrics_service = g_browser_process->metrics_service(); 1929 MetricsService* metrics_service = g_browser_process->metrics_service();
1937 if (metrics_service) 1930 if (metrics_service)
1938 metrics_service->RemoveObserver(observer); 1931 metrics_service->RemoveObserver(observer);
1939 } 1932 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698