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

Unified Diff: extensions/browser/api/socket/socket_api.cc

Issue 1022663003: Bind open firewall ports to visible application windows. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Actually fix the GN build. Created 5 years, 9 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
« no previous file with comments | « extensions/browser/api/socket/socket_api.h ('k') | extensions/extensions.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: extensions/browser/api/socket/socket_api.cc
diff --git a/extensions/browser/api/socket/socket_api.cc b/extensions/browser/api/socket/socket_api.cc
index dae0c5297af1c7b7bf0a7746a791f7dcddedd1d7..9bbc39f4bb0a936c2842ce01a21e7115d7d7fec6 100644
--- a/extensions/browser/api/socket/socket_api.cc
+++ b/extensions/browser/api/socket/socket_api.cc
@@ -32,12 +32,12 @@
#if defined(OS_CHROMEOS)
#include "base/command_line.h"
#include "chromeos/chromeos_switches.h"
-#include "chromeos/network/firewall_hole.h"
#include "content/public/browser/browser_thread.h"
#endif // OS_CHROMEOS
namespace extensions {
+using content::BrowserThread;
using content::SocketPermissionRequest;
const char kAddressKey[] = "address";
@@ -117,20 +117,14 @@ void SocketAsyncApiFunction::OpenFirewallHole(const std::string& address,
return;
}
- chromeos::FirewallHole::PortType port_type;
- if (socket->GetSocketType() == Socket::TYPE_TCP) {
- port_type = chromeos::FirewallHole::PortType::TCP;
- } else {
- port_type = chromeos::FirewallHole::PortType::UDP;
- }
+ AppFirewallHole::PortType type = socket->GetSocketType() == Socket::TYPE_TCP
+ ? AppFirewallHole::PortType::TCP
+ : AppFirewallHole::PortType::UDP;
- content::BrowserThread::PostTask(
- content::BrowserThread::UI, FROM_HERE,
- base::Bind(
- &chromeos::FirewallHole::Open, port_type, local_address.port(),
- "" /* all interfaces */,
- base::Bind(&SocketAsyncApiFunction::OnFirewallHoleOpenedOnUIThread,
- this, socket_id)));
+ BrowserThread::PostTask(
+ BrowserThread::UI, FROM_HERE,
+ base::Bind(&SocketAsyncApiFunction::OpenFirewallHoleOnUIThread, this,
+ type, local_address.port(), socket_id));
return;
}
#endif
@@ -139,18 +133,25 @@ void SocketAsyncApiFunction::OpenFirewallHole(const std::string& address,
#if defined(OS_CHROMEOS)
-void SocketAsyncApiFunction::OnFirewallHoleOpenedOnUIThread(
- int socket_id,
- scoped_ptr<chromeos::FirewallHole> hole) {
- content::BrowserThread::PostTask(
- content::BrowserThread::IO, FROM_HERE,
+void SocketAsyncApiFunction::OpenFirewallHoleOnUIThread(
+ AppFirewallHole::PortType type,
+ uint16_t port,
+ int socket_id) {
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
+ AppFirewallHoleManager* manager =
+ AppFirewallHoleManager::Get(browser_context());
+ scoped_ptr<AppFirewallHole, BrowserThread::DeleteOnUIThread> hole(
+ manager->Open(type, port, extension_id()).release());
+ BrowserThread::PostTask(
+ BrowserThread::IO, FROM_HERE,
base::Bind(&SocketAsyncApiFunction::OnFirewallHoleOpened, this, socket_id,
base::Passed(&hole)));
}
void SocketAsyncApiFunction::OnFirewallHoleOpened(
int socket_id,
- scoped_ptr<chromeos::FirewallHole> hole) {
+ scoped_ptr<AppFirewallHole, BrowserThread::DeleteOnUIThread> hole) {
+ DCHECK_CURRENTLY_ON(BrowserThread::IO);
if (!hole) {
error_ = kFirewallFailure;
SetResult(new base::FundamentalValue(-1));
@@ -774,9 +775,8 @@ void SocketGetInfoFunction::Work() {
}
bool SocketGetNetworkListFunction::RunAsync() {
- content::BrowserThread::PostTask(
- content::BrowserThread::FILE,
- FROM_HERE,
+ BrowserThread::PostTask(
+ BrowserThread::FILE, FROM_HERE,
base::Bind(&SocketGetNetworkListFunction::GetNetworkListOnFileThread,
this));
return true;
@@ -786,31 +786,28 @@ void SocketGetNetworkListFunction::GetNetworkListOnFileThread() {
net::NetworkInterfaceList interface_list;
if (GetNetworkList(&interface_list,
net::INCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES)) {
- content::BrowserThread::PostTask(
- content::BrowserThread::UI,
- FROM_HERE,
- base::Bind(&SocketGetNetworkListFunction::SendResponseOnUIThread,
- this,
+ BrowserThread::PostTask(
+ BrowserThread::UI, FROM_HERE,
+ base::Bind(&SocketGetNetworkListFunction::SendResponseOnUIThread, this,
interface_list));
return;
}
- content::BrowserThread::PostTask(
- content::BrowserThread::UI,
- FROM_HERE,
+ BrowserThread::PostTask(
+ BrowserThread::UI, FROM_HERE,
base::Bind(&SocketGetNetworkListFunction::HandleGetNetworkListError,
this));
}
void SocketGetNetworkListFunction::HandleGetNetworkListError() {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
error_ = kNetworkListError;
SendResponse(false);
}
void SocketGetNetworkListFunction::SendResponseOnUIThread(
const net::NetworkInterfaceList& interface_list) {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
std::vector<linked_ptr<core_api::socket::NetworkInterface> > create_arg;
create_arg.reserve(interface_list.size());
@@ -1030,7 +1027,7 @@ SocketSecureFunction::~SocketSecureFunction() {
}
bool SocketSecureFunction::Prepare() {
- DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
params_ = core_api::socket::Secure::Params::Create(*args_);
EXTENSION_FUNCTION_VALIDATE(params_.get());
url_request_getter_ = browser_context()->GetRequestContext();
@@ -1040,7 +1037,7 @@ bool SocketSecureFunction::Prepare() {
// Override the regular implementation, which would call AsyncWorkCompleted
// immediately after Work().
void SocketSecureFunction::AsyncWorkStart() {
- DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO));
+ DCHECK_CURRENTLY_ON(BrowserThread::IO);
Socket* socket = GetSocket(params_->socket_id);
if (!socket) {
« no previous file with comments | « extensions/browser/api/socket/socket_api.h ('k') | extensions/extensions.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698