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

Unified Diff: chrome/browser/metrics/metrics_service.cc

Issue 8113035: Remove RenderProcessHost::is_extension_process (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: updates Created 9 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/metrics/metrics_service.cc
diff --git a/chrome/browser/metrics/metrics_service.cc b/chrome/browser/metrics/metrics_service.cc
index 88a82ab9ba3ca4a0b1b4d2ecf39bbdc7617a9e1e..2d21539ed3af536ee83fd6a4dc29bb8e7dc3e011 100644
--- a/chrome/browser/metrics/metrics_service.cc
+++ b/chrome/browser/metrics/metrics_service.cc
@@ -156,6 +156,7 @@
#include "base/values.h"
#include "chrome/browser/bookmarks/bookmark_model.h"
#include "chrome/browser/browser_process.h"
+#include "chrome/browser/extensions/extension_process_manager.h"
#include "chrome/browser/memory_details.h"
#include "chrome/browser/metrics/histogram_synchronizer.h"
#include "chrome/browser/metrics/metrics_log.h"
@@ -524,16 +525,9 @@ void MetricsService::Observe(int type,
case content::NOTIFICATION_RENDERER_PROCESS_CLOSED: {
RenderProcessHost::RendererClosedDetails* process_details =
Details<RenderProcessHost::RendererClosedDetails>(details).ptr();
- if (process_details->status ==
- base::TERMINATION_STATUS_PROCESS_CRASHED ||
- process_details->status ==
- base::TERMINATION_STATUS_ABNORMAL_TERMINATION) {
- if (process_details->was_extension_renderer) {
- LogExtensionRendererCrash();
- } else {
- LogRendererCrash();
- }
- }
+ RenderProcessHost* host = Source<RenderProcessHost>(source).ptr();
+ LogRendererCrash(
+ host, process_details->status, process_details->was_alive);
}
break;
@@ -1241,12 +1235,36 @@ void MetricsService::LogLoadStarted() {
// might be lost due to a crash :-(.
}
-void MetricsService::LogRendererCrash() {
- IncrementPrefValue(prefs::kStabilityRendererCrashCount);
-}
-
-void MetricsService::LogExtensionRendererCrash() {
- IncrementPrefValue(prefs::kStabilityExtensionRendererCrashCount);
+void MetricsService::LogRendererCrash(RenderProcessHost* host,
+ base::TerminationStatus status,
+ bool was_alive) {
+ Profile* profile = Profile::FromBrowserContext(host->browser_context());
+ ExtensionProcessManager* extension_process_manager =
+ profile->GetExtensionProcessManager();
+ bool was_extension_process = extension_process_manager ?
+ extension_process_manager->IsExtensionProcess(host->id()) :
+ false;
+ if (status == base::TERMINATION_STATUS_PROCESS_CRASHED ||
+ status == base::TERMINATION_STATUS_ABNORMAL_TERMINATION) {
+ if (was_extension_process)
+ IncrementPrefValue(prefs::kStabilityExtensionRendererCrashCount);
+ else
+ IncrementPrefValue(prefs::kStabilityRendererCrashCount);
+
+ UMA_HISTOGRAM_PERCENTAGE("BrowserRenderProcessHost.ChildCrashes",
+ was_extension_process ? 2 : 1);
+ if (was_alive) {
+ UMA_HISTOGRAM_PERCENTAGE("BrowserRenderProcessHost.ChildCrashesWasAlive",
+ was_extension_process ? 2 : 1);
+ }
+ } else if (status == base::TERMINATION_STATUS_PROCESS_WAS_KILLED) {
+ UMA_HISTOGRAM_PERCENTAGE("BrowserRenderProcessHost.ChildKills",
+ was_extension_process ? 2 : 1);
+ if (was_alive) {
+ UMA_HISTOGRAM_PERCENTAGE("BrowserRenderProcessHost.ChildKillsWasAlive",
+ was_extension_process ? 2 : 1);
+ }
+ }
}
void MetricsService::LogRendererHang() {
« no previous file with comments | « chrome/browser/metrics/metrics_service.h ('k') | chrome/browser/renderer_host/chrome_render_view_host_observer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698