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

Side by Side Diff: chrome/browser/debugger/devtools_http_protocol_handler.h

Issue 2870062: DevTools: implement basic handshake for remote debugging. (Closed)
Patch Set: utf16 conversion Created 10 years, 5 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_DEBUGGER_DEVTOOLS_HTTP_PROTOCOL_HANDLER_H_ 5 #ifndef CHROME_BROWSER_DEBUGGER_DEVTOOLS_HTTP_PROTOCOL_HANDLER_H_
6 #define CHROME_BROWSER_DEBUGGER_DEVTOOLS_HTTP_PROTOCOL_HANDLER_H_ 6 #define CHROME_BROWSER_DEBUGGER_DEVTOOLS_HTTP_PROTOCOL_HANDLER_H_
7 7
8 #include <set> 8 #include <set>
9 #include <string> 9 #include <string>
10 10
11 #include "base/ref_counted.h" 11 #include "base/ref_counted.h"
12 #include "base/scoped_ptr.h" 12 #include "base/scoped_ptr.h"
13 #include "net/server/http_listen_socket.h" 13 #include "net/server/http_listen_socket.h"
14 #include "net/url_request/url_request.h" 14 #include "net/url_request/url_request.h"
15 15
16 class DevToolsClientHost; 16 class DevToolsClientHost;
17 class DevToolsHttpServer; 17 class DevToolsHttpServer;
18 class TabContents;
18 19
19 class DevToolsHttpProtocolHandler 20 class DevToolsHttpProtocolHandler
20 : public HttpListenSocket::Delegate, 21 : public HttpListenSocket::Delegate,
21 public URLRequest::Delegate, 22 public URLRequest::Delegate,
22 public base::RefCountedThreadSafe<DevToolsHttpProtocolHandler> { 23 public base::RefCountedThreadSafe<DevToolsHttpProtocolHandler> {
23 public: 24 public:
24 explicit DevToolsHttpProtocolHandler(int port); 25 explicit DevToolsHttpProtocolHandler(int port);
25 26
26 // This method should be called after the object construction. 27 // This method should be called after the object construction.
27 void Start(); 28 void Start();
28 29
29 // This method should be called before the object destruction. 30 // This method should be called before the object destruction.
30 void Stop(); 31 void Stop();
31 32
33 private:
34 friend class base::RefCountedThreadSafe<DevToolsHttpProtocolHandler>;
35 virtual ~DevToolsHttpProtocolHandler();
36
32 // HttpListenSocket::Delegate implementation. 37 // HttpListenSocket::Delegate implementation.
33 virtual void OnHttpRequest(HttpListenSocket* socket, 38 virtual void OnHttpRequest(HttpListenSocket* socket,
34 HttpServerRequestInfo* info); 39 const HttpServerRequestInfo& info);
35 virtual void OnWebSocketRequest(HttpListenSocket* socket, 40 virtual void OnWebSocketRequest(HttpListenSocket* socket,
36 HttpServerRequestInfo* info); 41 const HttpServerRequestInfo& info);
37 virtual void OnWebSocketMessage(HttpListenSocket* socket, 42 virtual void OnWebSocketMessage(HttpListenSocket* socket,
38 const std::string& data); 43 const std::string& data);
39 virtual void OnClose(HttpListenSocket* socket); 44 virtual void OnClose(HttpListenSocket* socket);
40 45
46 virtual void OnHttpRequestUI(HttpListenSocket* socket,
47 const HttpServerRequestInfo& info);
48 virtual void OnWebSocketRequestUI(HttpListenSocket* socket,
49 const HttpServerRequestInfo& info);
50 virtual void OnWebSocketMessageUI(HttpListenSocket* socket,
51 const std::string& data);
52 virtual void OnCloseUI(HttpListenSocket* socket);
53
41 // URLRequest::Delegate implementation. 54 // URLRequest::Delegate implementation.
42 virtual void OnResponseStarted(URLRequest* request); 55 virtual void OnResponseStarted(URLRequest* request);
43 virtual void OnReadCompleted(URLRequest* request, int bytes_read); 56 virtual void OnReadCompleted(URLRequest* request, int bytes_read);
44 57
45 private:
46 friend class base::RefCountedThreadSafe<DevToolsHttpProtocolHandler>;
47 virtual ~DevToolsHttpProtocolHandler();
48
49 void Init(); 58 void Init();
50 void Teardown(); 59 void Teardown();
51 void Bind(URLRequest* request, HttpListenSocket* socket); 60 void Bind(URLRequest* request, HttpListenSocket* socket);
52 void RequestCompleted(URLRequest* request); 61 void RequestCompleted(URLRequest* request);
53 void OnWebSocketMessageUI(HttpListenSocket* socket, const std::string& data); 62
63 void Send200(HttpListenSocket* socket,
64 const std::string& data,
65 const std::string& mime_type = "text/html");
66 void Send404(HttpListenSocket* socket);
67 void Send500(HttpListenSocket* socket,
68 const std::string& message);
69 void AcceptWebSocket(HttpListenSocket* socket,
70 const HttpServerRequestInfo& request);
71
72 TabContents* GetTabContents(int session_id);
54 73
55 int port_; 74 int port_;
56 scoped_refptr<HttpListenSocket> server_; 75 scoped_refptr<HttpListenSocket> server_;
57 typedef std::map<URLRequest*, HttpListenSocket*> 76 typedef std::map<URLRequest*, HttpListenSocket*>
58 RequestToSocketMap; 77 RequestToSocketMap;
59 RequestToSocketMap request_to_socket_; 78 RequestToSocketMap request_to_socket_io_;
60 typedef std::map<HttpListenSocket*, std::set<URLRequest*> > 79 typedef std::map<HttpListenSocket*, std::set<URLRequest*> >
61 SocketToRequestsMap; 80 SocketToRequestsMap;
62 SocketToRequestsMap socket_to_requests_; 81 SocketToRequestsMap socket_to_requests_io_;
63 typedef std::map<URLRequest*, scoped_refptr<net::IOBuffer> > 82 typedef std::map<URLRequest*, scoped_refptr<net::IOBuffer> >
64 BuffersMap; 83 BuffersMap;
65 BuffersMap request_to_buffer_; 84 BuffersMap request_to_buffer_io_;
66 scoped_ptr<DevToolsClientHost> client_host_; 85 typedef std::map<HttpListenSocket*, DevToolsClientHost*>
86 SocketToClientHostMap;
87 SocketToClientHostMap socket_to_client_host_ui_;
67 DISALLOW_COPY_AND_ASSIGN(DevToolsHttpProtocolHandler); 88 DISALLOW_COPY_AND_ASSIGN(DevToolsHttpProtocolHandler);
68 }; 89 };
69 90
70 #endif // CHROME_BROWSER_DEBUGGER_DEVTOOLS_HTTP_PROTOCOL_HANDLER_H_ 91 #endif // CHROME_BROWSER_DEBUGGER_DEVTOOLS_HTTP_PROTOCOL_HANDLER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698