Index: content/browser/devtools/render_frame_devtools_agent_host.cc |
diff --git a/content/browser/devtools/render_frame_devtools_agent_host.cc b/content/browser/devtools/render_frame_devtools_agent_host.cc |
index 58cedae3a76631ae1a7d9d852cd9c29ea7ea09f7..b3391d967dce2ba69c0317ebb67eaf6250199188 100644 |
--- a/content/browser/devtools/render_frame_devtools_agent_host.cc |
+++ b/content/browser/devtools/render_frame_devtools_agent_host.cc |
@@ -10,6 +10,7 @@ |
#include "base/lazy_instance.h" |
#include "base/strings/utf_string_conversions.h" |
#include "build/build_config.h" |
+#include "content/browser/bad_message.h" |
#include "content/browser/child_process_security_policy_impl.h" |
#include "content/browser/devtools/devtools_frame_trace_recorder.h" |
#include "content/browser/devtools/devtools_protocol_handler.h" |
@@ -105,7 +106,7 @@ class RenderFrameDevToolsAgentHost::FrameHostHolder { |
const std::string& method, |
const std::string& message); |
void InspectElement(int session_id, int x, int y); |
- void ProcessChunkedMessageFromAgent(const DevToolsMessageChunk& chunk); |
+ bool ProcessChunkedMessageFromAgent(const DevToolsMessageChunk& chunk); |
void Suspend(); |
void Resume(); |
@@ -217,10 +218,10 @@ void RenderFrameDevToolsAgentHost::FrameHostHolder::InspectElement( |
host_->GetRoutingID(), session_id, x, y)); |
} |
-void |
+bool |
RenderFrameDevToolsAgentHost::FrameHostHolder::ProcessChunkedMessageFromAgent( |
const DevToolsMessageChunk& chunk) { |
- chunk_processor_.ProcessChunkedMessageFromAgent(chunk); |
+ return chunk_processor_.ProcessChunkedMessageFromAgent(chunk); |
} |
void RenderFrameDevToolsAgentHost::FrameHostHolder::SendMessageToClient( |
@@ -915,10 +916,16 @@ void RenderFrameDevToolsAgentHost::SynchronousSwapCompositorFrame( |
void RenderFrameDevToolsAgentHost::OnDispatchOnInspectorFrontend( |
RenderFrameHost* sender, |
const DevToolsMessageChunk& message) { |
+ bool success = true; |
if (current_ && current_->host() == sender) |
- current_->ProcessChunkedMessageFromAgent(message); |
+ success = current_->ProcessChunkedMessageFromAgent(message); |
else if (pending_ && pending_->host() == sender) |
- pending_->ProcessChunkedMessageFromAgent(message); |
+ success = pending_->ProcessChunkedMessageFromAgent(message); |
+ if (!success) { |
+ bad_message::ReceivedBadMessage( |
+ sender->GetProcess(), |
+ bad_message::RFH_INCONSISTENT_DEVTOOLS_MESSAGE); |
+ } |
} |
void RenderFrameDevToolsAgentHost::OnRequestNewWindow( |