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
568280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        public ContentProviderResult[] applyBatch(ArrayList<ContentProviderOperation> operations)
578280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa                throws RemoteException, OperationApplicationException {
588280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            return MockContentProvider.this.applyBatch(operations);
598280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        }
608280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa
61d2183654e03d589b120467f4e98da1b178ceeadbJeff Brown        @Override
628280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        public int bulkInsert(Uri url, ContentValues[] initialValues) throws RemoteException {
638280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            return MockContentProvider.this.bulkInsert(url, initialValues);
648280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        }
658280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa
66d2183654e03d589b120467f4e98da1b178ceeadbJeff Brown        @Override
678280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        public int delete(Uri url, String selection, String[] selectionArgs)
688280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa                throws RemoteException {
698280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            return MockContentProvider.this.delete(url, selection, selectionArgs);
708280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        }
718280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa
72d2183654e03d589b120467f4e98da1b178ceeadbJeff Brown        @Override
738280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        public String getType(Uri url) throws RemoteException {
748280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            return MockContentProvider.this.getType(url);
758280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        }
768280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa
77d2183654e03d589b120467f4e98da1b178ceeadbJeff Brown        @Override
788280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        public Uri insert(Uri url, ContentValues initialValues) throws RemoteException {
798280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            return MockContentProvider.this.insert(url, initialValues);
808280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        }
818280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa
82d2183654e03d589b120467f4e98da1b178ceeadbJeff Brown        @Override
838280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        public AssetFileDescriptor openAssetFile(Uri url, String mode) throws RemoteException,
848280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa                FileNotFoundException {
858280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            return MockContentProvider.this.openAssetFile(url, mode);
868280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        }
878280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa
88d2183654e03d589b120467f4e98da1b178ceeadbJeff Brown        @Override
898280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        public ParcelFileDescriptor openFile(Uri url, String mode) throws RemoteException,
908280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa                FileNotFoundException {
918280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            return MockContentProvider.this.openFile(url, mode);
928280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        }
938280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa
94d2183654e03d589b120467f4e98da1b178ceeadbJeff Brown        @Override
958280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        public Cursor query(Uri url, String[] projection, String selection, String[] selectionArgs,
964c1241df8f8b7fd5ec3dff6c7e0f66271248e76eJeff Brown                String sortOrder, ICancellationSignal cancellationSignal) throws RemoteException {
978280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            return MockContentProvider.this.query(url, projection, selection,
988280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa                    selectionArgs, sortOrder);
998280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        }
1008280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa
101d2183654e03d589b120467f4e98da1b178ceeadbJeff Brown        @Override
1028280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        public int update(Uri url, ContentValues values, String selection, String[] selectionArgs)
1038280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa                throws RemoteException {
1048280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            return MockContentProvider.this.update(url, values, selection, selectionArgs);
1058280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        }
1068280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa
107d2183654e03d589b120467f4e98da1b178ceeadbJeff Brown        @Override
1081877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick        public Bundle call(String method, String request, Bundle args)
1091877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick                throws RemoteException {
1101877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick            return MockContentProvider.this.call(method, request, args);
1111877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick        }
1121877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick
113d2183654e03d589b120467f4e98da1b178ceeadbJeff Brown        @Override
1148280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        public IBinder asBinder() {
1158280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            throw new UnsupportedOperationException();
1168280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        }
1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
118d2183654e03d589b120467f4e98da1b178ceeadbJeff Brown        @Override
11923fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn        public String[] getStreamTypes(Uri url, String mimeTypeFilter) throws RemoteException {
12023fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn            return MockContentProvider.this.getStreamTypes(url, mimeTypeFilter);
12123fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn        }
12223fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn
123d2183654e03d589b120467f4e98da1b178ceeadbJeff Brown        @Override
12423fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn        public AssetFileDescriptor openTypedAssetFile(Uri url, String mimeType, Bundle opts)
12523fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn                throws RemoteException, FileNotFoundException {
12623fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn            return MockContentProvider.this.openTypedAssetFile(url, mimeType, opts);
12723fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn        }
12875ea64fc54f328d37b115cfb1ded1e45c30380edJeff Brown
12975ea64fc54f328d37b115cfb1ded1e45c30380edJeff Brown        @Override
1304c1241df8f8b7fd5ec3dff6c7e0f66271248e76eJeff Brown        public ICancellationSignal createCancellationSignal() throws RemoteException {
13175ea64fc54f328d37b115cfb1ded1e45c30380edJeff Brown            return null;
13275ea64fc54f328d37b115cfb1ded1e45c30380edJeff Brown        }
1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1348280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    private final InversionIContentProvider mIContentProvider = new InversionIContentProvider();
1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1368280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    /**
1378280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * A constructor using {@link MockContext} instance as a Context in it.
1388280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     */
1398280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    protected MockContentProvider() {
1408280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        super(new MockContext(), "", "", null);
1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1438280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    /**
1448280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * A constructor accepting a Context instance, which is supposed to be the subclasss of
1458280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * {@link MockContext}.
1468280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     */
1478280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public MockContentProvider(Context context) {
1488280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        super(context, "", "", null);
1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1518280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    /**
1528280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * A constructor which initialize four member variables which
1538280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * {@link android.content.ContentProvider} have internally.
1548280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     *
1558280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * @param context A Context object which should be some mock instance (like the
1568280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * instance of {@link android.test.mock.MockContext}).
1578280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * @param readPermission The read permision you want this instance should have in the
1588280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * test, which is available via {@link #getReadPermission()}.
1598280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * @param writePermission The write permission you want this instance should have
1608280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * in the test, which is available via {@link #getWritePermission()}.
1618280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * @param pathPermissions The PathPermissions you want this instance should have
1628280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * in the test, which is available via {@link #getPathPermissions()}.
1638280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     */
1648280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public MockContentProvider(Context context,
1658280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            String readPermission,
1668280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            String writePermission,
1678280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            PathPermission[] pathPermissions) {
1688280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        super(context, readPermission, writePermission, pathPermissions);
1698280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    }
1708280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa
1718280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    @Override
1728280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public int delete(Uri uri, String selection, String[] selectionArgs) {
1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new UnsupportedOperationException("unimplemented mock method");
1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1768280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    @Override
1778280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public String getType(Uri uri) {
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 Uri insert(Uri uri, ContentValues values) {
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 boolean onCreate() {
1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new UnsupportedOperationException("unimplemented mock method");
1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1908943737692169f564cd34a9c8d471f3a5d438712Fred Quintana
1918280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    @Override
1928280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
1938280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            String sortOrder) {
1948943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        throw new UnsupportedOperationException("unimplemented mock method");
1958943737692169f564cd34a9c8d471f3a5d438712Fred Quintana    }
1968943737692169f564cd34a9c8d471f3a5d438712Fred Quintana
1978280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    @Override
1988280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new UnsupportedOperationException("unimplemented mock method");
2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2025bba632d877c2878384ff21566c8eb6a1a22f37bFred Quintana    /**
2038280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * If you're reluctant to implement this manually, please just call super.bulkInsert().
2045bba632d877c2878384ff21566c8eb6a1a22f37bFred Quintana     */
2058280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    @Override
2068280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public int bulkInsert(Uri uri, ContentValues[] values) {
2076a8d5332f00bdfade6674b312e7166940aa28348Fred Quintana        throw new UnsupportedOperationException("unimplemented mock method");
2086a8d5332f00bdfade6674b312e7166940aa28348Fred Quintana    }
2096a8d5332f00bdfade6674b312e7166940aa28348Fred Quintana
2108280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    @Override
2118280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public void attachInfo(Context context, ProviderInfo info) {
2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new UnsupportedOperationException("unimplemented mock method");
2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2158280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    @Override
2168280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public ContentProviderResult[] applyBatch(ArrayList<ContentProviderOperation> operations) {
2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new UnsupportedOperationException("unimplemented mock method");
2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2208280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    /**
2211877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick     * @hide
2221877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick     */
2231877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick    @Override
2241877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick    public Bundle call(String method, String request, Bundle args) {
2251877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick        throw new UnsupportedOperationException("unimplemented mock method call");
2261877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick    }
2271877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick
22823fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn    public String[] getStreamTypes(Uri url, String mimeTypeFilter) {
22923fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn        throw new UnsupportedOperationException("unimplemented mock method call");
23023fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn    }
23123fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn
23223fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn    public AssetFileDescriptor openTypedAssetFile(Uri url, String mimeType, Bundle opts) {
23323fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn        throw new UnsupportedOperationException("unimplemented mock method call");
23423fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn    }
23523fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn
2361877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick    /**
2378280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * Returns IContentProvider which calls back same methods in this class.
2388280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * By overriding this class, we avoid the mechanism hidden behind ContentProvider
2398280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * (IPC, etc.)
2408280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     *
2418280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * @hide
2428280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     */
2438280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    @Override
2448280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public final IContentProvider getIContentProvider() {
2458280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        return mIContentProvider;
2468280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    }
247f99e2e042dbec5eba997eb0ac5e00d5fa23f7840Fred Quintana}
248