MockContentProvider.java revision 1877d0158b529663b8315482e7346a7bcaa96166
19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
28280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa * Copyright (C) 2009 The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License.
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.test.mock;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
198280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawaimport android.content.ContentProvider;
208280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawaimport android.content.ContentProviderOperation;
218280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawaimport android.content.ContentProviderResult;
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.ContentValues;
238280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawaimport android.content.Context;
246a8d5332f00bdfade6674b312e7166940aa28348Fred Quintanaimport android.content.EntityIterator;
258280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawaimport android.content.IContentProvider;
268943737692169f564cd34a9c8d471f3a5d438712Fred Quintanaimport android.content.OperationApplicationException;
278280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawaimport android.content.pm.PathPermission;
288280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawaimport android.content.pm.ProviderInfo;
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.res.AssetFileDescriptor;
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.database.Cursor;
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.database.CursorWindow;
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.database.IBulkCursor;
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.database.IContentObserver;
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.net.Uri;
351877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrickimport android.os.Bundle;
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.IBinder;
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.ParcelFileDescriptor;
388280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawaimport android.os.RemoteException;
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.FileNotFoundException;
4103d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintanaimport java.util.ArrayList;
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
448280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa * Mock implementation of ContentProvider.  All methods are non-functional and throw
458280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa * {@link java.lang.UnsupportedOperationException}.  Tests can extend this class to
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * implement behavior needed for tests.
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
488280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawapublic class MockContentProvider extends ContentProvider {
498280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    /*
508280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * Note: if you add methods to ContentProvider, you must add similar methods to
518280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     *       MockContentProvider.
528280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     */
538280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa
548280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    /**
558280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * IContentProvider that directs all calls to this MockContentProvider.
568280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     */
578280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    private class InversionIContentProvider implements IContentProvider {
588280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        @SuppressWarnings("unused")
598280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        public ContentProviderResult[] applyBatch(ArrayList<ContentProviderOperation> operations)
608280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa                throws RemoteException, OperationApplicationException {
618280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            return MockContentProvider.this.applyBatch(operations);
628280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        }
638280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa
648280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        @SuppressWarnings("unused")
658280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        public int bulkInsert(Uri url, ContentValues[] initialValues) throws RemoteException {
668280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            return MockContentProvider.this.bulkInsert(url, initialValues);
678280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        }
688280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa
698280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        @SuppressWarnings("unused")
708280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        public IBulkCursor bulkQuery(Uri url, String[] projection, String selection,
718280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa                String[] selectionArgs, String sortOrder, IContentObserver observer,
728280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa                CursorWindow window) throws RemoteException {
738280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            throw new UnsupportedOperationException("Must not come here");
748280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        }
758280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa
768280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        @SuppressWarnings("unused")
778280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        public int delete(Uri url, String selection, String[] selectionArgs)
788280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa                throws RemoteException {
798280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            return MockContentProvider.this.delete(url, selection, selectionArgs);
808280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        }
818280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa
828280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        @SuppressWarnings("unused")
838280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        public String getType(Uri url) throws RemoteException {
848280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            return MockContentProvider.this.getType(url);
858280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        }
868280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa
878280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        @SuppressWarnings("unused")
888280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        public Uri insert(Uri url, ContentValues initialValues) throws RemoteException {
898280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            return MockContentProvider.this.insert(url, initialValues);
908280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        }
918280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa
928280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        @SuppressWarnings("unused")
938280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        public AssetFileDescriptor openAssetFile(Uri url, String mode) throws RemoteException,
948280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa                FileNotFoundException {
958280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            return MockContentProvider.this.openAssetFile(url, mode);
968280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        }
978280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa
988280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        @SuppressWarnings("unused")
998280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        public ParcelFileDescriptor openFile(Uri url, String mode) throws RemoteException,
1008280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa                FileNotFoundException {
1018280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            return MockContentProvider.this.openFile(url, mode);
1028280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        }
1038280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa
1048280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        @SuppressWarnings("unused")
1058280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        public Cursor query(Uri url, String[] projection, String selection, String[] selectionArgs,
1068280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa                String sortOrder) throws RemoteException {
1078280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            return MockContentProvider.this.query(url, projection, selection,
1088280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa                    selectionArgs, sortOrder);
1098280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        }
1108280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa
1118280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        @SuppressWarnings("unused")
1128280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        public int update(Uri url, ContentValues values, String selection, String[] selectionArgs)
1138280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa                throws RemoteException {
1148280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            return MockContentProvider.this.update(url, values, selection, selectionArgs);
1158280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        }
1168280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa
1171877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick        /**
1181877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick         * @hide
1191877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick         */
1201877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick        @SuppressWarnings("unused")
1211877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick        public Bundle call(String method, String request, Bundle args)
1221877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick                throws RemoteException {
1231877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick            return MockContentProvider.this.call(method, request, args);
1241877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick        }
1251877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick
1268280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        public IBinder asBinder() {
1278280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            throw new UnsupportedOperationException();
1288280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        }
1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1318280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    private final InversionIContentProvider mIContentProvider = new InversionIContentProvider();
1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1338280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    /**
1348280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * A constructor using {@link MockContext} instance as a Context in it.
1358280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     */
1368280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    protected MockContentProvider() {
1378280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        super(new MockContext(), "", "", null);
1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1408280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    /**
1418280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * A constructor accepting a Context instance, which is supposed to be the subclasss of
1428280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * {@link MockContext}.
1438280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     */
1448280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public MockContentProvider(Context context) {
1458280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        super(context, "", "", null);
1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1488280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    /**
1498280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * A constructor which initialize four member variables which
1508280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * {@link android.content.ContentProvider} have internally.
1518280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     *
1528280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * @param context A Context object which should be some mock instance (like the
1538280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * instance of {@link android.test.mock.MockContext}).
1548280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * @param readPermission The read permision you want this instance should have in the
1558280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * test, which is available via {@link #getReadPermission()}.
1568280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * @param writePermission The write permission you want this instance should have
1578280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * in the test, which is available via {@link #getWritePermission()}.
1588280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * @param pathPermissions The PathPermissions you want this instance should have
1598280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * in the test, which is available via {@link #getPathPermissions()}.
1608280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     */
1618280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public MockContentProvider(Context context,
1628280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            String readPermission,
1638280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            String writePermission,
1648280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            PathPermission[] pathPermissions) {
1658280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        super(context, readPermission, writePermission, pathPermissions);
1668280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    }
1678280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa
1688280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    @Override
1698280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public int delete(Uri uri, String selection, String[] selectionArgs) {
1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new UnsupportedOperationException("unimplemented mock method");
1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1738280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    @Override
1748280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public String getType(Uri uri) {
1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new UnsupportedOperationException("unimplemented mock method");
1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1788280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    @Override
1798280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public Uri insert(Uri uri, ContentValues values) {
1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new UnsupportedOperationException("unimplemented mock method");
1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1838280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    @Override
1848280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public boolean onCreate() {
1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new UnsupportedOperationException("unimplemented mock method");
1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1878943737692169f564cd34a9c8d471f3a5d438712Fred Quintana
1888280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    @Override
1898280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
1908280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            String sortOrder) {
1918943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        throw new UnsupportedOperationException("unimplemented mock method");
1928943737692169f564cd34a9c8d471f3a5d438712Fred Quintana    }
1938943737692169f564cd34a9c8d471f3a5d438712Fred Quintana
1948280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    @Override
1958280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new UnsupportedOperationException("unimplemented mock method");
1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1995bba632d877c2878384ff21566c8eb6a1a22f37bFred Quintana    /**
2008280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * If you're reluctant to implement this manually, please just call super.bulkInsert().
2015bba632d877c2878384ff21566c8eb6a1a22f37bFred Quintana     */
2028280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    @Override
2038280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public int bulkInsert(Uri uri, ContentValues[] values) {
2046a8d5332f00bdfade6674b312e7166940aa28348Fred Quintana        throw new UnsupportedOperationException("unimplemented mock method");
2056a8d5332f00bdfade6674b312e7166940aa28348Fred Quintana    }
2066a8d5332f00bdfade6674b312e7166940aa28348Fred Quintana
2078280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    @Override
2088280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public void attachInfo(Context context, ProviderInfo info) {
2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new UnsupportedOperationException("unimplemented mock method");
2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2128280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    @Override
2138280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public ContentProviderResult[] applyBatch(ArrayList<ContentProviderOperation> operations) {
2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new UnsupportedOperationException("unimplemented mock method");
2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2178280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    /**
2181877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick     * @hide
2191877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick     */
2201877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick    @Override
2211877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick    public Bundle call(String method, String request, Bundle args) {
2221877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick        throw new UnsupportedOperationException("unimplemented mock method call");
2231877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick    }
2241877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick
2251877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick    /**
2268280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * Returns IContentProvider which calls back same methods in this class.
2278280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * By overriding this class, we avoid the mechanism hidden behind ContentProvider
2288280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * (IPC, etc.)
2298280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     *
2308280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * @hide
2318280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     */
2328280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    @Override
2338280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public final IContentProvider getIContentProvider() {
2348280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        return mIContentProvider;
2358280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    }
236f99e2e042dbec5eba997eb0ac5e00d5fa23f7840Fred Quintana}
237