1 /* 2 * Copyright (C) 2008 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package android.content.pm.cts; 18 19 20 import android.content.pm.ApplicationInfo; 21 import android.content.pm.PackageManager; 22 import android.content.pm.ProviderInfo; 23 import android.content.pm.PackageManager.NameNotFoundException; 24 import android.content.res.XmlResourceParser; 25 import android.os.Parcel; 26 import android.test.AndroidTestCase; 27 28 import libcore.io.IoUtils; 29 30 import java.util.Iterator; 31 import java.util.List; 32 33 public class ProviderInfoTest extends AndroidTestCase { 34 private static final String PACKAGE_NAME = "android.content.cts"; 35 private static final String PROVIDER_NAME = "android.content.cts.MockContentProvider"; 36 testProviderInfo()37 public void testProviderInfo() throws NameNotFoundException { 38 PackageManager pm = getContext().getPackageManager(); 39 Parcel p = Parcel.obtain(); 40 // Test ProviderInfo() 41 new ProviderInfo(); 42 // Test other methods 43 ApplicationInfo appInfo = pm.getApplicationInfo(PACKAGE_NAME, 0); 44 List<ProviderInfo> providers = pm.queryContentProviders(PACKAGE_NAME, appInfo.uid, 0); 45 Iterator<ProviderInfo> providerIterator = providers.iterator(); 46 ProviderInfo current; 47 while (providerIterator.hasNext()) { 48 current = providerIterator.next(); 49 if (current.name.equals(PROVIDER_NAME)) { 50 checkProviderInfoMethods(current, p); 51 break; 52 } 53 } 54 } 55 testProviderMetaData()56 public void testProviderMetaData() { 57 final ProviderInfo info = getContext().getPackageManager() 58 .resolveContentProvider("android.content.cts.fileprovider", 59 PackageManager.GET_META_DATA); 60 final XmlResourceParser in = info.loadXmlMetaData( 61 getContext().getPackageManager(), "android.support.FILE_PROVIDER_PATHS"); 62 try { 63 assertNotNull(in); 64 } finally { 65 IoUtils.closeQuietly(in); 66 } 67 } 68 checkProviderInfoMethods(ProviderInfo providerInfo, Parcel p)69 private void checkProviderInfoMethods(ProviderInfo providerInfo, Parcel p) { 70 // Test toString, describeContents 71 assertNotNull(providerInfo.toString()); 72 assertEquals(0, providerInfo.describeContents()); 73 74 // Test ProviderInfo(ProviderInfo orig) 75 ProviderInfo infoFromExisted = new ProviderInfo(providerInfo); 76 checkInfoSame(providerInfo, infoFromExisted); 77 78 // Test writeToParcel 79 providerInfo.writeToParcel(p, 0); 80 p.setDataPosition(0); 81 ProviderInfo infoFromParcel = ProviderInfo.CREATOR.createFromParcel(p); 82 checkInfoSame(providerInfo, infoFromParcel); 83 p.recycle(); 84 } 85 checkInfoSame(ProviderInfo expected, ProviderInfo actual)86 private void checkInfoSame(ProviderInfo expected, ProviderInfo actual) { 87 assertEquals(expected.name, actual.name); 88 assertEquals(expected.authority, actual.authority); 89 assertEquals(expected.readPermission, actual.readPermission); 90 assertEquals(expected.writePermission, actual.writePermission); 91 assertEquals(expected.grantUriPermissions, actual.grantUriPermissions); 92 assertEquals(expected.uriPermissionPatterns, actual.uriPermissionPatterns); 93 assertEquals(expected.multiprocess, actual.multiprocess); 94 assertEquals(expected.initOrder, actual.initOrder); 95 assertEquals(expected.isSyncable, actual.isSyncable); 96 } 97 } 98