Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(116)

Unified Diff: trunk/src/content/browser/renderer_host/pepper/pepper_network_monitor_host.cc

Issue 23463037: Revert 223482 "Simplify PPB_NetworkMonitor proxy." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: trunk/src/content/browser/renderer_host/pepper/pepper_network_monitor_host.cc
===================================================================
--- trunk/src/content/browser/renderer_host/pepper/pepper_network_monitor_host.cc (revision 223483)
+++ trunk/src/content/browser/renderer_host/pepper/pepper_network_monitor_host.cc (working copy)
@@ -1,118 +0,0 @@
-// Copyright 2013 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 "content/browser/renderer_host/pepper/pepper_network_monitor_host.h"
-
-#include "content/browser/renderer_host/pepper/browser_ppapi_host_impl.h"
-#include "content/browser/renderer_host/pepper/pepper_socket_utils.h"
-#include "content/public/browser/browser_thread.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"
-
-namespace content {
-
-namespace {
-
-bool CanUseNetworkMonitor(bool external_plugin,
- int render_process_id,
- int render_view_id) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
-
- SocketPermissionRequest request = SocketPermissionRequest(
- SocketPermissionRequest::NETWORK_STATE, std::string(), 0);
- return pepper_socket_utils::CanUseSocketAPIs(
- external_plugin, true /* private_api */, request, render_process_id,
- render_view_id);
-}
-
-scoped_ptr<net::NetworkInterfaceList> GetNetworkList() {
- scoped_ptr<net::NetworkInterfaceList> list(new net::NetworkInterfaceList());
- net::GetNetworkList(list.get());
- return list.Pass();
-}
-
-} // namespace
-
-PepperNetworkMonitorHost::PepperNetworkMonitorHost(
- BrowserPpapiHostImpl* host,
- PP_Instance instance,
- PP_Resource resource)
- : ResourceHost(host->GetPpapiHost(), instance, resource),
- weak_factory_(this) {
- int render_process_id;
- int render_view_id;
- host->GetRenderViewIDsForInstance(instance,
- &render_process_id,
- &render_view_id);
-
- BrowserThread::PostTaskAndReplyWithResult(
- BrowserThread::UI, FROM_HERE,
- base::Bind(&CanUseNetworkMonitor, host->external_plugin(),
- render_process_id, render_view_id),
- base::Bind(&PepperNetworkMonitorHost::OnPermissionCheckResult,
- weak_factory_.GetWeakPtr()));
-}
-
-PepperNetworkMonitorHost::~PepperNetworkMonitorHost() {
- net::NetworkChangeNotifier::RemoveIPAddressObserver(this);
-}
-
-void PepperNetworkMonitorHost::OnIPAddressChanged() {
- GetAndSendNetworkList();
-}
-
-void PepperNetworkMonitorHost::OnPermissionCheckResult(
- bool can_use_network_monitor) {
- if (!can_use_network_monitor) {
- host()->SendUnsolicitedReply(pp_resource(),
- PpapiPluginMsg_NetworkMonitor_Forbidden());
- return;
- }
-
- net::NetworkChangeNotifier::AddIPAddressObserver(this);
- GetAndSendNetworkList();
-}
-
-void PepperNetworkMonitorHost::GetAndSendNetworkList() {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
-
- // Call GetNetworkList() on a thread that allows blocking IO.
- base::PostTaskAndReplyWithResult(
- BrowserThread::GetBlockingPool(), FROM_HERE,
- base::Bind(&GetNetworkList),
- base::Bind(&PepperNetworkMonitorHost::SendNetworkList,
- weak_factory_.GetWeakPtr()));
-}
-
-void PepperNetworkMonitorHost::SendNetworkList(
- scoped_ptr<net::NetworkInterfaceList> list) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
-
- scoped_ptr<ppapi::proxy::SerializedNetworkList> list_copy(
- new ppapi::proxy::SerializedNetworkList(list->size()));
- for (size_t i = 0; i < list->size(); ++i) {
- const net::NetworkInterface& network = list->at(i);
- ppapi::proxy::SerializedNetworkInfo& network_copy = list_copy->at(i);
- network_copy.name = network.name;
-
- network_copy.addresses.resize(
- 1, ppapi::NetAddressPrivateImpl::kInvalidNetAddress);
- bool result = ppapi::NetAddressPrivateImpl::IPEndPointToNetAddress(
- network.address, 0, &(network_copy.addresses[0]));
- DCHECK(result);
-
- // TODO(sergeyu): Currently net::NetworkInterfaceList provides
- // only name and one IP address. Add all other fields and copy
- // them here.
- network_copy.type = PP_NETWORKLIST_UNKNOWN;
- network_copy.state = PP_NETWORKLIST_UP;
- network_copy.display_name = network.name;
- network_copy.mtu = 0;
- }
- host()->SendUnsolicitedReply(
- pp_resource(), PpapiPluginMsg_NetworkMonitor_NetworkList(*list_copy));
-}
-
-} // namespace content
« no previous file with comments | « trunk/src/content/browser/renderer_host/pepper/pepper_network_monitor_host.h ('k') | trunk/src/content/content_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698