summaryrefslogtreecommitdiffstats
path: root/content/child/shared_worker_devtools_agent.cc
diff options
context:
space:
mode:
authorpfeldman <pfeldman@chromium.org>2014-10-16 08:11:59 -0700
committerCommit bot <commit-bot@chromium.org>2014-10-16 15:12:18 +0000
commit20f2492c84dc4ab5588b4034f952a99737d37472 (patch)
treedcd559f16884fbe427244ec153495704cbe01b96 /content/child/shared_worker_devtools_agent.cc
parent87ccb1133a179c1145b91b16f83cb71090835981 (diff)
downloadchromium_src-20f2492c84dc4ab5588b4034f952a99737d37472.zip
chromium_src-20f2492c84dc4ab5588b4034f952a99737d37472.tar.gz
chromium_src-20f2492c84dc4ab5588b4034f952a99737d37472.tar.bz2
DevTools: add support for chunked protocol messages.
TBR=jochen BUG=423738 Review URL: https://codereview.chromium.org/656033005 Cr-Commit-Position: refs/heads/master@{#299896}
Diffstat (limited to 'content/child/shared_worker_devtools_agent.cc')
-rw-r--r--content/child/shared_worker_devtools_agent.cc16
1 files changed, 15 insertions, 1 deletions
diff --git a/content/child/shared_worker_devtools_agent.cc b/content/child/shared_worker_devtools_agent.cc
index cec6e56..06283ed 100644
--- a/content/child/shared_worker_devtools_agent.cc
+++ b/content/child/shared_worker_devtools_agent.cc
@@ -6,6 +6,7 @@
#include "content/child/child_thread.h"
#include "content/common/devtools_messages.h"
+#include "ipc/ipc_channel.h"
#include "third_party/WebKit/public/platform/WebCString.h"
#include "third_party/WebKit/public/platform/WebString.h"
#include "third_party/WebKit/public/web/WebSharedWorker.h"
@@ -15,6 +16,9 @@ using blink::WebString;
namespace content {
+static const size_t kMaxMessageChunkSize =
+ IPC::Channel::kMaximumMessageSize / 4;
+
SharedWorkerDevToolsAgent::SharedWorkerDevToolsAgent(
int route_id,
WebSharedWorker* webworker)
@@ -43,9 +47,19 @@ bool SharedWorkerDevToolsAgent::OnMessageReceived(const IPC::Message& message) {
void SharedWorkerDevToolsAgent::SendDevToolsMessage(
const blink::WebString& message) {
+ std::string msg(message.utf8());
+ if (message.length() < kMaxMessageChunkSize) {
+ Send(new DevToolsClientMsg_DispatchOnInspectorFrontend(
+ route_id_, msg, msg.size()));
+ return;
+ }
+
+ for (size_t pos = 0; pos < msg.length(); pos += kMaxMessageChunkSize) {
Send(new DevToolsClientMsg_DispatchOnInspectorFrontend(
route_id_,
- message.utf8()));
+ msg.substr(pos, kMaxMessageChunkSize),
+ pos ? 0 : msg.size()));
+ }
}
void SharedWorkerDevToolsAgent::SaveDevToolsAgentState(