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
86bd3b902567b09379e1b62c60b3319ad82102efadJeff Sharkey        public AssetFileDescriptor openAssetFile(
87bd3b902567b09379e1b62c60b3319ad82102efadJeff Sharkey                String callingPackage, Uri url, String mode, ICancellationSignal signal)
8835654b61e8fe7bc85afcb076ddbb590d51c5865fDianne Hackborn                throws RemoteException, FileNotFoundException {
898280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            return MockContentProvider.this.openAssetFile(url, mode);
908280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        }
918280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa
92d2183654e03d589b120467f4e98da1b178ceeadbJeff Brown        @Override
93bd3b902567b09379e1b62c60b3319ad82102efadJeff Sharkey        public ParcelFileDescriptor openFile(
94ff17024e583b170312d82089fd358d278ce16c9aDianne Hackborn                String callingPackage, Uri url, String mode, ICancellationSignal signal,
95ff17024e583b170312d82089fd358d278ce16c9aDianne Hackborn                IBinder callerToken) throws RemoteException, FileNotFoundException {
968280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            return MockContentProvider.this.openFile(url, mode);
978280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        }
988280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa
99d2183654e03d589b120467f4e98da1b178ceeadbJeff Brown        @Override
10035654b61e8fe7bc85afcb076ddbb590d51c5865fDianne Hackborn        public Cursor query(String callingPackage, Uri url, String[] projection, String selection,
10135654b61e8fe7bc85afcb076ddbb590d51c5865fDianne Hackborn                String[] selectionArgs,
1024c1241df8f8b7fd5ec3dff6c7e0f66271248e76eJeff Brown                String sortOrder, ICancellationSignal cancellationSignal) throws RemoteException {
1038280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            return MockContentProvider.this.query(url, projection, selection,
1048280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa                    selectionArgs, sortOrder);
1058280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        }
1068280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa
107d2183654e03d589b120467f4e98da1b178ceeadbJeff Brown        @Override
10835654b61e8fe7bc85afcb076ddbb590d51c5865fDianne Hackborn        public int update(String callingPackage, Uri url, ContentValues values, String selection,
10935654b61e8fe7bc85afcb076ddbb590d51c5865fDianne Hackborn                String[] selectionArgs) throws RemoteException {
1108280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            return MockContentProvider.this.update(url, values, selection, selectionArgs);
1118280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        }
1128280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa
113d2183654e03d589b120467f4e98da1b178ceeadbJeff Brown        @Override
11435654b61e8fe7bc85afcb076ddbb590d51c5865fDianne Hackborn        public Bundle call(String callingPackage, String method, String request, Bundle args)
1151877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick                throws RemoteException {
1161877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick            return MockContentProvider.this.call(method, request, args);
1171877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick        }
1181877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick
119d2183654e03d589b120467f4e98da1b178ceeadbJeff Brown        @Override
1208280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        public IBinder asBinder() {
1218280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            throw new UnsupportedOperationException();
1228280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        }
1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
124d2183654e03d589b120467f4e98da1b178ceeadbJeff Brown        @Override
12523fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn        public String[] getStreamTypes(Uri url, String mimeTypeFilter) throws RemoteException {
12623fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn            return MockContentProvider.this.getStreamTypes(url, mimeTypeFilter);
12723fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn        }
12823fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn
129d2183654e03d589b120467f4e98da1b178ceeadbJeff Brown        @Override
13035654b61e8fe7bc85afcb076ddbb590d51c5865fDianne Hackborn        public AssetFileDescriptor openTypedAssetFile(String callingPackage, Uri url,
131bd3b902567b09379e1b62c60b3319ad82102efadJeff Sharkey                String mimeType, Bundle opts, ICancellationSignal signal)
13223fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn                throws RemoteException, FileNotFoundException {
13323fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn            return MockContentProvider.this.openTypedAssetFile(url, mimeType, opts);
13423fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn        }
13575ea64fc54f328d37b115cfb1ded1e45c30380edJeff Brown
13675ea64fc54f328d37b115cfb1ded1e45c30380edJeff Brown        @Override
1374c1241df8f8b7fd5ec3dff6c7e0f66271248e76eJeff Brown        public ICancellationSignal createCancellationSignal() throws RemoteException {
13875ea64fc54f328d37b115cfb1ded1e45c30380edJeff Brown            return null;
13975ea64fc54f328d37b115cfb1ded1e45c30380edJeff Brown        }
14038ed2a471a2291383821fb187bfa18450f0581c2Dianne Hackborn
14138ed2a471a2291383821fb187bfa18450f0581c2Dianne Hackborn        @Override
14238ed2a471a2291383821fb187bfa18450f0581c2Dianne Hackborn        public Uri canonicalize(String callingPkg, Uri uri) throws RemoteException {
14338ed2a471a2291383821fb187bfa18450f0581c2Dianne Hackborn            return MockContentProvider.this.canonicalize(uri);
14438ed2a471a2291383821fb187bfa18450f0581c2Dianne Hackborn        }
14538ed2a471a2291383821fb187bfa18450f0581c2Dianne Hackborn
14638ed2a471a2291383821fb187bfa18450f0581c2Dianne Hackborn        @Override
14738ed2a471a2291383821fb187bfa18450f0581c2Dianne Hackborn        public Uri uncanonicalize(String callingPkg, Uri uri) throws RemoteException {
14838ed2a471a2291383821fb187bfa18450f0581c2Dianne Hackborn            return MockContentProvider.this.uncanonicalize(uri);
14938ed2a471a2291383821fb187bfa18450f0581c2Dianne Hackborn        }
1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1518280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    private final InversionIContentProvider mIContentProvider = new InversionIContentProvider();
1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1538280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    /**
1548280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * A constructor using {@link MockContext} instance as a Context in it.
1558280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     */
1568280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    protected MockContentProvider() {
1578280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        super(new MockContext(), "", "", null);
1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1608280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    /**
1618280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * A constructor accepting a Context instance, which is supposed to be the subclasss of
1628280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * {@link MockContext}.
1638280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     */
1648280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public MockContentProvider(Context context) {
1658280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        super(context, "", "", null);
1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1688280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    /**
1698280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * A constructor which initialize four member variables which
1708280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * {@link android.content.ContentProvider} have internally.
1718280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     *
1728280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * @param context A Context object which should be some mock instance (like the
1738280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * instance of {@link android.test.mock.MockContext}).
1748280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * @param readPermission The read permision you want this instance should have in the
1758280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * test, which is available via {@link #getReadPermission()}.
1768280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * @param writePermission The write permission you want this instance should have
1778280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * in the test, which is available via {@link #getWritePermission()}.
1788280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * @param pathPermissions The PathPermissions you want this instance should have
1798280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * in the test, which is available via {@link #getPathPermissions()}.
1808280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     */
1818280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public MockContentProvider(Context context,
1828280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            String readPermission,
1838280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            String writePermission,
1848280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            PathPermission[] pathPermissions) {
1858280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        super(context, readPermission, writePermission, pathPermissions);
1868280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    }
1878280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa
1888280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    @Override
1898280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public int delete(Uri uri, String selection, String[] selectionArgs) {
1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new UnsupportedOperationException("unimplemented mock method");
1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1938280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    @Override
1948280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public String getType(Uri uri) {
1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new UnsupportedOperationException("unimplemented mock method");
1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1988280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    @Override
1998280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public Uri insert(Uri uri, ContentValues values) {
2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new UnsupportedOperationException("unimplemented mock method");
2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2038280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    @Override
2048280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public boolean onCreate() {
2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new UnsupportedOperationException("unimplemented mock method");
2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2078943737692169f564cd34a9c8d471f3a5d438712Fred Quintana
2088280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    @Override
2098280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
2108280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa            String sortOrder) {
2118943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        throw new UnsupportedOperationException("unimplemented mock method");
2128943737692169f564cd34a9c8d471f3a5d438712Fred Quintana    }
2138943737692169f564cd34a9c8d471f3a5d438712Fred Quintana
2148280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    @Override
2158280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new UnsupportedOperationException("unimplemented mock method");
2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2195bba632d877c2878384ff21566c8eb6a1a22f37bFred Quintana    /**
2208280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * If you're reluctant to implement this manually, please just call super.bulkInsert().
2215bba632d877c2878384ff21566c8eb6a1a22f37bFred Quintana     */
2228280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    @Override
2238280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public int bulkInsert(Uri uri, ContentValues[] values) {
2246a8d5332f00bdfade6674b312e7166940aa28348Fred Quintana        throw new UnsupportedOperationException("unimplemented mock method");
2256a8d5332f00bdfade6674b312e7166940aa28348Fred Quintana    }
2266a8d5332f00bdfade6674b312e7166940aa28348Fred Quintana
2278280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    @Override
2288280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public void attachInfo(Context context, ProviderInfo info) {
2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new UnsupportedOperationException("unimplemented mock method");
2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2328280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    @Override
2338280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public ContentProviderResult[] applyBatch(ArrayList<ContentProviderOperation> operations) {
2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new UnsupportedOperationException("unimplemented mock method");
2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2378280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    /**
2381877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick     * @hide
2391877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick     */
2401877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick    @Override
2411877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick    public Bundle call(String method, String request, Bundle args) {
2421877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick        throw new UnsupportedOperationException("unimplemented mock method call");
2431877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick    }
2441877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick
24523fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn    public String[] getStreamTypes(Uri url, String mimeTypeFilter) {
24623fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn        throw new UnsupportedOperationException("unimplemented mock method call");
24723fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn    }
24823fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn
24923fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn    public AssetFileDescriptor openTypedAssetFile(Uri url, String mimeType, Bundle opts) {
25023fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn        throw new UnsupportedOperationException("unimplemented mock method call");
25123fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn    }
25223fdaf6fb62a9b5154b2508916a21c678462c5d0Dianne Hackborn
2531877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick    /**
2548280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * Returns IContentProvider which calls back same methods in this class.
2558280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * By overriding this class, we avoid the mechanism hidden behind ContentProvider
2568280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * (IPC, etc.)
2578280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     *
2588280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     * @hide
2598280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa     */
2608280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    @Override
2618280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    public final IContentProvider getIContentProvider() {
2628280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa        return mIContentProvider;
2638280c2b15f6875b2d387c05df23d264864eb9cd5Daisuke Miyakawa    }
264f99e2e042dbec5eba997eb0ac5e00d5fa23f7840Fred Quintana}
265