MockContentProvider.java revision e70f61b1160e953e5e4d18d30a463fa9ba821779
19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 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
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.ContentProvider;
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.ContentProviderOperation;
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.ContentProviderResult;
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.ContentValues;
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Context;
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.EntityIterator;
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.IContentProvider;
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.OperationApplicationException;
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.pm.PathPermission;
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport 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;
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.IBinder;
36f54a8d7c479485174941c38f151ea7083c658da3Chet Haaseimport android.os.ParcelFileDescriptor;
37f54a8d7c479485174941c38f151ea7083c658da3Chet Haaseimport android.os.RemoteException;
38a18a86b43e40e3c15dcca0ae0148d641be9b25feChet Haase
39f54a8d7c479485174941c38f151ea7083c658da3Chet Haaseimport java.io.FileNotFoundException;
40f54a8d7c479485174941c38f151ea7083c658da3Chet Haaseimport java.util.ArrayList;
41f54a8d7c479485174941c38f151ea7083c658da3Chet Haase
42f54a8d7c479485174941c38f151ea7083c658da3Chet Haase/**
43f54a8d7c479485174941c38f151ea7083c658da3Chet Haase * Mock implementation of ContentProvider.  All methods are non-functional and throw
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link java.lang.UnsupportedOperationException}.  Tests can extend this class to
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * implement behavior needed for tests.
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class MockContentProvider extends ContentProvider {
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /*
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Note: if you add methods to ContentProvider, you must add similar methods to
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *       MockContentProvider.
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * IContentProvider that directs all calls to this MockContentProvider.
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private class InversionIContentProvider implements IContentProvider {
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        @SuppressWarnings("unused")
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public ContentProviderResult[] applyBatch(ArrayList<ContentProviderOperation> operations)
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                throws RemoteException, OperationApplicationException {
60f54a8d7c479485174941c38f151ea7083c658da3Chet Haase            return MockContentProvider.this.applyBatch(operations);
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        @SuppressWarnings("unused")
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public int bulkInsert(Uri url, ContentValues[] initialValues) throws RemoteException {
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return MockContentProvider.this.bulkInsert(url, initialValues);
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        @SuppressWarnings("unused")
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public IBulkCursor bulkQuery(Uri url, String[] projection, String selection,
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                String[] selectionArgs, String sortOrder, IContentObserver observer,
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                CursorWindow window) throws RemoteException {
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            throw new UnsupportedOperationException("Must not come here");
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
748b0662878eae69ab62e859b07165f086ea65cad5Jean-Baptiste Queru
758b0662878eae69ab62e859b07165f086ea65cad5Jean-Baptiste Queru        @SuppressWarnings("unused")
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public int delete(Uri url, String selection, String[] selectionArgs)
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                throws RemoteException {
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return MockContentProvider.this.delete(url, selection, selectionArgs);
798b0662878eae69ab62e859b07165f086ea65cad5Jean-Baptiste Queru        }
808b0662878eae69ab62e859b07165f086ea65cad5Jean-Baptiste Queru
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        @SuppressWarnings("unused")
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public String getType(Uri url) throws RemoteException {
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return MockContentProvider.this.getType(url);
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        @SuppressWarnings("unused")
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public Uri insert(Uri url, ContentValues initialValues) throws RemoteException {
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return MockContentProvider.this.insert(url, initialValues);
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
908b0662878eae69ab62e859b07165f086ea65cad5Jean-Baptiste Queru
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        @SuppressWarnings("unused")
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public AssetFileDescriptor openAssetFile(Uri url, String mode) throws RemoteException,
93f54a8d7c479485174941c38f151ea7083c658da3Chet Haase                FileNotFoundException {
948b0662878eae69ab62e859b07165f086ea65cad5Jean-Baptiste Queru            return MockContentProvider.this.openAssetFile(url, mode);
958b0662878eae69ab62e859b07165f086ea65cad5Jean-Baptiste Queru        }
96f54a8d7c479485174941c38f151ea7083c658da3Chet Haase
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        @SuppressWarnings("unused")
98f54a8d7c479485174941c38f151ea7083c658da3Chet Haase        public ParcelFileDescriptor openFile(Uri url, String mode) throws RemoteException,
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                FileNotFoundException {
1008b0662878eae69ab62e859b07165f086ea65cad5Jean-Baptiste Queru            return MockContentProvider.this.openFile(url, mode);
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        @SuppressWarnings("unused")
1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public Cursor query(Uri url, String[] projection, String selection, String[] selectionArgs,
1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                String sortOrder) throws RemoteException {
1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return MockContentProvider.this.query(url, projection, selection,
1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    selectionArgs, sortOrder);
1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        @SuppressWarnings("unused")
111f54a8d7c479485174941c38f151ea7083c658da3Chet Haase        public int update(Uri url, ContentValues values, String selection, String[] selectionArgs)
1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                throws RemoteException {
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return MockContentProvider.this.update(url, values, selection, selectionArgs);
1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public IBinder asBinder() {
1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            throw new UnsupportedOperationException();
1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private final InversionIContentProvider mIContentProvider = new InversionIContentProvider();
1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * A constructor using {@link MockContext} instance as a Context in it.
1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    protected MockContentProvider() {
1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        super(new MockContext(), "", "", null);
1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
131f54a8d7c479485174941c38f151ea7083c658da3Chet Haase     * A constructor accepting a Context instance, which is supposed to be the subclasss of
132f54a8d7c479485174941c38f151ea7083c658da3Chet Haase     * {@link MockContext}.
133f54a8d7c479485174941c38f151ea7083c658da3Chet Haase     */
134f54a8d7c479485174941c38f151ea7083c658da3Chet Haase    public MockContentProvider(Context context) {
135f54a8d7c479485174941c38f151ea7083c658da3Chet Haase        super(context, "", "", null);
1362d46fcc669ff5efe365e9be435ab9e5c5a304939Chet Haase    }
1372d46fcc669ff5efe365e9be435ab9e5c5a304939Chet Haase
1382d46fcc669ff5efe365e9be435ab9e5c5a304939Chet Haase    /**
1392d46fcc669ff5efe365e9be435ab9e5c5a304939Chet Haase     * A constructor which initialize four member variables which
1402d46fcc669ff5efe365e9be435ab9e5c5a304939Chet Haase     * {@link android.content.ContentProvider} have internally.
1412d46fcc669ff5efe365e9be435ab9e5c5a304939Chet Haase     *
1422d46fcc669ff5efe365e9be435ab9e5c5a304939Chet Haase     * @param context A Context object which should be some mock instance (like the
1432d46fcc669ff5efe365e9be435ab9e5c5a304939Chet Haase     * instance of {@link android.test.mock.MockContext}).
1448b0662878eae69ab62e859b07165f086ea65cad5Jean-Baptiste Queru     * @param readPermission The read permision you want this instance should have in the
1458b0662878eae69ab62e859b07165f086ea65cad5Jean-Baptiste Queru     * test, which is available via {@link #getReadPermission()}.
1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param writePermission The write permission you want this instance should have
1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * in the test, which is available via {@link #getWritePermission()}.
1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param pathPermissions The PathPermissions you want this instance should have
1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * in the test, which is available via {@link #getPathPermissions()}.
1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public MockContentProvider(Context context,
1528b0662878eae69ab62e859b07165f086ea65cad5Jean-Baptiste Queru            String readPermission,
1538b0662878eae69ab62e859b07165f086ea65cad5Jean-Baptiste Queru            String writePermission,
1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            PathPermission[] pathPermissions) {
1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        super(context, readPermission, writePermission, pathPermissions);
1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1578b0662878eae69ab62e859b07165f086ea65cad5Jean-Baptiste Queru
1588b0662878eae69ab62e859b07165f086ea65cad5Jean-Baptiste Queru    @Override
1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int delete(Uri uri, String selection, String[] selectionArgs) {
1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new UnsupportedOperationException("unimplemented mock method");
1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String getType(Uri uri) {
1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new UnsupportedOperationException("unimplemented mock method");
1668b0662878eae69ab62e859b07165f086ea65cad5Jean-Baptiste Queru    }
1678b0662878eae69ab62e859b07165f086ea65cad5Jean-Baptiste Queru
1688b0662878eae69ab62e859b07165f086ea65cad5Jean-Baptiste Queru    @Override
1698b0662878eae69ab62e859b07165f086ea65cad5Jean-Baptiste Queru    public Uri insert(Uri uri, ContentValues values) {
1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new UnsupportedOperationException("unimplemented mock method");
1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1728b0662878eae69ab62e859b07165f086ea65cad5Jean-Baptiste Queru
1738b0662878eae69ab62e859b07165f086ea65cad5Jean-Baptiste Queru    @Override
1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean onCreate() {
1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new UnsupportedOperationException("unimplemented mock method");
1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
1808b0662878eae69ab62e859b07165f086ea65cad5Jean-Baptiste Queru            String sortOrder) {
1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new UnsupportedOperationException("unimplemented mock method");
1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new UnsupportedOperationException("unimplemented mock method");
1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * If you're reluctant to implement this manually, please just call super.bulkInsert().
1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int bulkInsert(Uri uri, ContentValues[] values) {
1948b0662878eae69ab62e859b07165f086ea65cad5Jean-Baptiste Queru        throw new UnsupportedOperationException("unimplemented mock method");
1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void attachInfo(Context context, ProviderInfo info) {
1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new UnsupportedOperationException("unimplemented mock method");
2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public ContentProviderResult[] applyBatch(ArrayList<ContentProviderOperation> operations) {
2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new UnsupportedOperationException("unimplemented mock method");
2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns IContentProvider which calls back same methods in this class.
2098b0662878eae69ab62e859b07165f086ea65cad5Jean-Baptiste Queru     * By overriding this class, we avoid the mechanism hidden behind ContentProvider
2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * (IPC, etc.)
2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @hide
2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public final IContentProvider getIContentProvider() {
2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mIContentProvider;
2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project