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