Commit bbde62b5 authored by asvitkine's avatar asvitkine Committed by Commit bot

Remove MetricsServiceObserver in favor of MetricsProvider.

The only user of this interface has been folded into
NetworkMetricsProvider.

BUG=409872

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

Cr-Commit-Position: refs/heads/master@{#293149}
parent be173095
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/chrome_browser_metrics_service_observer.h"
#include "chrome/browser/metrics/chrome_metrics_service_accessor.h"
#include "net/base/network_change_notifier.h"
ChromeBrowserMetricsServiceObserver::ChromeBrowserMetricsServiceObserver() {
ChromeMetricsServiceAccessor::AddMetricsServiceObserver(this);
}
ChromeBrowserMetricsServiceObserver::~ChromeBrowserMetricsServiceObserver() {
ChromeMetricsServiceAccessor::RemoveMetricsServiceObserver(this);
}
void ChromeBrowserMetricsServiceObserver::OnDidCreateMetricsLog() {
net::NetworkChangeNotifier::LogOperatorCodeHistogram(
net::NetworkChangeNotifier::GetConnectionType());
}
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_CHROME_BROWSER_METRICS_SERVICE_OBSERVER_H_
#define CHROME_BROWSER_CHROME_BROWSER_METRICS_SERVICE_OBSERVER_H_
#include "components/metrics/metrics_service_observer.h"
// ChromeBrowserMetricsServiceObserver receives notifications when the metrics
// service creates a new metrics log.
class ChromeBrowserMetricsServiceObserver
: public metrics::MetricsServiceObserver {
public:
ChromeBrowserMetricsServiceObserver();
virtual ~ChromeBrowserMetricsServiceObserver();
// MetricsServiceObserver:
virtual void OnDidCreateMetricsLog() OVERRIDE;
private:
DISALLOW_COPY_AND_ASSIGN(ChromeBrowserMetricsServiceObserver);
};
#endif // CHROME_BROWSER_CHROME_BROWSER_METRICS_SERVICE_OBSERVER_H_
...@@ -17,7 +17,6 @@ ...@@ -17,7 +17,6 @@
#include "chrome/browser/about_flags.h" #include "chrome/browser/about_flags.h"
#include "chrome/browser/browser_process.h" #include "chrome/browser/browser_process.h"
#include "chrome/browser/chrome_browser_main.h" #include "chrome/browser/chrome_browser_main.h"
#include "chrome/browser/chrome_browser_metrics_service_observer.h"
#include "chrome/browser/mac/bluetooth_utility.h" #include "chrome/browser/mac/bluetooth_utility.h"
#include "chrome/browser/pref_service_flags_storage.h" #include "chrome/browser/pref_service_flags_storage.h"
#include "chrome/browser/shell_integration.h" #include "chrome/browser/shell_integration.h"
...@@ -234,12 +233,6 @@ void ChromeBrowserMainExtraPartsMetrics::PostBrowserStart() { ...@@ -234,12 +233,6 @@ void ChromeBrowserMainExtraPartsMetrics::PostBrowserStart() {
FROM_HERE, FROM_HERE,
base::Bind(&RecordStartupMetricsOnBlockingPool), base::Bind(&RecordStartupMetricsOnBlockingPool),
base::TimeDelta::FromSeconds(kStartupMetricsGatheringDelaySeconds)); base::TimeDelta::FromSeconds(kStartupMetricsGatheringDelaySeconds));
// Create the metrics log observer.
// We only need this for Android for now.
#if defined(ANDROID)
metrics_service_observer_.reset(new ChromeBrowserMetricsServiceObserver());
#endif
} }
namespace chrome { namespace chrome {
......
...@@ -11,7 +11,6 @@ ...@@ -11,7 +11,6 @@
#include "chrome/browser/chrome_browser_main_extra_parts.h" #include "chrome/browser/chrome_browser_main_extra_parts.h"
class ChromeBrowserMainParts; class ChromeBrowserMainParts;
class ChromeBrowserMetricsServiceObserver;
namespace chrome { namespace chrome {
void AddMetricsExtraParts(ChromeBrowserMainParts* main_parts); void AddMetricsExtraParts(ChromeBrowserMainParts* main_parts);
...@@ -28,9 +27,6 @@ class ChromeBrowserMainExtraPartsMetrics : public ChromeBrowserMainExtraParts { ...@@ -28,9 +27,6 @@ class ChromeBrowserMainExtraPartsMetrics : public ChromeBrowserMainExtraParts {
virtual void PostBrowserStart() OVERRIDE; virtual void PostBrowserStart() OVERRIDE;
private: private:
// Observe and log histograms on new metric logs.
scoped_ptr<ChromeBrowserMetricsServiceObserver> metrics_service_observer_;
DISALLOW_COPY_AND_ASSIGN(ChromeBrowserMainExtraPartsMetrics); DISALLOW_COPY_AND_ASSIGN(ChromeBrowserMainExtraPartsMetrics);
}; };
......
...@@ -12,7 +12,6 @@ ...@@ -12,7 +12,6 @@
#include "base/macros.h" #include "base/macros.h"
#include "chrome/browser/metrics/metrics_service_accessor.h" #include "chrome/browser/metrics/metrics_service_accessor.h"
class ChromeBrowserMetricsServiceObserver;
class Profile; class Profile;
namespace { namespace {
...@@ -40,7 +39,6 @@ class ChromeInternalLogSource; ...@@ -40,7 +39,6 @@ class ChromeInternalLogSource;
class ChromeMetricsServiceAccessor : public MetricsServiceAccessor { class ChromeMetricsServiceAccessor : public MetricsServiceAccessor {
private: private:
friend bool prerender::IsOmniboxEnabled(Profile* profile); friend bool prerender::IsOmniboxEnabled(Profile* profile);
friend class ::ChromeBrowserMetricsServiceObserver;
friend class ChromeRenderMessageFilter; friend class ChromeRenderMessageFilter;
friend class ::CrashesDOMHandler; friend class ::CrashesDOMHandler;
friend class DataReductionProxyChromeSettings; friend class DataReductionProxyChromeSettings;
......
...@@ -4,30 +4,12 @@ ...@@ -4,30 +4,12 @@
#include "chrome/browser/metrics/metrics_service_accessor.h" #include "chrome/browser/metrics/metrics_service_accessor.h"
#include "chrome/browser/browser_process.h"
#include "components/metrics/metrics_service.h" #include "components/metrics/metrics_service.h"
#include "components/metrics/metrics_service_observer.h"
// TODO(asvitkine): Remove when this class is moved to metrics namespace. // TODO(asvitkine): Remove when this class is moved to metrics namespace.
using metrics::MetricsService; using metrics::MetricsService;
using metrics::MetricsServiceObserver;
using metrics::SyntheticTrialGroup; using metrics::SyntheticTrialGroup;
// static
void MetricsServiceAccessor::AddMetricsServiceObserver(
MetricsServiceObserver* observer) {
MetricsService* metrics_service = g_browser_process->metrics_service();
if (metrics_service)
metrics_service->AddObserver(observer);
}
void MetricsServiceAccessor::RemoveMetricsServiceObserver(
MetricsServiceObserver* observer) {
MetricsService* metrics_service = g_browser_process->metrics_service();
if (metrics_service)
metrics_service->RemoveObserver(observer);
}
// static // static
bool MetricsServiceAccessor::RegisterSyntheticFieldTrial( bool MetricsServiceAccessor::RegisterSyntheticFieldTrial(
MetricsService* metrics_service, MetricsService* metrics_service,
......
...@@ -6,13 +6,11 @@ ...@@ -6,13 +6,11 @@
#define CHROME_BROWSER_METRICS_METRICS_SERVICE_ACCESSOR_H_ #define CHROME_BROWSER_METRICS_METRICS_SERVICE_ACCESSOR_H_
#include <stdint.h> #include <stdint.h>
#include <string>
#include "base/macros.h" #include "base/macros.h"
namespace metrics { namespace metrics {
class MetricsService; class MetricsService;
class MetricsServiceObserver;
} }
// This class limits and documents access to metrics service helper methods. // This class limits and documents access to metrics service helper methods.
...@@ -24,13 +22,6 @@ class MetricsServiceAccessor { ...@@ -24,13 +22,6 @@ class MetricsServiceAccessor {
// disallow instantiation. // disallow instantiation.
MetricsServiceAccessor() {} MetricsServiceAccessor() {}
// Registers/unregisters |observer| to receive MetricsLog notifications
// from metrics service.
static void AddMetricsServiceObserver(
metrics::MetricsServiceObserver* observer);
static void RemoveMetricsServiceObserver(
metrics::MetricsServiceObserver* observer);
// Registers the specified synthetic field trial (identified by a hash of the // Registers the specified synthetic field trial (identified by a hash of the
// trial name and group name) with |metrics_service|, if the service is not // trial name and group name) with |metrics_service|, if the service is not
// NULL, returning true on success. // NULL, returning true on success.
......
...@@ -4,6 +4,9 @@ ...@@ -4,6 +4,9 @@
#include "chrome/browser/metrics/network_metrics_provider.h" #include "chrome/browser/metrics/network_metrics_provider.h"
#include <string>
#include <vector>
#include "base/compiler_specific.h" #include "base/compiler_specific.h"
#include "base/strings/string_number_conversions.h" #include "base/strings/string_number_conversions.h"
#include "base/strings/string_split.h" #include "base/strings/string_split.h"
...@@ -32,6 +35,11 @@ NetworkMetricsProvider::~NetworkMetricsProvider() { ...@@ -32,6 +35,11 @@ NetworkMetricsProvider::~NetworkMetricsProvider() {
net::NetworkChangeNotifier::RemoveConnectionTypeObserver(this); net::NetworkChangeNotifier::RemoveConnectionTypeObserver(this);
} }
void NetworkMetricsProvider::OnDidCreateMetricsLog() {
net::NetworkChangeNotifier::LogOperatorCodeHistogram(
net::NetworkChangeNotifier::GetConnectionType());
}
void NetworkMetricsProvider::ProvideSystemProfileMetrics( void NetworkMetricsProvider::ProvideSystemProfileMetrics(
SystemProfileProto* system_profile) { SystemProfileProto* system_profile) {
SystemProfileProto::Network* network = system_profile->mutable_network(); SystemProfileProto::Network* network = system_profile->mutable_network();
......
...@@ -23,7 +23,9 @@ class NetworkMetricsProvider ...@@ -23,7 +23,9 @@ class NetworkMetricsProvider
NetworkMetricsProvider(); NetworkMetricsProvider();
virtual ~NetworkMetricsProvider(); virtual ~NetworkMetricsProvider();
private:
// metrics::MetricsProvider: // metrics::MetricsProvider:
virtual void OnDidCreateMetricsLog() OVERRIDE;
virtual void ProvideSystemProfileMetrics( virtual void ProvideSystemProfileMetrics(
metrics::SystemProfileProto* system_profile) OVERRIDE; metrics::SystemProfileProto* system_profile) OVERRIDE;
...@@ -31,7 +33,6 @@ class NetworkMetricsProvider ...@@ -31,7 +33,6 @@ class NetworkMetricsProvider
virtual void OnConnectionTypeChanged( virtual void OnConnectionTypeChanged(
net::NetworkChangeNotifier::ConnectionType type) OVERRIDE; net::NetworkChangeNotifier::ConnectionType type) OVERRIDE;
private:
metrics::SystemProfileProto::Network::ConnectionType metrics::SystemProfileProto::Network::ConnectionType
GetConnectionType() const; GetConnectionType() const;
metrics::SystemProfileProto::Network::WifiPHYLayerProtocol metrics::SystemProfileProto::Network::WifiPHYLayerProtocol
......
...@@ -244,8 +244,6 @@ ...@@ -244,8 +244,6 @@
'browser/chrome_browser_main_mac.mm', 'browser/chrome_browser_main_mac.mm',
'browser/chrome_browser_main_win.cc', 'browser/chrome_browser_main_win.cc',
'browser/chrome_browser_main_win.h', 'browser/chrome_browser_main_win.h',
'browser/chrome_browser_metrics_service_observer.cc',
'browser/chrome_browser_metrics_service_observer.h',
'browser/chrome_content_browser_client.cc', 'browser/chrome_content_browser_client.cc',
'browser/chrome_content_browser_client.h', 'browser/chrome_content_browser_client.h',
'browser/chrome_content_browser_client_parts.h', 'browser/chrome_content_browser_client_parts.h',
......
...@@ -43,8 +43,6 @@ ...@@ -43,8 +43,6 @@
'metrics/metrics_service.cc', 'metrics/metrics_service.cc',
'metrics/metrics_service.h', 'metrics/metrics_service.h',
'metrics/metrics_service_client.h', 'metrics/metrics_service_client.h',
'metrics/metrics_service_observer.cc',
'metrics/metrics_service_observer.h',
'metrics/metrics_state_manager.cc', 'metrics/metrics_state_manager.cc',
'metrics/metrics_state_manager.h', 'metrics/metrics_state_manager.h',
'metrics/metrics_switches.cc', 'metrics/metrics_switches.cc',
......
...@@ -30,8 +30,6 @@ source_set("metrics") { ...@@ -30,8 +30,6 @@ source_set("metrics") {
"metrics_service.cc", "metrics_service.cc",
"metrics_service.h", "metrics_service.h",
"metrics_service_client.h", "metrics_service_client.h",
"metrics_service_observer.cc",
"metrics_service_observer.h",
"metrics_state_manager.cc", "metrics_state_manager.cc",
"metrics_state_manager.h", "metrics_state_manager.h",
"metrics_switches.cc", "metrics_switches.cc",
......
...@@ -666,20 +666,8 @@ void MetricsService::GetUptimes(PrefService* pref, ...@@ -666,20 +666,8 @@ void MetricsService::GetUptimes(PrefService* pref,
} }
} }
void MetricsService::AddObserver(MetricsServiceObserver* observer) {
DCHECK(thread_checker_.CalledOnValidThread());
observers_.AddObserver(observer);
}
void MetricsService::RemoveObserver(MetricsServiceObserver* observer) {
DCHECK(thread_checker_.CalledOnValidThread());
observers_.RemoveObserver(observer);
}
void MetricsService::NotifyOnDidCreateMetricsLog() { void MetricsService::NotifyOnDidCreateMetricsLog() {
DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(IsSingleThreaded());
FOR_EACH_OBSERVER(
MetricsServiceObserver, observers_, OnDidCreateMetricsLog());
for (size_t i = 0; i < metrics_providers_.size(); ++i) for (size_t i = 0; i < metrics_providers_.size(); ++i)
metrics_providers_[i]->OnDidCreateMetricsLog(); metrics_providers_[i]->OnDidCreateMetricsLog();
} }
......
...@@ -21,14 +21,10 @@ ...@@ -21,14 +21,10 @@
#include "base/metrics/histogram_flattener.h" #include "base/metrics/histogram_flattener.h"
#include "base/metrics/histogram_snapshot_manager.h" #include "base/metrics/histogram_snapshot_manager.h"
#include "base/metrics/user_metrics.h" #include "base/metrics/user_metrics.h"
#include "base/observer_list.h"
#include "base/strings/string16.h"
#include "base/threading/thread_checker.h"
#include "base/time/time.h" #include "base/time/time.h"
#include "components/metrics/metrics_log.h" #include "components/metrics/metrics_log.h"
#include "components/metrics/metrics_log_manager.h" #include "components/metrics/metrics_log_manager.h"
#include "components/metrics/metrics_provider.h" #include "components/metrics/metrics_provider.h"
#include "components/metrics/metrics_service_observer.h"
#include "components/variations/active_field_trials.h" #include "components/variations/active_field_trials.h"
class MetricsServiceAccessor; class MetricsServiceAccessor;
...@@ -283,9 +279,7 @@ class MetricsService : public base::HistogramFlattener { ...@@ -283,9 +279,7 @@ class MetricsService : public base::HistogramFlattener {
// Set up client ID, session ID, etc. // Set up client ID, session ID, etc.
void InitializeMetricsState(); void InitializeMetricsState();
// Registers/unregisters |observer| to receive MetricsLog notifications. // Notifies providers when a new metrics log is created.
void AddObserver(MetricsServiceObserver* observer);
void RemoveObserver(MetricsServiceObserver* observer);
void NotifyOnDidCreateMetricsLog(); void NotifyOnDidCreateMetricsLog();
// Schedule the next save of LocalState information. This is called // Schedule the next save of LocalState information. This is called
...@@ -446,6 +440,9 @@ class MetricsService : public base::HistogramFlattener { ...@@ -446,6 +440,9 @@ class MetricsService : public base::HistogramFlattener {
// Stores the time of the last call to |GetUptimes()|. // Stores the time of the last call to |GetUptimes()|.
base::TimeTicks last_updated_time_; base::TimeTicks last_updated_time_;
// Field trial groups that map to Chrome configuration states.
SyntheticTrialGroups synthetic_trial_groups_;
// Execution phase the browser is in. // Execution phase the browser is in.
static ExecutionPhase execution_phase_; static ExecutionPhase execution_phase_;
...@@ -453,18 +450,9 @@ class MetricsService : public base::HistogramFlattener { ...@@ -453,18 +450,9 @@ class MetricsService : public base::HistogramFlattener {
// exited-cleanly bit in the prefs. // exited-cleanly bit in the prefs.
static ShutdownCleanliness clean_shutdown_status_; static ShutdownCleanliness clean_shutdown_status_;
// Field trial groups that map to Chrome configuration states.
SyntheticTrialGroups synthetic_trial_groups_;
ObserverList<MetricsServiceObserver> observers_;
// Confirms single-threaded access to |observers_| in debug builds.
base::ThreadChecker thread_checker_;
friend class ::MetricsServiceAccessor; friend class ::MetricsServiceAccessor;
FRIEND_TEST_ALL_PREFIXES(MetricsServiceTest, IsPluginProcess); FRIEND_TEST_ALL_PREFIXES(MetricsServiceTest, IsPluginProcess);
FRIEND_TEST_ALL_PREFIXES(MetricsServiceTest, MetricsServiceObserver);
FRIEND_TEST_ALL_PREFIXES(MetricsServiceTest, FRIEND_TEST_ALL_PREFIXES(MetricsServiceTest,
PermutedEntropyCacheClearedWhenLowEntropyReset); PermutedEntropyCacheClearedWhenLowEntropyReset);
FRIEND_TEST_ALL_PREFIXES(MetricsServiceTest, RegisterSyntheticTrial); FRIEND_TEST_ALL_PREFIXES(MetricsServiceTest, RegisterSyntheticTrial);
......
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/metrics/metrics_service_observer.h"
namespace metrics {
MetricsServiceObserver::MetricsServiceObserver() {
}
MetricsServiceObserver::~MetricsServiceObserver() {
}
} // namespace metrics
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_METRICS_METRICS_SERVICE_OBSERVER_H_
#define COMPONENTS_METRICS_METRICS_SERVICE_OBSERVER_H_
#include "base/macros.h"
namespace metrics {
// MetricsServiceObserver receives notifications from MetricsService.
// An observer must be added, removed, and notified on the same thread.
class MetricsServiceObserver {
public:
// Called when a new MetricsLog is created.
virtual void OnDidCreateMetricsLog() = 0;
protected:
MetricsServiceObserver();
virtual ~MetricsServiceObserver();
private:
DISALLOW_COPY_AND_ASSIGN(MetricsServiceObserver);
};
} // namespace metrics
#endif // COMPONENTS_METRICS_METRICS_SERVICE_OBSERVER_H_
...@@ -15,7 +15,6 @@ ...@@ -15,7 +15,6 @@
#include "components/metrics/compression_utils.h" #include "components/metrics/compression_utils.h"
#include "components/metrics/metrics_log.h" #include "components/metrics/metrics_log.h"
#include "components/metrics/metrics_pref_names.h" #include "components/metrics/metrics_pref_names.h"
#include "components/metrics/metrics_service_observer.h"
#include "components/metrics/metrics_state_manager.h" #include "components/metrics/metrics_state_manager.h"
#include "components/metrics/test_metrics_service_client.h" #include "components/metrics/test_metrics_service_client.h"
#include "components/variations/metrics_util.h" #include "components/variations/metrics_util.h"
...@@ -130,22 +129,6 @@ class MetricsServiceTest : public testing::Test { ...@@ -130,22 +129,6 @@ class MetricsServiceTest : public testing::Test {
DISALLOW_COPY_AND_ASSIGN(MetricsServiceTest); DISALLOW_COPY_AND_ASSIGN(MetricsServiceTest);
}; };
class TestMetricsServiceObserver : public MetricsServiceObserver {
public:
TestMetricsServiceObserver(): observed_(0) {}
virtual ~TestMetricsServiceObserver() {}
virtual void OnDidCreateMetricsLog() OVERRIDE {
++observed_;
}
int observed() const { return observed_; }
private:
int observed_;
DISALLOW_COPY_AND_ASSIGN(TestMetricsServiceObserver);
};
} // namespace } // namespace
TEST_F(MetricsServiceTest, InitialStabilityLogAfterCleanShutDown) { TEST_F(MetricsServiceTest, InitialStabilityLogAfterCleanShutDown) {
...@@ -283,36 +266,4 @@ TEST_F(MetricsServiceTest, RegisterSyntheticTrial) { ...@@ -283,36 +266,4 @@ TEST_F(MetricsServiceTest, RegisterSyntheticTrial) {
service.log_manager_.FinishCurrentLog(); service.log_manager_.FinishCurrentLog();
} }
TEST_F(MetricsServiceTest, MetricsServiceObserver) {
metrics::TestMetricsServiceClient client;
MetricsService service(GetMetricsStateManager(), &client, GetLocalState());
TestMetricsServiceObserver observer1;
TestMetricsServiceObserver observer2;
service.AddObserver(&observer1);
EXPECT_EQ(0, observer1.observed());
EXPECT_EQ(0, observer2.observed());
service.OpenNewLog();
EXPECT_EQ(1, observer1.observed());
EXPECT_EQ(0, observer2.observed());
service.log_manager_.FinishCurrentLog();
service.AddObserver(&observer2);
service.OpenNewLog();
EXPECT_EQ(2, observer1.observed());
EXPECT_EQ(1, observer2.observed());
service.log_manager_.FinishCurrentLog();
service.RemoveObserver(&observer1);
service.OpenNewLog();
EXPECT_EQ(2, observer1.observed());
EXPECT_EQ(2, observer2.observed());
service.log_manager_.FinishCurrentLog();
service.RemoveObserver(&observer2);
}
} // namespace metrics } // namespace metrics
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment