Chromium Code Reviews| Index: content/browser/devtools/protocol/io_handler.cc |
| diff --git a/content/browser/devtools/protocol/io_handler.cc b/content/browser/devtools/protocol/io_handler.cc |
| index 64dfd954029d9adb98821bd40f880e89e66af4d5..f77bf674a0761b2e200e8b118f7b427ce0217056 100644 |
| --- a/content/browser/devtools/protocol/io_handler.cc |
| +++ b/content/browser/devtools/protocol/io_handler.cc |
| @@ -17,10 +17,7 @@ |
| #include "content/public/browser/browser_thread.h" |
| namespace content { |
| -namespace devtools { |
| -namespace io { |
| - |
| -using Response = DevToolsProtocolClient::Response; |
| +namespace protocol { |
| IOHandler::IOHandler(DevToolsIOContext* io_context) |
| : io_context_(io_context) |
| @@ -28,42 +25,50 @@ IOHandler::IOHandler(DevToolsIOContext* io_context) |
| IOHandler::~IOHandler() {} |
| -void IOHandler::SetClient(std::unique_ptr<Client> client) { |
| - client_.swap(client); |
| +void IOHandler::Wire(UberDispatcher* dispatcher) { |
| + frontend_.reset(new IO::Frontend(dispatcher->channel())); |
| + IO::Dispatcher::wire(dispatcher, this); |
| +} |
| + |
| +Response IOHandler::Disable() { |
| + return Response::OK(); |
| } |
| -Response IOHandler::Read(DevToolsCommandId command_id, |
| - const std::string& handle, const int* offset, const int* max_size) { |
| +void IOHandler::Read( |
| + const std::string& handle, |
| + Maybe<int> offset, |
| + Maybe<int> max_size, |
| + std::unique_ptr<ReadCallback> callback) { |
| static const size_t kDefaultChunkSize = 10 * 1024 * 1024; |
| scoped_refptr<DevToolsIOContext::Stream> stream = |
| io_context_->GetByHandle(handle); |
| - if (!stream) |
| - return Response::InvalidParams("Invalid stream handle"); |
| - stream->Read(offset ? *offset : -1, |
| - max_size && *max_size ? *max_size : kDefaultChunkSize, |
| + if (!stream) { |
| + callback->sendFailure(Response::Error("Invalid stream handle")); |
|
caseq
2016/11/15 18:33:59
let's keep different error codes -- just make a me
dgozman
2016/11/17 21:51:07
Done.
|
| + return; |
| + } |
| + stream->Read(offset.fromMaybe(-1), |
| + max_size.fromMaybe(kDefaultChunkSize), |
| base::Bind(&IOHandler::ReadComplete, |
| - weak_factory_.GetWeakPtr(), command_id)); |
| - return Response::OK(); |
| + weak_factory_.GetWeakPtr(), |
| + base::Passed(std::move(callback)))); |
| } |
| -void IOHandler::ReadComplete(DevToolsCommandId command_id, |
| +void IOHandler::ReadComplete(std::unique_ptr<ReadCallback> callback, |
| const scoped_refptr<base::RefCountedString>& data, |
| int status) { |
| if (status == DevToolsIOContext::Stream::StatusFailure) { |
| - client_->SendError(command_id, Response::ServerError("Read failed")); |
| + callback->sendFailure(Response::Error("Read failed")); |
| return; |
| } |
| bool eof = status == DevToolsIOContext::Stream::StatusEOF; |
| - client_->SendReadResponse(command_id, |
| - ReadResponse::Create()->set_data(data->data())->set_eof(eof)); |
| + callback->sendSuccess(data->data(), eof); |
| } |
| Response IOHandler::Close(const std::string& handle) { |
| return io_context_->Close(handle) ? Response::OK() |
| - : Response::InvalidParams("Invalid stream handle"); |
| + : Response::Error("Invalid stream handle"); |
| } |
| -} // namespace io |
| -} // namespace devtools |
| +} // namespace protocol |
| } // namespace content |