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 13 matching lines...) Expand all Loading... |
24 IOHandler::IOHandler(DevToolsIOContext* io_context) | 24 IOHandler::IOHandler(DevToolsIOContext* io_context) |
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(int session_id, |
35 const std::string& handle, const int* offset, const int* max_size) { | 35 DevToolsCommandId command_id, |
| 36 const std::string& handle, |
| 37 const int* offset, |
| 38 const int* max_size) { |
36 static const size_t kDefaultChunkSize = 10 * 1024 * 1024; | 39 static const size_t kDefaultChunkSize = 10 * 1024 * 1024; |
37 | 40 |
38 scoped_refptr<DevToolsIOContext::Stream> stream = | 41 scoped_refptr<DevToolsIOContext::Stream> stream = |
39 io_context_->GetByHandle(handle); | 42 io_context_->GetByHandle(handle); |
40 if (!stream) | 43 if (!stream) |
41 return Response::InvalidParams("Invalid stream handle"); | 44 return Response::InvalidParams("Invalid stream handle"); |
42 stream->Read(offset ? *offset : -1, | 45 stream->Read(offset ? *offset : -1, |
43 max_size && *max_size ? *max_size : kDefaultChunkSize, | 46 max_size && *max_size ? *max_size : kDefaultChunkSize, |
44 base::Bind(&IOHandler::ReadComplete, | 47 base::Bind(&IOHandler::ReadComplete, weak_factory_.GetWeakPtr(), |
45 weak_factory_.GetWeakPtr(), command_id)); | 48 session_id, command_id)); |
46 return Response::OK(); | 49 return Response::OK(); |
47 } | 50 } |
48 | 51 |
49 void IOHandler::ReadComplete(DevToolsCommandId command_id, | 52 void IOHandler::ReadComplete(int session_id, |
| 53 DevToolsCommandId command_id, |
50 const scoped_refptr<base::RefCountedString>& data, | 54 const scoped_refptr<base::RefCountedString>& data, |
51 int status) { | 55 int status) { |
52 if (status == DevToolsIOContext::Stream::StatusFailure) { | 56 if (status == DevToolsIOContext::Stream::StatusFailure) { |
53 client_->SendError(command_id, Response::ServerError("Read failed")); | 57 client_->SendError(session_id, command_id, |
| 58 Response::ServerError("Read failed")); |
54 return; | 59 return; |
55 } | 60 } |
56 bool eof = status == DevToolsIOContext::Stream::StatusEOF; | 61 bool eof = status == DevToolsIOContext::Stream::StatusEOF; |
57 client_->SendReadResponse(command_id, | 62 client_->SendReadResponse( |
| 63 session_id, command_id, |
58 ReadResponse::Create()->set_data(data->data())->set_eof(eof)); | 64 ReadResponse::Create()->set_data(data->data())->set_eof(eof)); |
59 } | 65 } |
60 | 66 |
61 Response IOHandler::Close(const std::string& handle) { | 67 Response IOHandler::Close(const std::string& handle) { |
62 return io_context_->Close(handle) ? Response::OK() | 68 return io_context_->Close(handle) ? Response::OK() |
63 : Response::InvalidParams("Invalid stream handle"); | 69 : Response::InvalidParams("Invalid stream handle"); |
64 } | 70 } |
65 | 71 |
66 } // namespace io | 72 } // namespace io |
67 } // namespace devtools | 73 } // namespace devtools |
68 } // namespace content | 74 } // namespace content |
OLD | NEW |