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;
248280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawaimport android.content.IContentProvider;
258943737692169f564cd34a9c8d471f3a5d438712Fred Quintanaimport android.content.OperationApplicationException;
268280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawaimport android.content.pm.PathPermission;
278280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawaimport android.content.pm.ProviderInfo;
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.res.AssetFileDescriptor;
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.database.Cursor;
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.net.Uri;
311877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrickimport android.os.Bundle;
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.IBinder;
33a7771df3696954f0e279407e8894a916a7cb26ccJeff Brownimport android.os.ICancellationSignal;
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.ParcelFileDescriptor;
358280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawaimport android.os.RemoteException;
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.FileNotFoundException;
3803d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintanaimport java.util.ArrayList;
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
418280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa * Mock implementation of ContentProvider.  All methods are non-functional and throw
428280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa * {@link java.lang.UnsupportedOperationException}.  Tests can extend this class to
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * implement behavior needed for tests.
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
458280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawapublic class MockContentProvider extends ContentProvider {
468280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    /*
478280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * Note: if you add methods to ContentProvider, you must add similar methods to
488280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     *       MockContentProvider.
498280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     */
508280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa
518280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    /**
528280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * IContentProvider that directs all calls to this MockContentProvider.
538280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     */
548280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    private class InversionIContentProvider implements IContentProvider {
55d2183654e03d589b120467f4e98da1b178ceeadbJeff Brown        @Override
5635654b61e8fe7bc85afcb076ddbb590d51c5865fDianne Hackborn        public ContentProviderResult[] applyBatch(String callingPackage,
5735654b61e8fe7bc85afcb076ddbb590d51c5865fDianne Hackborn                ArrayList<ContentProviderOperation> operations)
588280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa                throws RemoteException, OperationApplicationException {
598280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            return MockContentProvider.this.applyBatch(operations);
608280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        }
618280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa
62d2183654e03d589b120467f4e98da1b178ceeadbJeff Brown        @Override
6335654b61e8fe7bc85afcb076ddbb590d51c5865fDianne Hackborn        public int bulkInsert(String callingPackage, Uri url, ContentValues[] initialValues)
6435654b61e8fe7bc85afcb076ddbb590d51c5865fDianne Hackborn                throws RemoteException {
658280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            return MockContentProvider.this.bulkInsert(url, initialValues);
668280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        }
678280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa
68d2183654e03d589b120467f4e98da1b178ceeadbJeff Brown        @Override
6935654b61e8fe7bc85afcb076ddbb590d51c5865fDianne Hackborn        public int delete(String callingPackage, Uri url, String selection, String[] selectionArgs)
708280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa                throws RemoteException {
718280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            return MockContentProvider.this.delete(url, selection, selectionArgs);
728280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        }
738280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa
74d2183654e03d589b120467f4e98da1b178ceeadbJeff Brown        @Override
758280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        public String getType(Uri url) throws RemoteException {
768280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            return MockContentProvider.this.getType(url);
778280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        }
788280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa
79d2183654e03d589b120467f4e98da1b178ceeadbJeff Brown        @Override
8035654b61e8fe7bc85afcb076ddbb590d51c5865fDianne Hackborn        public Uri insert(String callingPackage, Uri url, ContentValues initialValues)
8135654b61e8fe7bc85afcb076ddbb590d51c5865fDianne Hackborn                throws RemoteException {
828280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            return MockContentProvider.this.insert(url, initialValues);
838280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        }
848280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa
85d2183654e03d589b120467f4e98da1b178ceeadbJeff Brown        @Override
8635654b61e8fe7bc85afcb076ddbb590d51c5865fDianne Hackborn        public AssetFileDescriptor openAssetFile(String callingPackage, Uri url, String mode)
8735654b61e8fe7bc85afcb076ddbb590d51c5865fDianne Hackborn                throws RemoteException, FileNotFoundException {
888280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            return MockContentProvider.this.openAssetFile(url, mode);
898280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        }
908280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa
91d2183654e03d589b120467f4e98da1b178ceeadbJeff Brown        @Override
9235654b61e8fe7bc85afcb076ddbb590d51c5865fDianne Hackborn        public ParcelFileDescriptor openFile(String callingPackage, Uri url, String mode)
9335654b61e8fe7bc85afcb076ddbb590d51c5865fDianne Hackborn                throws RemoteException, FileNotFoundException {
948280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            return MockContentProvider.this.openFile(url, mode);
958280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        }
968280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa
97d2183654e03d589b120467f4e98da1b178ceeadbJeff Brown        @Override
9835654b61e8fe7bc85afcb076ddbb590d51c5865fDianne Hackborn        public Cursor query(String callingPackage, Uri url, String[] projection, String selection,
9935654b61e8fe7bc85afcb076ddbb590d51c5865fDianne Hackborn                String[] selectionArgs,
1004c1241df8f8b7fd5ec3dff6c7e0f66271248e76eJeff Brown                String sortOrder, ICancellationSignal cancellationSignal) throws RemoteException {
1018280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            return MockContentProvider.this.query(url, projection, selection,
1028280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa                    selectionArgs, sortOrder);
1038280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        }
1048280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa
105d2183654e03d589b120467f4e98da1b178ceeadbJeff Brown        @Override
10635654b61e8fe7bc85afcb076ddbb590d51c5865fDianne Hackborn        public int update(String callingPackage, Uri url, ContentValues values, String selection,
10735654b61e8fe7bc85afcb076ddbb590d51c5865fDianne Hackborn                String[] selectionArgs) throws RemoteException {
1088280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            return MockContentProvider.this.update(url, values, selection, selectionArgs);
1098280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        }
1108280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa
111d2183654e03d589b120467f4e98da1b178ceeadbJeff Brown        @Override
11235654b61e8fe7bc85afcb076ddbb590d51c5865fDianne Hackborn        public Bundle call(String callingPackage, String method, String request, Bundle args)
1131877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick                throws RemoteException {
1141877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick            return MockContentProvider.this.call(method, request, args);
1151877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick        }
1161877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick
117d2183654e03d589b120467f4e98da1b178ceeadbJeff Brown        @Override
1188280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        public IBinder asBinder() {
1198280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            throw new UnsupportedOperationException();
1208280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        }
1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
122d2183654e03d589b120467f4e98da1b178ceeadbJeff Brown        @Override
12323fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn        public String[] getStreamTypes(Uri url, String mimeTypeFilter) throws RemoteException {
12423fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn            return MockContentProvider.this.getStreamTypes(url, mimeTypeFilter);
12523fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn        }
12623fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn
127d2183654e03d589b120467f4e98da1b178ceeadbJeff Brown        @Override
12835654b61e8fe7bc85afcb076ddbb590d51c5865fDianne Hackborn        public AssetFileDescriptor openTypedAssetFile(String callingPackage, Uri url,
12935654b61e8fe7bc85afcb076ddbb590d51c5865fDianne Hackborn                String mimeType, Bundle opts)
13023fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn                throws RemoteException, FileNotFoundException {
13123fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn            return MockContentProvider.this.openTypedAssetFile(url, mimeType, opts);
13223fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn        }
13375ea64fc54f328d37b115cfb1ded1e45c30380edJeff Brown
13475ea64fc54f328d37b115cfb1ded1e45c30380edJeff Brown        @Override
1354c1241df8f8b7fd5ec3dff6c7e0f66271248e76eJeff Brown        public ICancellationSignal createCancellationSignal() throws RemoteException {
13675ea64fc54f328d37b115cfb1ded1e45c30380edJeff Brown            return null;
13775ea64fc54f328d37b115cfb1ded1e45c30380edJeff Brown        }
1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1398280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    private final InversionIContentProvider mIContentProvider = new InversionIContentProvider();
1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1418280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    /**
1428280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * A constructor using {@link MockContext} instance as a Context in it.
1438280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     */
1448280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    protected MockContentProvider() {
1458280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        super(new MockContext(), "", "", null);
1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1488280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    /**
1498280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * A constructor accepting a Context instance, which is supposed to be the subclasss of
1508280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * {@link MockContext}.
1518280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     */
1528280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public MockContentProvider(Context context) {
1538280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        super(context, "", "", null);
1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1568280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    /**
1578280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * A constructor which initialize four member variables which
1588280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * {@link android.content.ContentProvider} have internally.
1598280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     *
1608280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * @param context A Context object which should be some mock instance (like the
1618280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * instance of {@link android.test.mock.MockContext}).
1628280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * @param readPermission The read permision you want this instance should have in the
1638280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * test, which is available via {@link #getReadPermission()}.
1648280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * @param writePermission The write permission you want this instance should have
1658280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * in the test, which is available via {@link #getWritePermission()}.
1668280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * @param pathPermissions The PathPermissions you want this instance should have
1678280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * in the test, which is available via {@link #getPathPermissions()}.
1688280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     */
1698280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public MockContentProvider(Context context,
1708280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            String readPermission,
1718280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            String writePermission,
1728280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            PathPermission[] pathPermissions) {
1738280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        super(context, readPermission, writePermission, pathPermissions);
1748280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    }
1758280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa
1768280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    @Override
1778280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public int delete(Uri uri, String selection, String[] selectionArgs) {
1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new UnsupportedOperationException("unimplemented mock method");
1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1818280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    @Override
1828280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public String getType(Uri uri) {
1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new UnsupportedOperationException("unimplemented mock method");
1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1868280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    @Override
1878280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public Uri insert(Uri uri, ContentValues values) {
1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new UnsupportedOperationException("unimplemented mock method");
1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1918280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    @Override
1928280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public boolean onCreate() {
1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new UnsupportedOperationException("unimplemented mock method");
1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1958943737692169f564cd34a9c8d471f3a5d438712Fred Quintana
1968280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    @Override
1978280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
1988280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            String sortOrder) {
1998943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        throw new UnsupportedOperationException("unimplemented mock method");
2008943737692169f564cd34a9c8d471f3a5d438712Fred Quintana    }
2018943737692169f564cd34a9c8d471f3a5d438712Fred Quintana
2028280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    @Override
2038280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new UnsupportedOperationException("unimplemented mock method");
2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2075bba632d877c2878384ff21566c8eb6a1a22f37bFred Quintana    /**
2088280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * If you're reluctant to implement this manually, please just call super.bulkInsert().
2095bba632d877c2878384ff21566c8eb6a1a22f37bFred Quintana     */
2108280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    @Override
2118280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public int bulkInsert(Uri uri, ContentValues[] values) {
2126a8d5332f00bdfade6674b312e7166940aa28348Fred Quintana        throw new UnsupportedOperationException("unimplemented mock method");
2136a8d5332f00bdfade6674b312e7166940aa28348Fred Quintana    }
2146a8d5332f00bdfade6674b312e7166940aa28348Fred Quintana
2158280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    @Override
2168280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public void attachInfo(Context context, ProviderInfo info) {
2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new UnsupportedOperationException("unimplemented mock method");
2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2208280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    @Override
2218280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public ContentProviderResult[] applyBatch(ArrayList<ContentProviderOperation> operations) {
2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new UnsupportedOperationException("unimplemented mock method");
2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2258280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    /**
2261877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick     * @hide
2271877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick     */
2281877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick    @Override
2291877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick    public Bundle call(String method, String request, Bundle args) {
2301877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick        throw new UnsupportedOperationException("unimplemented mock method call");
2311877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick    }
2321877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick
23323fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn    public String[] getStreamTypes(Uri url, String mimeTypeFilter) {
23423fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn        throw new UnsupportedOperationException("unimplemented mock method call");
23523fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn    }
23623fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn
23723fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn    public AssetFileDescriptor openTypedAssetFile(Uri url, String mimeType, Bundle opts) {
23823fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn        throw new UnsupportedOperationException("unimplemented mock method call");
23923fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn    }
24023fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn
2411877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick    /**
2428280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * Returns IContentProvider which calls back same methods in this class.
2438280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * By overriding this class, we avoid the mechanism hidden behind ContentProvider
2448280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * (IPC, etc.)
2458280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     *
2468280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * @hide
2478280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     */
2488280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    @Override
2498280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public final IContentProvider getIContentProvider() {
2508280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        return mIContentProvider;
2518280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    }
252f99e2e042dbec5eba997eb0ac5e00d5fa23f7840Fred Quintana}
253