1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef COMPONENTS_CRONET_ANDROID_WRAPPED_CHANNEL_UPLOAD_ELEMENT_READER_H_
6 #define COMPONENTS_CRONET_ANDROID_WRAPPED_CHANNEL_UPLOAD_ELEMENT_READER_H_
8 #include "base/basictypes.h"
9 #include "base/compiler_specific.h"
10 #include "components/cronet/android/url_request_adapter.h"
11 #include "net/base/completion_callback.h"
12 #include "net/base/upload_element_reader.h"
20 // An UploadElementReader implementation for
21 // java.nio.channels.ReadableByteChannel.
22 // |channel_| should outlive this class because this class does not take the
23 // ownership of the data.
24 class WrappedChannelElementReader
: public net::UploadElementReader
{
26 WrappedChannelElementReader(
27 scoped_refptr
<URLRequestAdapter::URLRequestAdapterDelegate
> delegate
,
29 ~WrappedChannelElementReader() override
;
31 // UploadElementReader overrides:
32 int Init(const net::CompletionCallback
& callback
) override
;
33 uint64
GetContentLength() const override
;
34 uint64
BytesRemaining() const override
;
35 bool IsInMemory() const override
;
36 int Read(net::IOBuffer
* buf
,
38 const net::CompletionCallback
& callback
) override
;
43 scoped_refptr
<URLRequestAdapter::URLRequestAdapterDelegate
> delegate_
;
45 DISALLOW_COPY_AND_ASSIGN(WrappedChannelElementReader
);
50 #endif // COMPONENTS_CRONET_ANDROID_WRAPPED_CHANNEL_UPLOAD_ELEMENT_READER_H_