Commit dd7865c4 authored by Robbie McElrath's avatar Robbie McElrath Committed by Commit Bot

Migrate content::PepperNetworkMonitorHost to NetworkConnectionTracker

This migrates content::PepperNetworkMonitorHost from
NetworkChangeNotifier to NetworkConnectionTracker, which works with the
network service enabled.

Bug: 887046
Change-Id: I6fcd03fa664689cc6bcc16ff80b86fdba75d695d
Reviewed-on: https://chromium-review.googlesource.com/1236560
Commit-Queue: Robbie McElrath <rmcelrath@chromium.org>
Reviewed-by: default avatarBill Budge <bbudge@chromium.org>
Cr-Commit-Position: refs/heads/master@{#593672}
parent 43b3f48d
......@@ -12,6 +12,7 @@
#include "content/browser/renderer_host/pepper/pepper_socket_utils.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/network_service_instance.h"
#include "content/public/common/socket_permission_request.h"
#include "ppapi/proxy/ppapi_messages.h"
#include "ppapi/shared_impl/private/net_address_private_impl.h"
......@@ -47,6 +48,7 @@ PepperNetworkMonitorHost::PepperNetworkMonitorHost(BrowserPpapiHostImpl* host,
PP_Instance instance,
PP_Resource resource)
: ResourceHost(host->GetPpapiHost(), instance, resource),
network_connection_tracker_(nullptr),
weak_factory_(this) {
int render_process_id;
int render_frame_id;
......@@ -62,12 +64,16 @@ PepperNetworkMonitorHost::PepperNetworkMonitorHost(BrowserPpapiHostImpl* host,
}
PepperNetworkMonitorHost::~PepperNetworkMonitorHost() {
net::NetworkChangeNotifier::RemoveNetworkChangeObserver(this);
if (network_connection_tracker_)
network_connection_tracker_->RemoveNetworkConnectionObserver(this);
}
void PepperNetworkMonitorHost::OnNetworkChanged(
net::NetworkChangeNotifier::ConnectionType type) {
if (type == net::NetworkChangeNotifier::GetConnectionType())
void PepperNetworkMonitorHost::OnConnectionChanged(
network::mojom::ConnectionType type) {
auto current_type = network::mojom::ConnectionType::CONNECTION_UNKNOWN;
network_connection_tracker_->GetConnectionType(&current_type,
base::DoNothing());
if (type == current_type)
GetAndSendNetworkList();
}
......@@ -79,10 +85,21 @@ void PepperNetworkMonitorHost::OnPermissionCheckResult(
return;
}
net::NetworkChangeNotifier::AddNetworkChangeObserver(this);
base::PostTaskWithTraitsAndReplyWithResult(
FROM_HERE, {BrowserThread::UI},
base::BindOnce(&content::GetNetworkConnectionTracker),
base::BindOnce(&PepperNetworkMonitorHost::SetNetworkConnectionTracker,
weak_factory_.GetWeakPtr()));
GetAndSendNetworkList();
}
void PepperNetworkMonitorHost::SetNetworkConnectionTracker(
network::NetworkConnectionTracker* network_connection_tracker) {
DCHECK_EQ(network_connection_tracker_, nullptr);
network_connection_tracker_ = network_connection_tracker;
network_connection_tracker_->AddNetworkConnectionObserver(this);
}
void PepperNetworkMonitorHost::GetAndSendNetworkList() {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
......
......@@ -9,10 +9,10 @@
#include "base/macros.h"
#include "base/memory/weak_ptr.h"
#include "content/common/content_export.h"
#include "net/base/network_change_notifier.h"
#include "net/base/network_interfaces.h"
#include "ppapi/host/host_message_context.h"
#include "ppapi/host/resource_host.h"
#include "services/network/public/cpp/network_connection_tracker.h"
namespace content {
......@@ -21,7 +21,7 @@ class BrowserPpapiHostImpl;
// The host for PPB_NetworkMonitor. This class lives on the IO thread.
class CONTENT_EXPORT PepperNetworkMonitorHost
: public ppapi::host::ResourceHost,
public net::NetworkChangeNotifier::NetworkChangeObserver {
public network::NetworkConnectionTracker::NetworkConnectionObserver {
public:
PepperNetworkMonitorHost(BrowserPpapiHostImpl* host,
PP_Instance instance,
......@@ -29,18 +29,21 @@ class CONTENT_EXPORT PepperNetworkMonitorHost
~PepperNetworkMonitorHost() override;
// net::NetworkChangeNotifier::NetworkChangeObserver interface.
void OnNetworkChanged(
net::NetworkChangeNotifier::ConnectionType type) override;
// network::NetworkConnectionTracker::NetworkConnectionObserver interface.
void OnConnectionChanged(network::mojom::ConnectionType type) override;
private:
void OnPermissionCheckResult(bool can_use_network_monitor);
void SetNetworkConnectionTracker(
network::NetworkConnectionTracker* network_connection_tracker);
void GetAndSendNetworkList();
void SendNetworkList(std::unique_ptr<net::NetworkInterfaceList> list);
ppapi::host::ReplyMessageContext reply_context_;
network::NetworkConnectionTracker* network_connection_tracker_;
base::WeakPtrFactory<PepperNetworkMonitorHost> weak_factory_;
DISALLOW_COPY_AND_ASSIGN(PepperNetworkMonitorHost);
......
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