summaryrefslogtreecommitdiffstats
path: root/chrome/browser/debugger
diff options
context:
space:
mode:
authorpfeldman@chromium.org <pfeldman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-01 04:49:18 +0000
committerpfeldman@chromium.org <pfeldman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-01 04:49:18 +0000
commitfb33ae02cb0325dd8941fbac246e27b520255f68 (patch)
tree6c4742a1a69816e68500717b4ff8c230dfe24c92 /chrome/browser/debugger
parentc9a8aeff75604d261eba2d50bb3f46fe28aa784b (diff)
downloadchromium_src-fb33ae02cb0325dd8941fbac246e27b520255f68.zip
chromium_src-fb33ae02cb0325dd8941fbac246e27b520255f68.tar.gz
chromium_src-fb33ae02cb0325dd8941fbac246e27b520255f68.tar.bz2
DevTools: serve front-end using chunked encoding (for remote debugging).
Review URL: http://codereview.chromium.org/6690041 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@80127 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/debugger')
-rw-r--r--chrome/browser/debugger/devtools_http_protocol_handler.cc24
1 files changed, 18 insertions, 6 deletions
diff --git a/chrome/browser/debugger/devtools_http_protocol_handler.cc b/chrome/browser/debugger/devtools_http_protocol_handler.cc
index d5fedc0..aa6fa7e 100644
--- a/chrome/browser/debugger/devtools_http_protocol_handler.cc
+++ b/chrome/browser/debugger/devtools_http_protocol_handler.cc
@@ -18,6 +18,7 @@
#include "chrome/browser/debugger/devtools_manager.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
+#include "chrome/browser/ui/webui/devtools_ui.h"
#include "chrome/common/devtools_messages.h"
#include "content/browser/browser_thread.h"
#include "content/browser/tab_contents/tab_contents.h"
@@ -150,6 +151,14 @@ void DevToolsHttpProtocolHandler::OnHttpRequest(
}
// Proxy static files from chrome-devtools://devtools/*.
+ if (!Profile::GetDefaultRequestContext()) {
+ server_->Send404(connection_id);
+ return;
+ }
+
+ // Make sure DevTools data source is registered.
+ DevToolsUI::RegisterDevToolsDataSource();
+
net::URLRequest* request = new net::URLRequest(
GURL("chrome-devtools:/" + info.path), this);
Bind(request, connection_id);
@@ -383,18 +392,15 @@ void DevToolsHttpProtocolHandler::OnResponseStarted(net::URLRequest* request) {
int connection_id = it->second;
- int expected_size = static_cast<int>(request->GetExpectedContentSize());
-
std::string content_type;
request->GetMimeType(&content_type);
if (request->status().is_success()) {
server_->Send(connection_id, StringPrintf("HTTP/1.1 200 OK\r\n"
"Content-Type:%s\r\n"
- "Content-Length:%d\r\n"
+ "Transfer-Encoding: chunked\r\n"
"\r\n",
- content_type.c_str(),
- expected_size));
+ content_type.c_str()));
} else {
server_->Send404(connection_id);
}
@@ -422,12 +428,18 @@ void DevToolsHttpProtocolHandler::OnReadCompleted(net::URLRequest* request,
do {
if (!request->status().is_success() || bytes_read <= 0)
break;
+ std::string chunk_size = StringPrintf("%X\r\n", bytes_read);
+ server_->Send(connection_id, chunk_size);
server_->Send(connection_id, buffer->data(), bytes_read);
+ server_->Send(connection_id, "\r\n");
} while (request->Read(buffer, kBufferSize, &bytes_read));
+
// See comments re: HEAD requests in OnResponseStarted().
- if (!request->status().is_io_pending())
+ if (!request->status().is_io_pending()) {
+ server_->Send(connection_id, "0\r\n\r\n");
RequestCompleted(request);
+ }
}
DevToolsHttpProtocolHandler::DevToolsHttpProtocolHandler(