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

Unified Diff: chrome/browser/extensions/extension_web_socket_proxy_private_api.h

Issue 8586027: Move DNS resolution from websocket-to-TCP proxy to ExtensionFunction (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: nits Created 9 years, 1 month 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: chrome/browser/extensions/extension_web_socket_proxy_private_api.h
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 29643fa23adea01e8f59510c03d7edde6d8a1c64..aa7a50ac9c12287bf53e475404f009253c9272e7 100644
--- a/chrome/browser/extensions/extension_web_socket_proxy_private_api.h
+++ b/chrome/browser/extensions/extension_web_socket_proxy_private_api.h
@@ -10,64 +10,92 @@
#include "chrome/browser/extensions/extension_function.h"
#include "content/public/browser/notification_observer.h"
#include "content/public/browser/notification_registrar.h"
+#include "net/base/address_list.h"
+namespace net {
+class SingleRequestHostResolver;
+}
+
+// Base class for web socket proxy functions.
class WebSocketProxyPrivate
: public AsyncExtensionFunction, public content::NotificationObserver {
public:
WebSocketProxyPrivate();
-
virtual ~WebSocketProxyPrivate();
- // Finalizes async operation.
- virtual void Finalize();
-
protected:
+ // Custom finalization.
+ virtual void CustomFinalize() = 0;
+
+ // ExtensionFunction implementation.
+ virtual bool RunImpl() OVERRIDE;
+
// content::NotificationObserver implementation.
virtual void Observe(
int type, const content::NotificationSource& source,
const content::NotificationDetails& details) OVERRIDE;
- // Whether already finalized.
- bool is_finalized_;
+ // Destination hostname.
+ std::string hostname_;
+ // Destination IP address.
+ net::AddressList addr_;
+ // Destination port.
+ int port_;
+ // Proxy accepts websocket connections on this port.
+ int listening_port_;
+ // Whether TLS should be used.
+ bool do_tls_;
+ // Requested parameters of connection.
+ std::map<std::string, std::string> map_;
+
+ private:
+ // Finalizes and sends respond. Overwrite 'CustomFinalize' in inherited
+ // classes.
+ void Finalize();
+
+ // Callback for DNS resolution.
+ void OnHostResolution(int result);
+
+ // Executes on IO thread. Performs DNS resolution.
+ void ResolveHost();
// Used to signal timeout (when waiting for proxy initial launch).
base::OneShotTimer<WebSocketProxyPrivate> timer_;
-
+ // Used to register for notifications.
content::NotificationRegistrar registrar_;
-
- // Proxy accepts websocket connections on this port.
- int listening_port_;
+ // Used to cancel host resolution when out of scope.
+ scoped_ptr<net::SingleRequestHostResolver> resolver_;
+ // Callback which is called when host is resolved.
+ bool is_finalized_;
};
+// New API function for web socket proxy, which should be used.
class WebSocketProxyPrivateGetURLForTCPFunction
: public WebSocketProxyPrivate {
+ public:
+ WebSocketProxyPrivateGetURLForTCPFunction();
+ virtual ~WebSocketProxyPrivateGetURLForTCPFunction();
+
private:
// ExtensionFunction implementation.
virtual bool RunImpl() OVERRIDE;
- // content::NotificationObserver implementation.
- virtual void Observe(
- int type, const content::NotificationSource& source,
- const content::NotificationDetails& details) OVERRIDE;
-
- // Finalizes async operation.
- virtual void Finalize() OVERRIDE;
-
- // Query component of resulting URL.
- std::string query_;
+ // WebSocketProxyPrivate implementation:
+ virtual void CustomFinalize() OVERRIDE;
DECLARE_EXTENSION_FUNCTION_NAME("webSocketProxyPrivate.getURLForTCP")
};
-// Legacy, deprecated, to be eliminated.
+// Legacy API function for web socket proxy, to be eliminated.
class WebSocketProxyPrivateGetPassportForTCPFunction
: public WebSocketProxyPrivate {
public:
WebSocketProxyPrivateGetPassportForTCPFunction();
+ virtual ~WebSocketProxyPrivateGetPassportForTCPFunction();
private:
- // ExtensionFunction implementation.
- virtual bool RunImpl() OVERRIDE;
+ // WebSocketProxyPrivate implementation:
+ virtual void CustomFinalize() OVERRIDE;
DECLARE_EXTENSION_FUNCTION_NAME("webSocketProxyPrivate.getPassportForTCP")
};

Powered by Google App Engine
This is Rietveld 408576698