[Metrics] Merge MetricsService and MetricsServiceBase classes.

BUG=374200
TEST=compiles
[email protected]

Review URL: https://codereview.chromium.org/294033007

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@272247 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/metrics/metrics_service.cc b/chrome/browser/metrics/metrics_service.cc
index 052efbd..73f8170 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"
@@ -272,6 +274,12 @@
 // 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,
@@ -431,8 +439,9 @@
 
 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),
@@ -591,6 +600,29 @@
                  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++;
@@ -1586,6 +1618,18 @@
       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();