OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/browser/devtools/devtools_agent_host_impl.h" | 5 #include "content/browser/devtools/devtools_agent_host_impl.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/guid.h" | 10 #include "base/guid.h" |
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
280 DevToolsMessageChunkProcessor::DevToolsMessageChunkProcessor( | 280 DevToolsMessageChunkProcessor::DevToolsMessageChunkProcessor( |
281 const SendMessageCallback& callback) | 281 const SendMessageCallback& callback) |
282 : callback_(callback), | 282 : callback_(callback), |
283 message_buffer_size_(0), | 283 message_buffer_size_(0), |
284 last_call_id_(0) { | 284 last_call_id_(0) { |
285 } | 285 } |
286 | 286 |
287 DevToolsMessageChunkProcessor::~DevToolsMessageChunkProcessor() { | 287 DevToolsMessageChunkProcessor::~DevToolsMessageChunkProcessor() { |
288 } | 288 } |
289 | 289 |
290 void DevToolsMessageChunkProcessor::ProcessChunkedMessageFromAgent( | 290 bool DevToolsMessageChunkProcessor::ProcessChunkedMessageFromAgent( |
291 const DevToolsMessageChunk& chunk) { | 291 const DevToolsMessageChunk& chunk) { |
292 if (chunk.is_last && !chunk.post_state.empty()) | 292 if (chunk.is_last && !chunk.post_state.empty()) |
293 state_cookie_ = chunk.post_state; | 293 state_cookie_ = chunk.post_state; |
294 if (chunk.is_last) | 294 if (chunk.is_last) |
295 last_call_id_ = chunk.call_id; | 295 last_call_id_ = chunk.call_id; |
296 | 296 |
297 if (chunk.is_first && chunk.is_last) { | 297 if (chunk.is_first && chunk.is_last) { |
298 CHECK(message_buffer_size_ == 0); | 298 if (message_buffer_size_ != 0) |
| 299 return false; |
299 callback_.Run(chunk.session_id, chunk.data); | 300 callback_.Run(chunk.session_id, chunk.data); |
300 return; | 301 return true; |
301 } | 302 } |
302 | 303 |
303 if (chunk.is_first) { | 304 if (chunk.is_first) { |
304 message_buffer_ = std::string(); | 305 message_buffer_ = std::string(); |
305 message_buffer_.reserve(chunk.message_size); | 306 message_buffer_.reserve(chunk.message_size); |
306 message_buffer_size_ = chunk.message_size; | 307 message_buffer_size_ = chunk.message_size; |
307 } | 308 } |
308 | 309 |
309 CHECK(message_buffer_.size() + chunk.data.size() <= | 310 if (message_buffer_.size() + chunk.data.size() > message_buffer_size_) |
310 message_buffer_size_); | 311 return false; |
311 message_buffer_.append(chunk.data); | 312 message_buffer_.append(chunk.data); |
312 | 313 |
313 if (chunk.is_last) { | 314 if (chunk.is_last) { |
314 CHECK(message_buffer_.size() == message_buffer_size_); | 315 if (message_buffer_.size() != message_buffer_size_) |
| 316 return false; |
315 callback_.Run(chunk.session_id, message_buffer_); | 317 callback_.Run(chunk.session_id, message_buffer_); |
316 message_buffer_ = std::string(); | 318 message_buffer_ = std::string(); |
317 message_buffer_size_ = 0; | 319 message_buffer_size_ = 0; |
318 } | 320 } |
| 321 return true; |
319 } | 322 } |
320 | 323 |
321 } // namespace content | 324 } // namespace content |
OLD | NEW |