Chromium Code Reviews| Index: chrome/browser/debugger/devtools_http_protocol_handler.cc |
| diff --git a/chrome/browser/debugger/devtools_http_protocol_handler.cc b/chrome/browser/debugger/devtools_http_protocol_handler.cc |
| index 910027ada019f9c10d8b0888f8c86c95e838b1f4..56aece317a32585d439dd897e5a37d7d10666a94 100644 |
| --- a/chrome/browser/debugger/devtools_http_protocol_handler.cc |
| +++ b/chrome/browser/debugger/devtools_http_protocol_handler.cc |
| @@ -71,6 +71,17 @@ class DevToolsClientHostImpl : public DevToolsClientHost { |
| } // namespace |
| + |
| +// static |
| +DevToolsHttpProtocolHandler* DevToolsHttpProtocolHandler::Start( |
| + int port, |
| + const std::string& frontend_url) { |
| + scoped_refptr<DevToolsHttpProtocolHandler> http_handler = |
| + new DevToolsHttpProtocolHandler(port, frontend_url); |
| + http_handler->Start(); |
| + return http_handler.get(); |
|
yurys
2011/01/31 14:58:24
You should return scoped_refptr to makes sure the
pfeldman
2011/01/31 15:15:54
Done.
|
| +} |
| + |
| DevToolsHttpProtocolHandler::~DevToolsHttpProtocolHandler() { |
| // Stop() must be called prior to this being called |
| DCHECK(server_.get() == NULL); |
| @@ -170,7 +181,22 @@ void DevToolsHttpProtocolHandler::OnClose(HttpListenSocket* socket) { |
| void DevToolsHttpProtocolHandler::OnHttpRequestUI( |
| HttpListenSocket* socket, |
| const HttpServerRequestInfo& info) { |
| - std::string response = "<html><body>"; |
| + std::string response = "<html><body><script>" |
| + "function addTab(id, url, attached, frontendUrl) {" |
| + " if (!attached) {" |
| + " var a = document.createElement('a');" |
| + " a.textContent = url;" |
| + " a.href = frontendUrl + '?remotehost=' + window.location.host +" |
| + "'&pageId=' + id;" |
|
yurys
2011/01/31 14:58:24
nit: wrong alignment
pfeldman
2011/01/31 15:15:54
Done.
|
| + " document.body.appendChild(a);" |
| + " } else {" |
| + " var span = document.createElement('span');" |
| + " span.textContent = url + ' (attached)';" |
| + " document.body.appendChild(span);" |
| + " }" |
| + " document.body.appendChild(document.createElement('br'));" |
| + "}"; |
| + |
| for (BrowserList::const_iterator it = BrowserList::begin(), |
| end = BrowserList::end(); it != end; ++it) { |
| TabStripModel* model = (*it)->tabstrip_model(); |
| @@ -187,21 +213,15 @@ void DevToolsHttpProtocolHandler::OnHttpRequestUI( |
| DevToolsClientHost* client_host = DevToolsManager::GetInstance()-> |
| GetDevToolsClientHostFor(tab_contents->tab_contents()-> |
| render_view_host()); |
| - if (!client_host) { |
| - response += StringPrintf( |
| - "<a href='/devtools/devtools.html?page=%d'>%s (%s)</a><br>", |
| - controller.session_id().id(), |
| - UTF16ToUTF8(entry->title()).c_str(), |
| - entry->url().spec().c_str()); |
| - } else { |
| - response += StringPrintf( |
| - "%s (%s)<br>", |
| - UTF16ToUTF8(entry->title()).c_str(), |
| - entry->url().spec().c_str()); |
| - } |
| + response += StringPrintf( |
| + "addTab(%d, '%s', %s, '%s');\n", |
| + controller.session_id().id(), |
| + entry->url().spec().c_str(), |
| + client_host ? "true" : "false", |
| + overriden_frontend_url_.c_str()); |
| } |
| } |
| - response += "</body></html>"; |
| + response += "</script></body></html>"; |
| Send200(socket, response, "text/html; charset=UTF-8"); |
| } |
| @@ -340,9 +360,14 @@ void DevToolsHttpProtocolHandler::OnReadCompleted(net::URLRequest* request, |
| RequestCompleted(request); |
| } |
| -DevToolsHttpProtocolHandler::DevToolsHttpProtocolHandler(int port) |
| +DevToolsHttpProtocolHandler::DevToolsHttpProtocolHandler( |
| + int port, |
| + const std::string& frontend_host) |
| : port_(port), |
| + overriden_frontend_url_(frontend_host), |
| server_(NULL) { |
| + if (overriden_frontend_url_.empty()) |
| + overriden_frontend_url_ = "/devtools/devtools.html"; |
|
yurys
2011/01/31 14:58:24
is there a constant for devtools.html ?
pfeldman
2011/01/31 15:15:54
Not really.
|
| } |
| void DevToolsHttpProtocolHandler::Init() { |
| @@ -428,8 +453,9 @@ TabContents* DevToolsHttpProtocolHandler::GetTabContents(int session_id) { |
| end = BrowserList::end(); it != end; ++it) { |
| TabStripModel* model = (*it)->tabstrip_model(); |
| for (int i = 0, size = model->count(); i < size; ++i) { |
| + TabContentsWrapper* tab_contents = model->GetTabContentsAt(i); |
| NavigationController& controller = |
| - model->GetTabContentsAt(i)->controller(); |
| + tab_contents->controller(); |
| if (controller.session_id().id() == session_id) |
| return controller.tab_contents(); |
| } |