summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/extensions')
-rw-r--r--chrome/browser/extensions/extension_web_socket_proxy_private_api.cc16
-rw-r--r--chrome/browser/extensions/extension_web_socket_proxy_private_api.h2
-rw-r--r--chrome/browser/extensions/extension_web_socket_proxy_private_apitest.cc2
3 files changed, 13 insertions, 7 deletions
diff --git a/chrome/browser/extensions/extension_web_socket_proxy_private_api.cc b/chrome/browser/extensions/extension_web_socket_proxy_private_api.cc
index bda21c73..31fd122 100644
--- a/chrome/browser/extensions/extension_web_socket_proxy_private_api.cc
+++ b/chrome/browser/extensions/extension_web_socket_proxy_private_api.cc
@@ -41,7 +41,7 @@ void WebSocketProxyPrivate::Finalize() {
if (is_finalized_)
return;
is_finalized_ = true;
- SendResponse(true);
+ SendResponse(listening_port_ > 0);
Release();
}
@@ -59,10 +59,14 @@ void WebSocketProxyPrivateGetURLForTCPFunction::Observe(
}
void WebSocketProxyPrivateGetURLForTCPFunction::Finalize() {
+#if defined(OS_CHROMEOS)
StringValue* url = Value::CreateStringValue(std::string(
"ws://127.0.0.1:" + base::IntToString(listening_port_) +
"/tcpproxy?" + query_));
result_.reset(url);
+ if (listening_port_ < 1)
+ listening_port_ = chromeos::WebSocketProxyController::GetPort();
+#endif
WebSocketProxyPrivate::Finalize();
}
@@ -80,12 +84,12 @@ bool WebSocketProxyPrivateGetPassportForTCPFunction::RunImpl() {
if (chromeos::WebSocketProxyController::CheckCredentials(
extension_id(), hostname, port,
chromeos::WebSocketProxyController::PLAIN_TCP)) {
- if (!chromeos::WebSocketProxyController::IsInitiated()) {
+ listening_port_ = chromeos::WebSocketProxyController::GetPort();
+ if (listening_port_ < 1) {
delay_response = true;
registrar_.Add(
this, chrome::NOTIFICATION_WEB_SOCKET_PROXY_STARTED,
content::NotificationService::AllSources());
- chromeos::WebSocketProxyController::Initiate();
}
std::map<std::string, std::string> map;
@@ -132,12 +136,12 @@ bool WebSocketProxyPrivateGetURLForTCPFunction::RunImpl() {
extension_id(), hostname, port,
do_tls ? chromeos::WebSocketProxyController::TLS_OVER_TCP :
chromeos::WebSocketProxyController::PLAIN_TCP)) {
- if (!chromeos::WebSocketProxyController::IsInitiated()) {
+ listening_port_ = chromeos::WebSocketProxyController::GetPort();
+ if (listening_port_ < 1) {
delay_response = true;
registrar_.Add(
this, chrome::NOTIFICATION_WEB_SOCKET_PROXY_STARTED,
content::NotificationService::AllSources());
- chromeos::WebSocketProxyController::Initiate();
}
std::map<std::string, std::string> map;
@@ -155,7 +159,7 @@ bool WebSocketProxyPrivateGetURLForTCPFunction::RunImpl() {
#endif // defined(OS_CHROMEOS)
if (delay_response) {
- const int kTimeout = 3;
+ const int kTimeout = 12;
timer_.Start(FROM_HERE, base::TimeDelta::FromSeconds(kTimeout),
this, &WebSocketProxyPrivate::Finalize);
} else {
diff --git a/chrome/browser/extensions/extension_web_socket_proxy_private_api.h b/chrome/browser/extensions/extension_web_socket_proxy_private_api.h
index 8f888cf..eb2af4a 100644
--- a/chrome/browser/extensions/extension_web_socket_proxy_private_api.h
+++ b/chrome/browser/extensions/extension_web_socket_proxy_private_api.h
@@ -35,7 +35,7 @@ class WebSocketProxyPrivate
content::NotificationRegistrar registrar_;
- // Proxy listens incoming websocket connection on this port.
+ // Proxy accepts websocket connections on this port.
int listening_port_;
};
diff --git a/chrome/browser/extensions/extension_web_socket_proxy_private_apitest.cc b/chrome/browser/extensions/extension_web_socket_proxy_private_apitest.cc
index 8d6d12d..060583e 100644
--- a/chrome/browser/extensions/extension_web_socket_proxy_private_apitest.cc
+++ b/chrome/browser/extensions/extension_web_socket_proxy_private_apitest.cc
@@ -18,6 +18,8 @@ IN_PROC_BROWSER_TEST_F(ExtensionWebSocketProxyPrivateApiTest, Pass) {
#if defined(OS_CHROMEOS)
ASSERT_TRUE(StartTestServer());
ASSERT_TRUE(RunExtensionTest("web_socket_proxy_private")) << message_;
+ // Check if API still works on subsequent calls.
+ ASSERT_TRUE(RunExtensionTest("web_socket_proxy_private")) << message_;
#endif
}