1 // Copyright (c) 2012 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 ANDROID_WEBVIEW_NATIVE_INPUT_STREAM_H_
6 #define ANDROID_WEBVIEW_NATIVE_INPUT_STREAM_H_
8 #include "android_webview/browser/input_stream.h"
9 #include "base/android/scoped_java_ref.h"
10 #include "base/compiler_specific.h"
16 namespace android_webview
{
18 class InputStreamImpl
: public InputStream
{
20 // Maximum size of |buffer_|.
21 static const int kBufferSize
;
23 static const InputStreamImpl
* FromInputStream(
24 const InputStream
* input_stream
);
26 // |stream| should be an instance of the InputStream Java class.
27 // |stream| can't be null.
28 InputStreamImpl(const base::android::JavaRef
<jobject
>& stream
);
29 virtual ~InputStreamImpl();
31 // Gets the underlying Java object. Guaranteed non-NULL.
32 const jobject
jobj() const { return jobject_
.obj(); }
34 // InputStream implementation.
35 virtual bool BytesAvailable(int* bytes_available
) const override
;
36 virtual bool Skip(int64_t n
, int64_t* bytes_skipped
) override
;
37 virtual bool Read(net::IOBuffer
* dest
, int length
, int* bytes_read
) override
;
39 // Parameterless constructor exposed for testing.
43 base::android::ScopedJavaGlobalRef
<jobject
> jobject_
;
44 base::android::ScopedJavaGlobalRef
<jbyteArray
> buffer_
;
46 DISALLOW_COPY_AND_ASSIGN(InputStreamImpl
);
49 bool RegisterInputStream(JNIEnv
* env
);
51 } // namespace android_webview
53 #endif // ANDROID_WEBVIEW_NATIVE_INPUT_STREAM_H_