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

Unified Diff: content/shell/browser/shell_devtools_frontend.cc

Issue 2022673002: DevTools: Fix Maximum call stack size exceeded error while retrieving CPU profile. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: content/shell/browser/shell_devtools_frontend.cc
diff --git a/content/shell/browser/shell_devtools_frontend.cc b/content/shell/browser/shell_devtools_frontend.cc
index 0dea6a16b5567df25149282e255cd437ed3a6145..ced3be73dc9b5585031a5988af1f48b13bb374c3 100644
--- a/content/shell/browser/shell_devtools_frontend.cc
+++ b/content/shell/browser/shell_devtools_frontend.cc
@@ -100,7 +100,8 @@ int ResponseWriter::Finish(const net::CompletionCallback& callback) {
// This constant should be in sync with
// the constant at devtools_ui_bindings.cc.
-const size_t kMaxMessageChunkSize = IPC::Channel::kMaximumMessageSize / 4;
+const size_t kMaxMessageChunkSize =
+ std::min(IPC::Channel::kMaximumMessageSize / 4, 20480ul);
// static
ShellDevToolsFrontend* ShellDevToolsFrontend::Show(
@@ -276,12 +277,13 @@ void ShellDevToolsFrontend::DispatchProtocolMessage(
return;
}
- base::FundamentalValue total_size(static_cast<int>(message.length()));
+ size_t total_size = message.length();
for (size_t pos = 0; pos < message.length(); pos += kMaxMessageChunkSize) {
std::string param;
base::JSONWriter::Write(
base::StringValue(message.substr(pos, kMaxMessageChunkSize)), &param);
- std::string code = "DevToolsAPI.dispatchMessageChunk(" + param + ");";
+ std::string code = "DevToolsAPI.dispatchMessageChunk(" + param + "," +
+ std::to_string(pos ? 0 : total_size) + ");";
base::string16 javascript = base::UTF8ToUTF16(code);
web_contents()->GetMainFrame()->ExecuteJavaScriptForTests(javascript);
}

Powered by Google App Engine
This is Rietveld 408576698