Commit 4307dceb authored by Robbie McElrath's avatar Robbie McElrath Committed by Commit Bot

Migrate DomainReliabilityMonitor to NetworkConnectionTracker

This migrates DomainReliabilityMonitor from NetworkChangeManager to
NetworkConnectionTracker, which works with the network service enabled.

Bug: 887027
Change-Id: Icc22466c2272bdc45978218d1443c77810e7f663
Reviewed-on: https://chromium-review.googlesource.com/1234855Reviewed-by: default avatarMatt Menke <mmenke@chromium.org>
Commit-Queue: Robbie McElrath <rmcelrath@chromium.org>
Cr-Commit-Position: refs/heads/master@{#592946}
parent 956631d4
...@@ -90,6 +90,7 @@ jumbo_component("domain_reliability") { ...@@ -90,6 +90,7 @@ jumbo_component("domain_reliability") {
"//content/public/browser", "//content/public/browser",
"//content/public/common", "//content/public/common",
"//net", "//net",
"//services/network/public/cpp",
"//url", "//url",
] ]
} }
......
...@@ -8,6 +8,7 @@ include_rules = [ ...@@ -8,6 +8,7 @@ include_rules = [
"+content/public/browser", "+content/public/browser",
"+content/public/common", "+content/public/common",
"+content/public/test", "+content/public/test",
"+services/network/public/cpp",
"+third_party/blink/public", "+third_party/blink/public",
] ]
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include "components/domain_reliability/google_configs.h" #include "components/domain_reliability/google_configs.h"
#include "components/domain_reliability/header.h" #include "components/domain_reliability/header.h"
#include "components/domain_reliability/quic_error_mapping.h" #include "components/domain_reliability/quic_error_mapping.h"
#include "content/public/browser/network_service_instance.h"
#include "net/base/ip_endpoint.h" #include "net/base/ip_endpoint.h"
#include "net/base/load_flags.h" #include "net/base/load_flags.h"
#include "net/base/net_errors.h" #include "net/base/net_errors.h"
...@@ -89,6 +90,7 @@ DomainReliabilityMonitor::DomainReliabilityMonitor( ...@@ -89,6 +90,7 @@ DomainReliabilityMonitor::DomainReliabilityMonitor(
context_manager_(this), context_manager_(this),
pref_task_runner_(pref_thread), pref_task_runner_(pref_thread),
network_task_runner_(network_thread), network_task_runner_(network_thread),
network_connection_tracker_(nullptr),
moved_to_network_thread_(false), moved_to_network_thread_(false),
discard_uploads_set_(false), discard_uploads_set_(false),
weak_factory_(this) { weak_factory_(this) {
...@@ -111,6 +113,7 @@ DomainReliabilityMonitor::DomainReliabilityMonitor( ...@@ -111,6 +113,7 @@ DomainReliabilityMonitor::DomainReliabilityMonitor(
context_manager_(this), context_manager_(this),
pref_task_runner_(pref_thread), pref_task_runner_(pref_thread),
network_task_runner_(network_thread), network_task_runner_(network_thread),
network_connection_tracker_(nullptr),
moved_to_network_thread_(false), moved_to_network_thread_(false),
discard_uploads_set_(false), discard_uploads_set_(false),
weak_factory_(this) { weak_factory_(this) {
...@@ -119,7 +122,8 @@ DomainReliabilityMonitor::DomainReliabilityMonitor( ...@@ -119,7 +122,8 @@ DomainReliabilityMonitor::DomainReliabilityMonitor(
DomainReliabilityMonitor::~DomainReliabilityMonitor() { DomainReliabilityMonitor::~DomainReliabilityMonitor() {
if (moved_to_network_thread_) { if (moved_to_network_thread_) {
net::NetworkChangeNotifier::RemoveNetworkChangeObserver(this); DCHECK(network_connection_tracker_);
network_connection_tracker_->RemoveNetworkConnectionObserver(this);
DCHECK(OnNetworkThread()); DCHECK(OnNetworkThread());
} else { } else {
DCHECK(OnPrefThread()); DCHECK(OnPrefThread());
...@@ -130,10 +134,13 @@ void DomainReliabilityMonitor::MoveToNetworkThread() { ...@@ -130,10 +134,13 @@ void DomainReliabilityMonitor::MoveToNetworkThread() {
DCHECK(OnPrefThread()); DCHECK(OnPrefThread());
DCHECK(!moved_to_network_thread_); DCHECK(!moved_to_network_thread_);
network_connection_tracker_ = content::GetNetworkConnectionTracker();
network_task_runner_->PostTask( network_task_runner_->PostTask(
FROM_HERE, FROM_HERE,
base::BindOnce(&net::NetworkChangeNotifier::AddNetworkChangeObserver, base::BindOnce(
base::Unretained(this))); &network::NetworkConnectionTracker::AddNetworkConnectionObserver,
base::Unretained(network_connection_tracker_),
base::Unretained(this)));
moved_to_network_thread_ = true; moved_to_network_thread_ = true;
} }
...@@ -224,8 +231,8 @@ void DomainReliabilityMonitor::OnCompleted(net::URLRequest* request, ...@@ -224,8 +231,8 @@ void DomainReliabilityMonitor::OnCompleted(net::URLRequest* request,
} }
} }
void DomainReliabilityMonitor::OnNetworkChanged( void DomainReliabilityMonitor::OnConnectionChanged(
net::NetworkChangeNotifier::ConnectionType type) { network::mojom::ConnectionType type) {
last_network_change_time_ = time_->NowTicks(); last_network_change_time_ = time_->NowTicks();
} }
......
...@@ -28,10 +28,10 @@ ...@@ -28,10 +28,10 @@
#include "net/base/ip_endpoint.h" #include "net/base/ip_endpoint.h"
#include "net/base/load_timing_info.h" #include "net/base/load_timing_info.h"
#include "net/base/net_error_details.h" #include "net/base/net_error_details.h"
#include "net/base/network_change_notifier.h"
#include "net/http/http_response_info.h" #include "net/http/http_response_info.h"
#include "net/socket/connection_attempts.h" #include "net/socket/connection_attempts.h"
#include "net/url_request/url_request_status.h" #include "net/url_request/url_request_status.h"
#include "services/network/public/cpp/network_connection_tracker.h"
namespace base { namespace base {
class Value; class Value;
...@@ -48,7 +48,7 @@ namespace domain_reliability { ...@@ -48,7 +48,7 @@ namespace domain_reliability {
// The top-level object that measures requests and hands off the measurements // The top-level object that measures requests and hands off the measurements
// to the proper |DomainReliabilityContext|. // to the proper |DomainReliabilityContext|.
class DOMAIN_RELIABILITY_EXPORT DomainReliabilityMonitor class DOMAIN_RELIABILITY_EXPORT DomainReliabilityMonitor
: public net::NetworkChangeNotifier::NetworkChangeObserver, : public network::NetworkConnectionTracker::NetworkConnectionObserver,
DomainReliabilityContext::Factory { DomainReliabilityContext::Factory {
public: public:
// Creates a Monitor. |local_state_pref_service| must live on |pref_thread| // Creates a Monitor. |local_state_pref_service| must live on |pref_thread|
...@@ -114,9 +114,8 @@ class DOMAIN_RELIABILITY_EXPORT DomainReliabilityMonitor ...@@ -114,9 +114,8 @@ class DOMAIN_RELIABILITY_EXPORT DomainReliabilityMonitor
// |SetDiscardUploads|. // |SetDiscardUploads|.
void OnCompleted(net::URLRequest* request, bool started); void OnCompleted(net::URLRequest* request, bool started);
// net::NetworkChangeNotifier::NetworkChangeObserver implementation: // NetworkConnectionTracker::NetworkConnectionObserver implementation:
void OnNetworkChanged( void OnConnectionChanged(network::mojom::ConnectionType type) override;
net::NetworkChangeNotifier::ConnectionType type) override;
// Called to remove browsing data for origins matched by |origin_filter|. // Called to remove browsing data for origins matched by |origin_filter|.
// With CLEAR_BEACONS, leaves contexts in place but clears beacons (which // With CLEAR_BEACONS, leaves contexts in place but clears beacons (which
...@@ -198,6 +197,8 @@ class DOMAIN_RELIABILITY_EXPORT DomainReliabilityMonitor ...@@ -198,6 +197,8 @@ class DOMAIN_RELIABILITY_EXPORT DomainReliabilityMonitor
scoped_refptr<base::SingleThreadTaskRunner> pref_task_runner_; scoped_refptr<base::SingleThreadTaskRunner> pref_task_runner_;
scoped_refptr<base::SingleThreadTaskRunner> network_task_runner_; scoped_refptr<base::SingleThreadTaskRunner> network_task_runner_;
network::NetworkConnectionTracker* network_connection_tracker_;
bool moved_to_network_thread_; bool moved_to_network_thread_;
bool discard_uploads_set_; bool discard_uploads_set_;
......
...@@ -13,12 +13,16 @@ ...@@ -13,12 +13,16 @@
#include <vector> #include <vector>
#include "base/bind.h" #include "base/bind.h"
#include "base/test/test_simple_task_runner.h" #include "base/run_loop.h"
#include "base/task/post_task.h"
#include "components/domain_reliability/baked_in_configs.h" #include "components/domain_reliability/baked_in_configs.h"
#include "components/domain_reliability/beacon.h" #include "components/domain_reliability/beacon.h"
#include "components/domain_reliability/config.h" #include "components/domain_reliability/config.h"
#include "components/domain_reliability/google_configs.h" #include "components/domain_reliability/google_configs.h"
#include "components/domain_reliability/test_util.h" #include "components/domain_reliability/test_util.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/test/test_browser_thread_bundle.h"
#include "net/base/host_port_pair.h" #include "net/base/host_port_pair.h"
#include "net/base/load_flags.h" #include "net/base/load_flags.h"
#include "net/http/http_response_headers.h" #include "net/http/http_response_headers.h"
...@@ -54,8 +58,10 @@ class DomainReliabilityMonitorTest : public testing::Test { ...@@ -54,8 +58,10 @@ class DomainReliabilityMonitorTest : public testing::Test {
typedef DomainReliabilityMonitor::RequestInfo RequestInfo; typedef DomainReliabilityMonitor::RequestInfo RequestInfo;
DomainReliabilityMonitorTest() DomainReliabilityMonitorTest()
: pref_task_runner_(new base::TestSimpleTaskRunner()), : pref_task_runner_(base::CreateSingleThreadTaskRunnerWithTraits(
network_task_runner_(new base::TestSimpleTaskRunner()), {content::BrowserThread::UI})),
network_task_runner_(base::CreateSingleThreadTaskRunnerWithTraits(
{content::BrowserThread::IO})),
url_request_context_getter_( url_request_context_getter_(
new net::TestURLRequestContextGetter(network_task_runner_)), new net::TestURLRequestContextGetter(network_task_runner_)),
time_(new MockTime()), time_(new MockTime()),
...@@ -65,6 +71,8 @@ class DomainReliabilityMonitorTest : public testing::Test { ...@@ -65,6 +71,8 @@ class DomainReliabilityMonitorTest : public testing::Test {
network_task_runner_, network_task_runner_,
std::unique_ptr<MockableTime>(time_)) { std::unique_ptr<MockableTime>(time_)) {
monitor_.MoveToNetworkThread(); monitor_.MoveToNetworkThread();
// Let the NetworkConnectionTracker registration complete.
thread_bundle_.RunUntilIdle();
monitor_.InitURLRequestContext(url_request_context_getter_); monitor_.InitURLRequestContext(url_request_context_getter_);
monitor_.SetDiscardUploads(false); monitor_.SetDiscardUploads(false);
} }
...@@ -104,8 +112,9 @@ class DomainReliabilityMonitorTest : public testing::Test { ...@@ -104,8 +112,9 @@ class DomainReliabilityMonitorTest : public testing::Test {
return monitor_.AddContextForTesting(std::move(config)); return monitor_.AddContextForTesting(std::move(config));
} }
scoped_refptr<base::TestSimpleTaskRunner> pref_task_runner_; content::TestBrowserThreadBundle thread_bundle_;
scoped_refptr<base::TestSimpleTaskRunner> network_task_runner_; scoped_refptr<base::SingleThreadTaskRunner> pref_task_runner_;
scoped_refptr<base::SingleThreadTaskRunner> network_task_runner_;
scoped_refptr<net::URLRequestContextGetter> url_request_context_getter_; scoped_refptr<net::URLRequestContextGetter> url_request_context_getter_;
MockTime* time_; MockTime* time_;
DomainReliabilityMonitor monitor_; DomainReliabilityMonitor monitor_;
......
...@@ -155,6 +155,8 @@ class DomainReliabilityServiceTest : public testing::Test { ...@@ -155,6 +155,8 @@ class DomainReliabilityServiceTest : public testing::Test {
upload_reporter_string_, &browser_context_)); upload_reporter_string_, &browser_context_));
monitor_ = service_->CreateMonitor(ui_task_runner, network_task_runner); monitor_ = service_->CreateMonitor(ui_task_runner, network_task_runner);
monitor_->MoveToNetworkThread(); monitor_->MoveToNetworkThread();
// Let the NetworkConnectionTracker registration complete.
thread_bundle_.RunUntilIdle();
monitor_->InitURLRequestContext(url_request_context_getter_); monitor_->InitURLRequestContext(url_request_context_getter_);
monitor_->SetDiscardUploads(true); monitor_->SetDiscardUploads(true);
} }
......
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