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

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

Issue 289283011: Introduce ChromeStabilityMetricsProvider (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Response to review 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 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 8d40156120dbe823759a3e26846e5a8c8d6d6c51..5f23090a8ebf35db0ed1c348baf5e4e290516269 100644
--- a/chrome/browser/metrics/metrics_service.cc
+++ b/chrome/browser/metrics/metrics_service.cc
@@ -185,6 +185,7 @@
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/io_thread.h"
#include "chrome/browser/memory_details.h"
+#include "chrome/browser/metrics/chrome_stability_metrics_provider.h"
#include "chrome/browser/metrics/compression_utils.h"
#include "chrome/browser/metrics/metrics_log.h"
#include "chrome/browser/metrics/metrics_state_manager.h"
@@ -216,7 +217,6 @@
#include "content/public/browser/web_contents.h"
#include "content/public/common/process_type.h"
#include "content/public/common/webplugininfo.h"
-#include "extensions/browser/process_map.h"
#include "net/base/load_flags.h"
#include "net/url_request/url_fetcher.h"
@@ -305,20 +305,6 @@ ResponseStatus ResponseCodeToStatus(int response_code) {
}
}
-// Converts an exit code into something that can be inserted into our
-// histograms (which expect non-negative numbers less than MAX_INT).
-int MapCrashExitCodeForHistogram(int exit_code) {
-#if defined(OS_WIN)
- // Since |abs(STATUS_GUARD_PAGE_VIOLATION) == MAX_INT| it causes problems in
- // histograms.cc. Solve this by remapping it to a smaller value, which
- // hopefully doesn't conflict with other codes.
- if (exit_code == STATUS_GUARD_PAGE_VIOLATION)
- return 0x1FCF7EC3; // Randomly picked number.
-#endif
-
- return std::abs(exit_code);
-}
-
void MarkAppCleanShutdownAndCommit() {
PrefService* pref = g_browser_process->local_state();
pref->SetBoolean(prefs::kStabilityExitedCleanly, true);
@@ -480,9 +466,11 @@ MetricsService::MetricsService(metrics::MetricsStateManager* state_manager,
DCHECK(state_manager_);
DCHECK(client_);
- // TODO(asvitkine): Move this out of MetricsService.
+ // TODO(asvitkine): Move these out of MetricsService.
RegisterMetricsProvider(
scoped_ptr<metrics::MetricsProvider>(new OmniboxMetricsProvider));
+ RegisterMetricsProvider(
+ scoped_ptr<metrics::MetricsProvider>(new ChromeStabilityMetricsProvider));
BrowserChildProcessObserver::Add(this);
}
@@ -652,34 +640,12 @@ void MetricsService::Observe(int type,
case chrome::NOTIFICATION_OMNIBOX_OPENED_URL:
case chrome::NOTIFICATION_TAB_PARENTED:
case chrome::NOTIFICATION_TAB_CLOSING:
+ case content::NOTIFICATION_LOAD_START:
case content::NOTIFICATION_LOAD_STOP:
- // These notifications are used only to break out of idle mode.
- break;
-
- case content::NOTIFICATION_LOAD_START: {
- content::NavigationController* controller =
- content::Source<content::NavigationController>(source).ptr();
- content::WebContents* web_contents = controller->GetWebContents();
- LogLoadStarted(web_contents);
- break;
- }
-
- case content::NOTIFICATION_RENDERER_PROCESS_CLOSED: {
- content::RenderProcessHost::RendererClosedDetails* process_details =
- content::Details<
- content::RenderProcessHost::RendererClosedDetails>(
- details).ptr();
- content::RenderProcessHost* host =
- content::Source<content::RenderProcessHost>(source).ptr();
- LogRendererCrash(
- host, process_details->status, process_details->exit_code);
- break;
- }
-
+ case content::NOTIFICATION_RENDERER_PROCESS_CLOSED:
case content::NOTIFICATION_RENDER_WIDGET_HOST_HANG:
- LogRendererHang();
+ // These notifications are used only to break out of idle mode.
break;
-
default:
NOTREACHED();
break;
@@ -1665,50 +1631,6 @@ void MetricsService::IncrementLongPrefsValue(const char* path) {
pref->SetInt64(path, value + 1);
}
-void MetricsService::LogLoadStarted(content::WebContents* web_contents) {
- content::RecordAction(base::UserMetricsAction("PageLoad"));
- HISTOGRAM_ENUMERATION("Chrome.UmaPageloadCounter", 1, 2);
- IncrementPrefValue(prefs::kStabilityPageLoadCount);
- IncrementLongPrefsValue(prefs::kUninstallMetricsPageLoadCount);
- // We need to save the prefs, as page load count is a critical stat, and it
- // might be lost due to a crash :-(.
-}
-
-void MetricsService::LogRendererCrash(content::RenderProcessHost* host,
- base::TerminationStatus status,
- int exit_code) {
- bool was_extension_process =
- extensions::ProcessMap::Get(host->GetBrowserContext())
- ->Contains(host->GetID());
- if (status == base::TERMINATION_STATUS_PROCESS_CRASHED ||
- status == base::TERMINATION_STATUS_ABNORMAL_TERMINATION) {
- if (was_extension_process) {
- IncrementPrefValue(prefs::kStabilityExtensionRendererCrashCount);
-
- UMA_HISTOGRAM_SPARSE_SLOWLY("CrashExitCodes.Extension",
- MapCrashExitCodeForHistogram(exit_code));
- } else {
- IncrementPrefValue(prefs::kStabilityRendererCrashCount);
-
- UMA_HISTOGRAM_SPARSE_SLOWLY("CrashExitCodes.Renderer",
- MapCrashExitCodeForHistogram(exit_code));
- }
-
- UMA_HISTOGRAM_PERCENTAGE("BrowserRenderProcessHost.ChildCrashes",
- was_extension_process ? 2 : 1);
- } else if (status == base::TERMINATION_STATUS_PROCESS_WAS_KILLED) {
- UMA_HISTOGRAM_PERCENTAGE("BrowserRenderProcessHost.ChildKills",
- was_extension_process ? 2 : 1);
- } else if (status == base::TERMINATION_STATUS_STILL_RUNNING) {
- UMA_HISTOGRAM_PERCENTAGE("BrowserRenderProcessHost.DisconnectedAlive",
- was_extension_process ? 2 : 1);
- }
-}
-
-void MetricsService::LogRendererHang() {
- IncrementPrefValue(prefs::kStabilityRendererHangCount);
-}
-
bool MetricsService::UmaMetricsProperlyShutdown() {
CHECK(clean_shutdown_status_ == CLEANLY_SHUTDOWN ||
clean_shutdown_status_ == NEED_TO_SHUTDOWN);

Powered by Google App Engine
This is Rietveld 408576698