• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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