Index: chrome/browser/metrics/chrome_stability_metrics_provider.cc |
=================================================================== |
--- chrome/browser/metrics/chrome_stability_metrics_provider.cc (revision 272600) |
+++ chrome/browser/metrics/chrome_stability_metrics_provider.cc (working copy) |
@@ -9,17 +9,23 @@ |
#include "base/logging.h" |
#include "base/metrics/histogram.h" |
#include "base/metrics/sparse_histogram.h" |
+#include "base/prefs/pref_registry_simple.h" |
#include "base/prefs/pref_service.h" |
#include "chrome/browser/browser_process.h" |
#include "chrome/browser/chrome_notification_types.h" |
#include "chrome/common/pref_names.h" |
#include "components/metrics/proto/system_profile.pb.h" |
+#include "content/public/browser/child_process_data.h" |
#include "content/public/browser/notification_service.h" |
#include "content/public/browser/render_process_host.h" |
#include "content/public/browser/user_metrics.h" |
#include "content/public/browser/web_contents.h" |
#include "extensions/browser/process_map.h" |
+#if defined(ENABLE_PLUGINS) |
+#include "chrome/browser/metrics/plugin_metrics_provider.h" |
+#endif |
+ |
#if defined(OS_WIN) |
#include <windows.h> // Needed for STATUS_* codes |
#endif |
@@ -57,9 +63,11 @@ |
} // namespace |
ChromeStabilityMetricsProvider::ChromeStabilityMetricsProvider() { |
+ BrowserChildProcessObserver::Add(this); |
} |
ChromeStabilityMetricsProvider::~ChromeStabilityMetricsProvider() { |
+ BrowserChildProcessObserver::Remove(this); |
} |
void ChromeStabilityMetricsProvider::OnRecordingEnabled() { |
@@ -109,6 +117,18 @@ |
} |
} |
+// static |
+void ChromeStabilityMetricsProvider::RegisterPrefs( |
+ PrefRegistrySimple* registry) { |
+ registry->RegisterIntegerPref(prefs::kStabilityPageLoadCount, 0); |
+ registry->RegisterIntegerPref(prefs::kStabilityRendererCrashCount, 0); |
+ registry->RegisterIntegerPref(prefs::kStabilityExtensionRendererCrashCount, |
+ 0); |
+ registry->RegisterIntegerPref(prefs::kStabilityRendererHangCount, 0); |
+ registry->RegisterIntegerPref(prefs::kStabilityChildProcessCrashCount, 0); |
+ registry->RegisterInt64Pref(prefs::kUninstallMetricsPageLoadCount, 0); |
+} |
+ |
void ChromeStabilityMetricsProvider::Observe( |
int type, |
const content::NotificationSource& source, |
@@ -143,6 +163,18 @@ |
} |
} |
+void ChromeStabilityMetricsProvider::BrowserChildProcessCrashed( |
+ const content::ChildProcessData& data) { |
+#if defined(ENABLE_PLUGINS) |
+ // Exclude plugin crashes from the count below because we report them via |
+ // a separate UMA metric. |
+ if (PluginMetricsProvider::IsPluginProcess(data.process_type)) |
+ return; |
+#endif |
+ |
+ IncrementPrefValue(prefs::kStabilityChildProcessCrashCount); |
+} |
+ |
void ChromeStabilityMetricsProvider::LogLoadStarted( |
content::WebContents* web_contents) { |
content::RecordAction(base::UserMetricsAction("PageLoad")); |