Make castv2 performance test work.
[chromium-blink-merge.git] / components / cronet / android / wrapped_channel_upload_element_reader.h
blob4d62d491b758f51233a8ac6ab2255684d3981931
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"
14 namespace net {
15 class IOBuffer;
16 } // namespace net
18 namespace cronet {
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 {
25 public:
26 WrappedChannelElementReader(
27 scoped_refptr<URLRequestAdapter::URLRequestAdapterDelegate> delegate,
28 uint64 length);
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,
37 int buf_length,
38 const net::CompletionCallback& callback) override;
40 private:
41 const uint64 length_;
42 uint64 offset_;
43 scoped_refptr<URLRequestAdapter::URLRequestAdapterDelegate> delegate_;
45 DISALLOW_COPY_AND_ASSIGN(WrappedChannelElementReader);
48 } // namespace cronet
50 #endif // COMPONENTS_CRONET_ANDROID_WRAPPED_CHANNEL_UPLOAD_ELEMENT_READER_H_