| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/protocol/io_handler.h" | 5 #include "content/browser/devtools/protocol/io_handler.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/files/file.h" | 10 #include "base/files/file.h" |
| (...skipping 14 matching lines...) Expand all Loading... |
| 25 : io_context_(io_context) | 25 : io_context_(io_context) |
| 26 , weak_factory_(this) {} | 26 , weak_factory_(this) {} |
| 27 | 27 |
| 28 IOHandler::~IOHandler() {} | 28 IOHandler::~IOHandler() {} |
| 29 | 29 |
| 30 void IOHandler::SetClient(scoped_ptr<Client> client) { | 30 void IOHandler::SetClient(scoped_ptr<Client> client) { |
| 31 client_.swap(client); | 31 client_.swap(client); |
| 32 } | 32 } |
| 33 | 33 |
| 34 Response IOHandler::Read(DevToolsCommandId command_id, | 34 Response IOHandler::Read(DevToolsCommandId command_id, |
| 35 const std::string& handle, const int* offset, const int* max_size) { | 35 const std::string& handle, |
| 36 const int* offset, |
| 37 const int* max_size) { |
| 36 static const size_t kDefaultChunkSize = 10 * 1024 * 1024; | 38 static const size_t kDefaultChunkSize = 10 * 1024 * 1024; |
| 37 | 39 |
| 38 scoped_refptr<DevToolsIOContext::Stream> stream = | 40 scoped_refptr<DevToolsIOContext::Stream> stream = |
| 39 io_context_->GetByHandle(handle); | 41 io_context_->GetByHandle(handle); |
| 40 if (!stream) | 42 if (!stream) |
| 41 return Response::InvalidParams("Invalid stream handle"); | 43 return Response::InvalidParams("Invalid stream handle"); |
| 42 stream->Read(offset ? *offset : -1, | 44 stream->Read(offset ? *offset : -1, |
| 43 max_size && *max_size ? *max_size : kDefaultChunkSize, | 45 max_size && *max_size ? *max_size : kDefaultChunkSize, |
| 44 base::Bind(&IOHandler::ReadComplete, | 46 base::Bind(&IOHandler::ReadComplete, weak_factory_.GetWeakPtr(), |
| 45 weak_factory_.GetWeakPtr(), command_id)); | 47 command_id)); |
| 46 return Response::OK(); | 48 return Response::OK(); |
| 47 } | 49 } |
| 48 | 50 |
| 49 void IOHandler::ReadComplete(DevToolsCommandId command_id, | 51 void IOHandler::ReadComplete(DevToolsCommandId command_id, |
| 50 const scoped_refptr<base::RefCountedString>& data, | 52 const scoped_refptr<base::RefCountedString>& data, |
| 51 int status) { | 53 int status) { |
| 52 if (status == DevToolsIOContext::Stream::StatusFailure) { | 54 if (status == DevToolsIOContext::Stream::StatusFailure) { |
| 53 client_->SendError(command_id, Response::ServerError("Read failed")); | 55 client_->SendError(command_id, Response::ServerError("Read failed")); |
| 54 return; | 56 return; |
| 55 } | 57 } |
| 56 bool eof = status == DevToolsIOContext::Stream::StatusEOF; | 58 bool eof = status == DevToolsIOContext::Stream::StatusEOF; |
| 57 client_->SendReadResponse(command_id, | 59 client_->SendReadResponse( |
| 58 ReadResponse::Create()->set_data(data->data())->set_eof(eof)); | 60 command_id, ReadResponse::Create()->set_data(data->data())->set_eof(eof)); |
| 59 } | 61 } |
| 60 | 62 |
| 61 Response IOHandler::Close(const std::string& handle) { | 63 Response IOHandler::Close(const std::string& handle) { |
| 62 return io_context_->Close(handle) ? Response::OK() | 64 return io_context_->Close(handle) ? Response::OK() |
| 63 : Response::InvalidParams("Invalid stream handle"); | 65 : Response::InvalidParams("Invalid stream handle"); |
| 64 } | 66 } |
| 65 | 67 |
| 66 } // namespace io | 68 } // namespace io |
| 67 } // namespace devtools | 69 } // namespace devtools |
| 68 } // namespace content | 70 } // namespace content |
| OLD | NEW |