| 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 |