package android.os;
+import android.content.Context;
+import android.util.Log;
+
import com.android.internal.os.IDropBoxManagerService;
import java.io.ByteArrayInputStream;
*/
public class DropBoxManager {
private static final String TAG = "DropBoxManager";
+
+ private final Context mContext;
private final IDropBoxManagerService mService;
/** Flag value: Entry's content was deleted to save space. */
}
/** {@hide} */
- public DropBoxManager(IDropBoxManagerService service) { mService = service; }
+ public DropBoxManager(Context context, IDropBoxManagerService service) {
+ mContext = context;
+ mService = service;
+ }
/**
* Create a dummy instance for testing. All methods will fail unless
* overridden with an appropriate mock implementation. To obtain a
* functional instance, use {@link android.content.Context#getSystemService}.
*/
- protected DropBoxManager() { mService = null; }
+ protected DropBoxManager() {
+ mContext = null;
+ mService = null;
+ }
/**
* Stores human-readable text. The data may be discarded eventually (or even
try {
mService.add(new Entry(tag, 0, data));
} catch (RemoteException e) {
+ if (e instanceof TransactionTooLargeException
+ && mContext.getApplicationInfo().targetSdkVersion < Build.VERSION_CODES.N) {
+ Log.e(TAG, "App sent too much data, so it was ignored", e);
+ return;
+ }
throw e.rethrowFromSystemServer();
}
}
try {
mService.add(new Entry(tag, 0, data, flags));
} catch (RemoteException e) {
+ if (e instanceof TransactionTooLargeException
+ && mContext.getApplicationInfo().targetSdkVersion < Build.VERSION_CODES.N) {
+ Log.e(TAG, "App sent too much data, so it was ignored", e);
+ return;
+ }
throw e.rethrowFromSystemServer();
}
}
public void testAddText() throws Exception {
File dir = getEmptyDir("testAddText");
DropBoxManagerService service = new DropBoxManagerService(getContext(), dir);
- DropBoxManager dropbox = new DropBoxManager(service.getServiceStub());
+ DropBoxManager dropbox = new DropBoxManager(getContext(), service.getServiceStub());
long before = System.currentTimeMillis();
Thread.sleep(5);
public void testAddData() throws Exception {
File dir = getEmptyDir("testAddData");
DropBoxManagerService service = new DropBoxManagerService(getContext(), dir);
- DropBoxManager dropbox = new DropBoxManager(service.getServiceStub());
+ DropBoxManager dropbox = new DropBoxManager(getContext(), service.getServiceStub());
long before = System.currentTimeMillis();
dropbox.addData("DropBoxTest", "TEST".getBytes(), 0);
gz3.close();
DropBoxManagerService service = new DropBoxManagerService(getContext(), dir);
- DropBoxManager dropbox = new DropBoxManager(service.getServiceStub());
+ DropBoxManager dropbox = new DropBoxManager(getContext(), service.getServiceStub());
dropbox.addFile("DropBoxTest", f0, DropBoxManager.IS_TEXT);
dropbox.addFile("DropBoxTest", f1, DropBoxManager.IS_TEXT | DropBoxManager.IS_GZIPPED);
new FileOutputStream(new File(dir, "DropBoxTest@" + (before + 100002) + ".lost")).close();
DropBoxManagerService service = new DropBoxManagerService(getContext(), dir);
- DropBoxManager dropbox = new DropBoxManager(service.getServiceStub());
+ DropBoxManager dropbox = new DropBoxManager(getContext(), service.getServiceStub());
// Until a write, the timestamps are taken at face value
DropBoxManager.Entry e0 = dropbox.getNextEntry(null, before);
public void testIsTagEnabled() throws Exception {
File dir = getEmptyDir("testIsTagEnabled");
DropBoxManagerService service = new DropBoxManagerService(getContext(), dir);
- DropBoxManager dropbox = new DropBoxManager(service.getServiceStub());
+ DropBoxManager dropbox = new DropBoxManager(getContext(), service.getServiceStub());
long before = System.currentTimeMillis();
dropbox.addText("DropBoxTest", "TEST-ENABLED");
public void testGetNextEntry() throws Exception {
File dir = getEmptyDir("testGetNextEntry");
DropBoxManagerService service = new DropBoxManagerService(getContext(), dir);
- DropBoxManager dropbox = new DropBoxManager(service.getServiceStub());
+ DropBoxManager dropbox = new DropBoxManager(getContext(), service.getServiceStub());
long before = System.currentTimeMillis();
dropbox.addText("DropBoxTest.A", "A0");
final int overhead = 64;
long before = System.currentTimeMillis();
DropBoxManagerService service = new DropBoxManagerService(getContext(), dir);
- DropBoxManager dropbox = new DropBoxManager(service.getServiceStub());
+ DropBoxManager dropbox = new DropBoxManager(getContext(), service.getServiceStub());
addRandomEntry(dropbox, "DropBoxTest0", blockSize - overhead);
addRandomEntry(dropbox, "DropBoxTest0", blockSize - overhead);
// Write one normal entry and another so big that it is instantly tombstoned
long before = System.currentTimeMillis();
DropBoxManagerService service = new DropBoxManagerService(getContext(), dir);
- DropBoxManager dropbox = new DropBoxManager(service.getServiceStub());
+ DropBoxManager dropbox = new DropBoxManager(getContext(), service.getServiceStub());
dropbox.addText("DropBoxTest", "TEST");
addRandomEntry(dropbox, "DropBoxTest", blockSize * 20);
File dir = getEmptyDir("testFileCountLimits");
DropBoxManagerService service = new DropBoxManagerService(getContext(), dir);
- DropBoxManager dropbox = new DropBoxManager(service.getServiceStub());
+ DropBoxManager dropbox = new DropBoxManager(getContext(), service.getServiceStub());
dropbox.addText("DropBoxTest", "TEST0");
dropbox.addText("DropBoxTest", "TEST1");
dropbox.addText("DropBoxTest", "TEST2");
File dir = new File(getEmptyDir("testCreateDropBoxManagerWith"), "InvalidDirectory");
new FileOutputStream(dir).close(); // Create an empty file
DropBoxManagerService service = new DropBoxManagerService(getContext(), dir);
- DropBoxManager dropbox = new DropBoxManager(service.getServiceStub());
+ DropBoxManager dropbox = new DropBoxManager(getContext(), service.getServiceStub());
dropbox.addText("DropBoxTest", "should be ignored");
dropbox.addData("DropBoxTest", "should be ignored".getBytes(), 0);