2 * Copyright (C) 2006 The Android Open Source Project
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 package android.app.activity;
19 import android.content.ComponentName;
20 import android.content.pm.ActivityInfo;
21 import android.content.pm.PackageItemInfo;
22 import android.content.pm.PackageManager;
23 import android.content.pm.PermissionInfo;
24 import android.content.pm.ProviderInfo;
25 import android.content.pm.ServiceInfo;
26 import android.content.res.TypedArray;
27 import android.content.res.XmlResourceParser;
28 import android.os.Bundle;
29 import android.test.AndroidTestCase;
30 import android.test.suitebuilder.annotation.SmallTest;
31 import com.android.frameworks.coretests.R;
32 import org.xmlpull.v1.XmlPullParser;
33 import org.xmlpull.v1.XmlPullParserException;
35 import java.io.IOException;
38 * Tests for meta-data associated with application components.
40 public class MetaDataTest extends AndroidTestCase {
42 private void checkMetaData(ComponentName cn, PackageItemInfo ci)
43 throws IOException, XmlPullParserException {
44 assertNotNull("Unable to find component " + cn, ci);
46 Bundle md = ci.metaData;
47 assertNotNull("No meta data found", md);
49 assertEquals("foo", md.getString("com.android.frameworks.coretests.string"));
50 assertTrue(md.getBoolean("com.android.frameworks.coretests.boolean"));
51 assertEquals(100, md.getInt("com.android.frameworks.coretests.integer"));
52 assertEquals(0xff000000, md.getInt("com.android.frameworks.coretests.color"));
54 assertEquals((double) 1001,
55 Math.floor(md.getFloat("com.android.frameworks.coretests.float") * 10 + .5));
57 assertEquals(R.xml.metadata, md.getInt("com.android.frameworks.coretests.reference"));
59 XmlResourceParser xml = ci.loadXmlMetaData(mContext.getPackageManager(),
60 "com.android.frameworks.coretests.reference");
64 while ((type = xml.next()) != XmlPullParser.START_TAG
65 && type != XmlPullParser.END_DOCUMENT) {
67 assertEquals(XmlPullParser.START_TAG, type);
68 assertEquals("thedata", xml.getName());
70 // method 1: direct access
71 final String rawAttr = xml.getAttributeValue(null, "rawText");
72 assertEquals("some raw text", rawAttr);
74 // method 2: direct access of typed value
75 final int rawColorIntAttr = xml.getAttributeIntValue(null, "rawColor", 0);
76 assertEquals(0xffffff00, rawColorIntAttr);
77 final String rawColorStrAttr = xml.getAttributeValue(null, "rawColor");
78 assertEquals("#ffffff00", rawColorStrAttr);
80 // method 2: direct access of resource attribute
81 final String nameSpace = "http://schemas.android.com/apk/res/android";
82 final int colorIntAttr = xml.getAttributeIntValue(nameSpace, "color", 0);
83 assertEquals(0xffff0000, colorIntAttr);
84 final String colorStrAttr = xml.getAttributeValue(nameSpace, "color");
85 assertEquals("#ffff0000", colorStrAttr);
87 // method 3: styled access (borrowing an attr from view system here)
88 TypedArray a = mContext.obtainStyledAttributes(xml,
89 android.R.styleable.TextView);
90 String styledAttr = a.getString(android.R.styleable.TextView_text);
91 assertEquals("text", styledAttr);
98 public void testActivityWithData() throws Exception {
99 ComponentName cn = new ComponentName(mContext, LocalActivity.class);
100 ActivityInfo ai = mContext.getPackageManager().getActivityInfo(
101 cn, PackageManager.GET_META_DATA);
103 checkMetaData(cn, ai);
105 ai = mContext.getPackageManager().getActivityInfo(cn, 0);
107 assertNull("Meta data returned when not requested", ai.metaData);
111 public void testReceiverWithData() throws Exception {
112 ComponentName cn = new ComponentName(mContext, LocalReceiver.class);
113 ActivityInfo ai = mContext.getPackageManager().getReceiverInfo(
114 cn, PackageManager.GET_META_DATA);
116 checkMetaData(cn, ai);
118 ai = mContext.getPackageManager().getReceiverInfo(cn, 0);
120 assertNull("Meta data returned when not requested", ai.metaData);
124 public void testServiceWithData() throws Exception {
125 ComponentName cn = new ComponentName(mContext, LocalService.class);
126 ServiceInfo si = mContext.getPackageManager().getServiceInfo(
127 cn, PackageManager.GET_META_DATA);
129 checkMetaData(cn, si);
131 si = mContext.getPackageManager().getServiceInfo(cn, 0);
133 assertNull("Meta data returned when not requested", si.metaData);
137 public void testProviderWithData() throws Exception {
138 ComponentName cn = new ComponentName(mContext, LocalProvider.class);
139 ProviderInfo pi = mContext.getPackageManager().resolveContentProvider(
140 "com.android.frameworks.coretests.LocalProvider",
141 PackageManager.GET_META_DATA);
142 checkMetaData(cn, pi);
144 pi = mContext.getPackageManager().resolveContentProvider(
145 "com.android.frameworks.coretests.LocalProvider", 0);
147 assertNull("Meta data returned when not requested", pi.metaData);
151 public void testPermissionWithData() throws Exception {
152 ComponentName cn = new ComponentName("foo",
153 "com.android.frameworks.coretests.permission.TEST_GRANTED");
154 PermissionInfo pi = mContext.getPackageManager().getPermissionInfo(
155 cn.getClassName(), PackageManager.GET_META_DATA);
156 checkMetaData(cn, pi);
158 pi = mContext.getPackageManager().getPermissionInfo(
159 cn.getClassName(), 0);
161 assertNull("Meta data returned when not requested", pi.metaData);