1 // Copyright 2023 The Chromium Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 package org.chromium.net.impl; 6 7 import static org.chromium.net.impl.HttpEngineNativeProvider.EXT_API_LEVEL; 8 import static org.chromium.net.impl.HttpEngineNativeProvider.EXT_VERSION; 9 10 import androidx.annotation.RequiresExtension; 11 import java.io.IOException; 12 import java.nio.ByteBuffer; 13 import java.util.Objects; 14 15 @RequiresExtension(extension = EXT_API_LEVEL, version = EXT_VERSION) 16 @SuppressWarnings("Override") 17 class AndroidUploadDataProviderWrapper extends android.net.http.UploadDataProvider { 18 private final org.chromium.net.UploadDataProvider mBackend; 19 AndroidUploadDataProviderWrapper(org.chromium.net.UploadDataProvider backend)20 public AndroidUploadDataProviderWrapper(org.chromium.net.UploadDataProvider backend) { 21 Objects.requireNonNull(backend, "Invalid UploadDataProvider."); 22 this.mBackend = backend; 23 } 24 25 @Override getLength()26 public long getLength() throws IOException { 27 return mBackend.getLength(); 28 } 29 30 @Override read(android.net.http.UploadDataSink uploadDataSink, ByteBuffer byteBuffer)31 public void read(android.net.http.UploadDataSink uploadDataSink, ByteBuffer byteBuffer) 32 throws IOException { 33 AndroidUploadDataSinkWrapper wrapper = new AndroidUploadDataSinkWrapper(uploadDataSink); 34 mBackend.read(wrapper, byteBuffer); 35 } 36 37 @Override rewind(android.net.http.UploadDataSink uploadDataSink)38 public void rewind(android.net.http.UploadDataSink uploadDataSink) throws IOException { 39 AndroidUploadDataSinkWrapper wrapper = new AndroidUploadDataSinkWrapper(uploadDataSink); 40 mBackend.rewind(wrapper); 41 } 42 43 @Override close()44 public void close() throws IOException { 45 mBackend.close(); 46 } 47 } 48