Chromium Code Reviews| Index: chrome/browser/extensions/api/socket/socket_api.h |
| diff --git a/chrome/browser/extensions/api/socket/socket_api.h b/chrome/browser/extensions/api/socket/socket_api.h |
| index c52bf6dd5ce64ca386efad81e0396d4e05ac32cc..ce58d1a9049f3a865086832d7ce6bf948f7648da 100644 |
| --- a/chrome/browser/extensions/api/socket/socket_api.h |
| +++ b/chrome/browser/extensions/api/socket/socket_api.h |
| @@ -21,6 +21,8 @@ class IOThread; |
| namespace net { |
| class IOBuffer; |
| +class URLRequestContextGetter; |
| +class SSLClientSocket; |
| } |
| namespace extensions { |
| @@ -41,6 +43,8 @@ class SocketResourceManagerInterface { |
| int api_resource_id) = 0; |
| virtual void Remove(const std::string& extension_id, |
| int api_resource_id) = 0; |
| + virtual void Set(const std::string& extension_id, int api_resource_id, |
| + Socket *socket) = 0; |
| virtual base::hash_set<int>* GetResourceIds( |
| const std::string& extension_id) = 0; |
| }; |
| @@ -73,6 +77,11 @@ class SocketResourceManager : public SocketResourceManagerInterface { |
| return manager_->Get(extension_id, api_resource_id); |
| } |
| + virtual void Set(const std::string& extension_id, int api_resource_id, |
| + Socket *socket) OVERRIDE { |
| + manager_->Set(extension_id, api_resource_id, static_cast<T*>(socket)); |
| + } |
| + |
| virtual void Remove(const std::string& extension_id, |
| int api_resource_id) OVERRIDE { |
| manager_->Remove(extension_id, api_resource_id); |
| @@ -103,6 +112,7 @@ class SocketAsyncApiFunction : public AsyncApiFunction { |
| int AddSocket(Socket* socket); |
| Socket* GetSocket(int api_resource_id); |
| + void SetSocket(int api_resource_id, Socket* socket); |
| void RemoveSocket(int api_resource_id); |
| base::hash_set<int>* GetSocketIds(); |
| @@ -504,6 +514,33 @@ class SocketGetJoinedGroupsFunction : public SocketAsyncApiFunction { |
| private: |
| scoped_ptr<api::socket::GetJoinedGroups::Params> params_; |
| }; |
| + |
| +class SocketSecureFunction : public SocketAsyncApiFunction { |
| + public: |
| + DECLARE_EXTENSION_FUNCTION("socket.secure", SOCKET_SECURE); |
| + SocketSecureFunction(); |
| + |
| + protected: |
| + virtual ~SocketSecureFunction(); |
| + |
| + // AsyncApiFunction |
| + virtual bool Prepare() OVERRIDE; |
| + virtual void Work() OVERRIDE; |
| + virtual void AsyncWorkStart() OVERRIDE; |
| + |
| + private: |
| + // Callback from TLSSocket::SecureTCPSocket(). |
| + void TlsConnectDone(Socket* socket, int result); |
| + |
| + scoped_ptr<api::socket::Secure::Params> params_; |
| + net::URLRequestContextGetter* url_request_getter_; |
| + |
| + // SecureTCPSocket() may invoke TlsConnectDone() before returning. The |
| + // first of Work() or TlsConnectDone() sets this to true, and the second to |
| + // finish will invoke AsyncWorkCompleted(). |
| + bool async_completed_needs_invocation_; |
|
rpaquay
2013/12/09 23:02:03
See AsyncWorkStart comment: this flag should not b
lally
2013/12/12 02:31:39
Done.
|
| +}; |
| + |
| } // namespace extensions |
| #endif // CHROME_BROWSER_EXTENSIONS_API_SOCKET_SOCKET_API_H_ |