Rename the old MockContentProvider to MockIContentProvider since it is more appropriate name. Detail: Current developers inevitably depend on the backend used by ContentProvider, which is useful but not ideal nor "testable" from the view of them. Current MockContentResolver only accepts exact "ContentProvider" class, not IContentProvider interface, since we want to hide "IContentProvider" while the old MockContentProvider implements IContentProvider and as a result some methods we want to hide may be exposed to the public SDK now and probably for the future. On the other hand, ContentProvider is not interface but an exact class heavily depends on the internal logic and not suitable for external developers to use for tests. The new MockContentProvider introduces the mock implementation for ContentProvider. It extends ContentProvider, so "is" ContentProvider, but tries to avoid depending on any backend System like IPC in Android, etc. This should be useful from the view of application developers who do not want to be confused with ContentProvider/ContentResolver backend implementation "at all" and want to use MockContentResolver without any other ContentProvider implementations tightly connected to the external worlds.
100 lines
3.7 KiB
Java
100 lines
3.7 KiB
Java
/*
|
|
* Copyright (C) 2009 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
package android.test.mock;
|
|
|
|
import android.content.ContentProviderOperation;
|
|
import android.content.ContentProviderResult;
|
|
import android.content.ContentValues;
|
|
import android.content.EntityIterator;
|
|
import android.content.IContentProvider;
|
|
import android.content.res.AssetFileDescriptor;
|
|
import android.database.Cursor;
|
|
import android.database.CursorWindow;
|
|
import android.database.IBulkCursor;
|
|
import android.database.IContentObserver;
|
|
import android.net.Uri;
|
|
import android.os.IBinder;
|
|
import android.os.ParcelFileDescriptor;
|
|
import android.os.RemoteException;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
/**
|
|
* Mock implementation of IContentProvider. All methods are non-functional and throw
|
|
* {@link java.lang.UnsupportedOperationException}. Tests can extend this class to
|
|
* implement behavior needed for tests.
|
|
*
|
|
* @hide - @hide because this exposes bulkQuery(), which must also be hidden.
|
|
*/
|
|
public class MockIContentProvider implements IContentProvider {
|
|
public int bulkInsert(Uri url, ContentValues[] initialValues) {
|
|
throw new UnsupportedOperationException("unimplemented mock method");
|
|
}
|
|
|
|
public IBulkCursor bulkQuery(Uri url, String[] projection, String selection,
|
|
String[] selectionArgs, String sortOrder, IContentObserver observer,
|
|
CursorWindow window) {
|
|
throw new UnsupportedOperationException("unimplemented mock method");
|
|
}
|
|
|
|
@SuppressWarnings("unused")
|
|
public int delete(Uri url, String selection, String[] selectionArgs)
|
|
throws RemoteException {
|
|
throw new UnsupportedOperationException("unimplemented mock method");
|
|
}
|
|
|
|
public String getType(Uri url) {
|
|
throw new UnsupportedOperationException("unimplemented mock method");
|
|
}
|
|
|
|
@SuppressWarnings("unused")
|
|
public Uri insert(Uri url, ContentValues initialValues) throws RemoteException {
|
|
throw new UnsupportedOperationException("unimplemented mock method");
|
|
}
|
|
|
|
public ParcelFileDescriptor openFile(Uri url, String mode) {
|
|
throw new UnsupportedOperationException("unimplemented mock method");
|
|
}
|
|
|
|
public AssetFileDescriptor openAssetFile(Uri uri, String mode) {
|
|
throw new UnsupportedOperationException("unimplemented mock method");
|
|
}
|
|
|
|
public ContentProviderResult[] applyBatch(ArrayList<ContentProviderOperation> operations) {
|
|
throw new UnsupportedOperationException("unimplemented mock method");
|
|
}
|
|
|
|
public Cursor query(Uri url, String[] projection, String selection, String[] selectionArgs,
|
|
String sortOrder) {
|
|
throw new UnsupportedOperationException("unimplemented mock method");
|
|
}
|
|
|
|
public EntityIterator queryEntities(Uri url, String selection, String[] selectionArgs,
|
|
String sortOrder) {
|
|
throw new UnsupportedOperationException("unimplemented mock method");
|
|
}
|
|
|
|
public int update(Uri url, ContentValues values, String selection, String[] selectionArgs)
|
|
throws RemoteException {
|
|
throw new UnsupportedOperationException("unimplemented mock method");
|
|
}
|
|
|
|
public IBinder asBinder() {
|
|
throw new UnsupportedOperationException("unimplemented mock method");
|
|
}
|
|
}
|