// even if they're unused.
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-function"
-#include "jni/InputStream_jni.h"
+#include "jni/InputStreamUtil_jni.h"
#pragma GCC diagnostic pop
#include "net/base/io_buffer.h"
using base::android::AttachCurrentThread;
using base::android::ClearException;
using base::android::JavaRef;
-using JNI_InputStream::Java_InputStream_available;
-using JNI_InputStream::Java_InputStream_close;
-using JNI_InputStream::Java_InputStream_skip;
-using JNI_InputStream::Java_InputStream_readI_AB_I_I;
namespace android_webview {
+namespace {
+
+// This should be the same as InputStramUtil.EXCEPTION_THROWN_STATUS.
+const int kExceptionThrownStatusCode = -2;
+
+}
+
bool RegisterInputStream(JNIEnv* env) {
- return JNI_InputStream::RegisterNativesImpl(env);
+ return RegisterNativesImpl(env);
}
// Maximum number of bytes to be read in a single read.
InputStreamImpl::~InputStreamImpl() {
JNIEnv* env = AttachCurrentThread();
- Java_InputStream_close(env, jobject_.obj());
+ Java_InputStreamUtil_close(env, jobject_.obj());
}
bool InputStreamImpl::BytesAvailable(int* bytes_available) const {
JNIEnv* env = AttachCurrentThread();
- int bytes = Java_InputStream_available(env, jobject_.obj());
- if (ClearException(env))
+ int bytes = Java_InputStreamUtil_available(env, jobject_.obj());
+ if (bytes == kExceptionThrownStatusCode)
return false;
*bytes_available = bytes;
return true;
bool InputStreamImpl::Skip(int64_t n, int64_t* bytes_skipped) {
JNIEnv* env = AttachCurrentThread();
- int bytes = Java_InputStream_skip(env, jobject_.obj(), n);
- if (ClearException(env))
+ int bytes = Java_InputStreamUtil_skip(env, jobject_.obj(), n);
+ if (bytes < 0)
return false;
if (bytes > n)
return false;
while (remaining_length > 0) {
const int max_transfer_length = std::min(remaining_length, kBufferSize);
- const int transfer_length = Java_InputStream_readI_AB_I_I(
+ const int transfer_length = Java_InputStreamUtil_read(
env, jobject_.obj(), buffer, 0, max_transfer_length);
- if (ClearException(env))
+ if (transfer_length == kExceptionThrownStatusCode)
return false;
if (transfer_length < 0) // EOF
dest_write_ptr += transfer_length;
}
// bytes_read can be strictly less than the req. length if EOF is encountered.
- DCHECK(remaining_length >= 0 && remaining_length <= length);
+ DCHECK_GE(remaining_length, 0);
+ DCHECK_LE(remaining_length, length);
*bytes_read = length - remaining_length;
return true;
}