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

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

Issue 10702048: Remove the code to wait on disconnected child processes to get the exit code. This was done in r101… (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: sync Created 8 years, 5 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 | Annotate | Revision Log
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 10 // A MetricsService instance is typically created at application startup. It
(...skipping 662 matching lines...) Expand 10 before | Expand all | Expand 10 after
673 break; 673 break;
674 674
675 case content::NOTIFICATION_RENDERER_PROCESS_CLOSED: { 675 case content::NOTIFICATION_RENDERER_PROCESS_CLOSED: {
676 content::RenderProcessHost::RendererClosedDetails* process_details = 676 content::RenderProcessHost::RendererClosedDetails* process_details =
677 content::Details< 677 content::Details<
678 content::RenderProcessHost::RendererClosedDetails>( 678 content::RenderProcessHost::RendererClosedDetails>(
679 details).ptr(); 679 details).ptr();
680 content::RenderProcessHost* host = 680 content::RenderProcessHost* host =
681 content::Source<content::RenderProcessHost>(source).ptr(); 681 content::Source<content::RenderProcessHost>(source).ptr();
682 LogRendererCrash( 682 LogRendererCrash(
683 host, process_details->status, process_details->exit_code, 683 host, process_details->status, process_details->exit_code);
684 process_details->was_alive);
685 } 684 }
686 break; 685 break;
687 686
688 case content::NOTIFICATION_RENDERER_PROCESS_HANG: 687 case content::NOTIFICATION_RENDERER_PROCESS_HANG:
689 LogRendererHang(); 688 LogRendererHang();
690 break; 689 break;
691 690
692 case content::NOTIFICATION_CHILD_PROCESS_HOST_CONNECTED: 691 case content::NOTIFICATION_CHILD_PROCESS_HOST_CONNECTED:
693 case content::NOTIFICATION_CHILD_PROCESS_CRASHED: 692 case content::NOTIFICATION_CHILD_PROCESS_CRASHED:
694 case content::NOTIFICATION_CHILD_INSTANCE_CREATED: 693 case content::NOTIFICATION_CHILD_INSTANCE_CREATED:
(...skipping 863 matching lines...) Expand 10 before | Expand all | Expand 10 after
1558 void MetricsService::LogLoadStarted() { 1557 void MetricsService::LogLoadStarted() {
1559 HISTOGRAM_ENUMERATION("Chrome.UmaPageloadCounter", 1, 2); 1558 HISTOGRAM_ENUMERATION("Chrome.UmaPageloadCounter", 1, 2);
1560 IncrementPrefValue(prefs::kStabilityPageLoadCount); 1559 IncrementPrefValue(prefs::kStabilityPageLoadCount);
1561 IncrementLongPrefsValue(prefs::kUninstallMetricsPageLoadCount); 1560 IncrementLongPrefsValue(prefs::kUninstallMetricsPageLoadCount);
1562 // We need to save the prefs, as page load count is a critical stat, and it 1561 // We need to save the prefs, as page load count is a critical stat, and it
1563 // might be lost due to a crash :-(. 1562 // might be lost due to a crash :-(.
1564 } 1563 }
1565 1564
1566 void MetricsService::LogRendererCrash(content::RenderProcessHost* host, 1565 void MetricsService::LogRendererCrash(content::RenderProcessHost* host,
1567 base::TerminationStatus status, 1566 base::TerminationStatus status,
1568 int exit_code, 1567 int exit_code) {
1569 bool was_alive) {
1570 Profile* profile = Profile::FromBrowserContext(host->GetBrowserContext()); 1568 Profile* profile = Profile::FromBrowserContext(host->GetBrowserContext());
1571 ExtensionService* service = profile->GetExtensionService(); 1569 ExtensionService* service = profile->GetExtensionService();
1572 bool was_extension_process = 1570 bool was_extension_process =
1573 service && service->process_map()->Contains(host->GetID()); 1571 service && service->process_map()->Contains(host->GetID());
1574 if (status == base::TERMINATION_STATUS_PROCESS_CRASHED || 1572 if (status == base::TERMINATION_STATUS_PROCESS_CRASHED ||
1575 status == base::TERMINATION_STATUS_ABNORMAL_TERMINATION) { 1573 status == base::TERMINATION_STATUS_ABNORMAL_TERMINATION) {
1576 if (was_extension_process) { 1574 if (was_extension_process) {
1577 IncrementPrefValue(prefs::kStabilityExtensionRendererCrashCount); 1575 IncrementPrefValue(prefs::kStabilityExtensionRendererCrashCount);
1578 1576
1579 UMA_HISTOGRAM_CUSTOM_ENUMERATION("CrashExitCodes.Extension", 1577 UMA_HISTOGRAM_CUSTOM_ENUMERATION("CrashExitCodes.Extension",
1580 MapCrashExitCodeForHistogram(exit_code), 1578 MapCrashExitCodeForHistogram(exit_code),
1581 GetAllCrashExitCodes()); 1579 GetAllCrashExitCodes());
1582 } else { 1580 } else {
1583 IncrementPrefValue(prefs::kStabilityRendererCrashCount); 1581 IncrementPrefValue(prefs::kStabilityRendererCrashCount);
1584 1582
1585 UMA_HISTOGRAM_CUSTOM_ENUMERATION("CrashExitCodes.Renderer", 1583 UMA_HISTOGRAM_CUSTOM_ENUMERATION("CrashExitCodes.Renderer",
1586 MapCrashExitCodeForHistogram(exit_code), 1584 MapCrashExitCodeForHistogram(exit_code),
1587 GetAllCrashExitCodes()); 1585 GetAllCrashExitCodes());
1588 } 1586 }
1589 1587
1590 UMA_HISTOGRAM_PERCENTAGE("BrowserRenderProcessHost.ChildCrashes", 1588 UMA_HISTOGRAM_PERCENTAGE("BrowserRenderProcessHost.ChildCrashes",
1591 was_extension_process ? 2 : 1); 1589 was_extension_process ? 2 : 1);
1592 if (was_alive) {
1593 UMA_HISTOGRAM_PERCENTAGE("BrowserRenderProcessHost.ChildCrashesWasAlive",
1594 was_extension_process ? 2 : 1);
1595 }
1596 } else if (status == base::TERMINATION_STATUS_PROCESS_WAS_KILLED) { 1590 } else if (status == base::TERMINATION_STATUS_PROCESS_WAS_KILLED) {
1597 UMA_HISTOGRAM_PERCENTAGE("BrowserRenderProcessHost.ChildKills", 1591 UMA_HISTOGRAM_PERCENTAGE("BrowserRenderProcessHost.ChildKills",
1598 was_extension_process ? 2 : 1); 1592 was_extension_process ? 2 : 1);
1599 if (was_alive) { 1593 } else if (status == base::TERMINATION_STATUS_STILL_RUNNING) {
1600 UMA_HISTOGRAM_PERCENTAGE("BrowserRenderProcessHost.ChildKillsWasAlive", 1594 UMA_HISTOGRAM_PERCENTAGE("BrowserRenderProcessHost.DisconnectedAlive",
1601 was_extension_process ? 2 : 1); 1595 was_extension_process ? 2 : 1);
1602 } 1596 }
1603 } 1597 }
1604 }
1605 1598
1606 void MetricsService::LogRendererHang() { 1599 void MetricsService::LogRendererHang() {
1607 IncrementPrefValue(prefs::kStabilityRendererHangCount); 1600 IncrementPrefValue(prefs::kStabilityRendererHangCount);
1608 } 1601 }
1609 1602
1610 void MetricsService::LogNeedForCleanShutdown() { 1603 void MetricsService::LogNeedForCleanShutdown() {
1611 PrefService* pref = g_browser_process->local_state(); 1604 PrefService* pref = g_browser_process->local_state();
1612 pref->SetBoolean(prefs::kStabilityExitedCleanly, false); 1605 pref->SetBoolean(prefs::kStabilityExitedCleanly, false);
1613 // Redundant setting to be sure we call for a clean shutdown. 1606 // Redundant setting to be sure we call for a clean shutdown.
1614 clean_shutdown_status_ = NEED_TO_SHUTDOWN; 1607 clean_shutdown_status_ = NEED_TO_SHUTDOWN;
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
1874 } 1867 }
1875 1868
1876 void MetricsService::RecordCurrentState(PrefService* pref) { 1869 void MetricsService::RecordCurrentState(PrefService* pref) {
1877 pref->SetInt64(prefs::kStabilityLastTimestampSec, Time::Now().ToTimeT()); 1870 pref->SetInt64(prefs::kStabilityLastTimestampSec, Time::Now().ToTimeT());
1878 1871
1879 RecordPluginChanges(pref); 1872 RecordPluginChanges(pref);
1880 } 1873 }
1881 1874
1882 // static 1875 // static
1883 bool MetricsService::IsPluginProcess(content::ProcessType type) { 1876 bool MetricsService::IsPluginProcess(content::ProcessType type) {
1884 return (type == content::PROCESS_TYPE_PLUGIN || 1877 return (type == content::PROCESS_TYPE_PLUGIN||
1885 type == content::PROCESS_TYPE_PPAPI_PLUGIN || 1878 type == content::PROCESS_TYPE_PPAPI_PLUGIN ||
1886 type == content::PROCESS_TYPE_PPAPI_BROKER); 1879 type == content::PROCESS_TYPE_PPAPI_BROKER);
1887 } 1880 }
1888 1881
1889 #if defined(OS_CHROMEOS) 1882 #if defined(OS_CHROMEOS)
1890 void MetricsService::StartExternalMetrics() { 1883 void MetricsService::StartExternalMetrics() {
1891 external_metrics_ = new chromeos::ExternalMetrics; 1884 external_metrics_ = new chromeos::ExternalMetrics;
1892 external_metrics_->Start(); 1885 external_metrics_->Start();
1893 } 1886 }
1894 #endif 1887 #endif
1895 1888
1896 // static 1889 // static
1897 bool MetricsServiceHelper::IsMetricsReportingEnabled() { 1890 bool MetricsServiceHelper::IsMetricsReportingEnabled() {
1898 bool result = false; 1891 bool result = false;
1899 const PrefService* local_state = g_browser_process->local_state(); 1892 const PrefService* local_state = g_browser_process->local_state();
1900 if (local_state) { 1893 if (local_state) {
1901 const PrefService::Preference* uma_pref = 1894 const PrefService::Preference* uma_pref =
1902 local_state->FindPreference(prefs::kMetricsReportingEnabled); 1895 local_state->FindPreference(prefs::kMetricsReportingEnabled);
1903 if (uma_pref) { 1896 if (uma_pref) {
1904 bool success = uma_pref->GetValue()->GetAsBoolean(&result); 1897 bool success = uma_pref->GetValue()->GetAsBoolean(&result);
1905 DCHECK(success); 1898 DCHECK(success);
1906 } 1899 }
1907 } 1900 }
1908 return result; 1901 return result;
1909 } 1902 }
OLDNEW
« no previous file with comments | « chrome/browser/metrics/metrics_service.h ('k') | content/browser/browser_child_process_host_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698