Index: chrome/browser/metrics/metrics_service.cc |
diff --git a/chrome/browser/metrics/metrics_service.cc b/chrome/browser/metrics/metrics_service.cc |
index 55b9f074448ef95e89dbf79093db0ff210c69443..fe02b393cc7ff7a711fd8786a1529694dcd3cba7 100644 |
--- a/chrome/browser/metrics/metrics_service.cc |
+++ b/chrome/browser/metrics/metrics_service.cc |
@@ -169,6 +169,8 @@ |
#include "base/callback.h" |
#include "base/command_line.h" |
#include "base/metrics/histogram.h" |
+#include "base/metrics/histogram_base.h" |
+#include "base/metrics/histogram_samples.h" |
#include "base/metrics/sparse_histogram.h" |
#include "base/metrics/statistics_recorder.h" |
#include "base/prefs/pref_registry_simple.h" |
@@ -281,6 +283,12 @@ const size_t kUploadLogAvoidRetransmitSize = 50000; |
// Interval, in minutes, between state saves. |
const int kSaveStateIntervalMinutes = 5; |
+// The metrics server's URL. |
+const char kServerUrl[] = "https://clients4.google.com/uma/v2"; |
+ |
+// The MIME type for the uploaded metrics data. |
+const char kMimeType[] = "application/vnd.chrome.uma"; |
+ |
enum ResponseStatus { |
UNKNOWN_FAILURE, |
SUCCESS, |
@@ -458,8 +466,9 @@ void MetricsService::RegisterPrefs(PrefRegistrySimple* registry) { |
MetricsService::MetricsService(metrics::MetricsStateManager* state_manager, |
metrics::MetricsServiceClient* client) |
- : MetricsServiceBase(g_browser_process->local_state(), |
- kUploadLogAvoidRetransmitSize), |
+ : log_manager_(g_browser_process->local_state(), |
+ kUploadLogAvoidRetransmitSize), |
+ histogram_snapshot_manager_(this), |
state_manager_(state_manager), |
client_(client), |
recording_active_(false), |
@@ -619,6 +628,29 @@ void MetricsService::SetUpNotifications( |
content::NotificationService::AllSources()); |
} |
+void MetricsService::RecordDelta(const base::HistogramBase& histogram, |
+ const base::HistogramSamples& snapshot) { |
+ log_manager_.current_log()->RecordHistogramDelta(histogram.histogram_name(), |
+ snapshot); |
+} |
+ |
+void MetricsService::InconsistencyDetected( |
+ base::HistogramBase::Inconsistency problem) { |
+ UMA_HISTOGRAM_ENUMERATION("Histogram.InconsistenciesBrowser", |
+ problem, base::HistogramBase::NEVER_EXCEEDED_VALUE); |
+} |
+ |
+void MetricsService::UniqueInconsistencyDetected( |
+ base::HistogramBase::Inconsistency problem) { |
+ UMA_HISTOGRAM_ENUMERATION("Histogram.InconsistenciesBrowserUnique", |
+ problem, base::HistogramBase::NEVER_EXCEEDED_VALUE); |
+} |
+ |
+void MetricsService::InconsistencyDetectedInLoggedCount(int amount) { |
+ UMA_HISTOGRAM_COUNTS("Histogram.InconsistentSnapshotBrowser", |
+ std::abs(amount)); |
+} |
+ |
void MetricsService::BrowserChildProcessHostConnected( |
const content::ChildProcessData& data) { |
GetChildProcessStats(data).process_launches++; |
@@ -1690,6 +1722,18 @@ scoped_ptr<MetricsLog> MetricsService::CreateLog(MetricsLog::LogType log_type) { |
state_manager_->client_id(), session_id_, log_type, client_)); |
} |
+void MetricsService::RecordCurrentHistograms() { |
+ DCHECK(log_manager_.current_log()); |
+ histogram_snapshot_manager_.PrepareDeltas( |
+ base::Histogram::kNoFlags, base::Histogram::kUmaTargetedHistogramFlag); |
+} |
+ |
+void MetricsService::RecordCurrentStabilityHistograms() { |
+ DCHECK(log_manager_.current_log()); |
+ histogram_snapshot_manager_.PrepareDeltas( |
+ base::Histogram::kNoFlags, base::Histogram::kUmaStabilityHistogramFlag); |
+} |
+ |
void MetricsService::LogCleanShutdown() { |
// Redundant hack to write pref ASAP. |
MarkAppCleanShutdownAndCommit(); |