| 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();
|
|
|