Home | History | Annotate | Download | only in cts
      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.cts;
     18 
     19 import com.android.internal.app.ResolverActivity;
     20 import com.android.internal.util.Objects;
     21 import com.android.internal.util.XmlUtils;
     22 
     23 
     24 import org.xmlpull.v1.XmlPullParser;
     25 import org.xmlpull.v1.XmlPullParserException;
     26 
     27 import android.app.cts.MockActivity;
     28 import android.app.cts.MockReceiver;
     29 import android.content.ComponentName;
     30 import android.content.ContentResolver;
     31 import android.content.Context;
     32 import android.content.Intent;
     33 import android.content.pm.ActivityInfo;
     34 import android.content.pm.PackageManager;
     35 import android.content.pm.PackageManager.NameNotFoundException;
     36 import android.content.res.XmlResourceParser;
     37 import android.net.Uri;
     38 import android.os.Bundle;
     39 import android.os.IBinder;
     40 import android.os.Parcel;
     41 import android.os.ServiceManager;
     42 import android.provider.Contacts.People;
     43 import android.test.AndroidTestCase;
     44 import android.util.AttributeSet;
     45 import android.util.Log;
     46 import android.util.Xml;
     47 
     48 import java.io.IOException;
     49 import java.io.Serializable;
     50 import java.net.URISyntaxException;
     51 import java.util.ArrayList;
     52 import java.util.Set;
     53 
     54 public class IntentTest extends AndroidTestCase {
     55 
     56     private Intent mIntent;
     57     private static final String TEST_ACTION = "android.content.IntentTest_test";
     58     private static final Uri TEST_URI = People.CONTENT_URI;
     59     private static final Uri ANOTHER_TEST_URI = People.CONTENT_FILTER_URI;
     60     private static final String TEST_EXTRA_NAME = "testExtraName";
     61     private Context mContext;
     62     private PackageManager mPm;
     63     private ComponentName mComponentName;
     64     private ComponentName mAnotherComponentName;
     65     private static final String TEST_TYPE = "testType";
     66     private static final String ANOTHER_TEST_TYPE = "anotherTestType";
     67     private static final String TEST_CATEGORY = "testCategory";
     68     private static final String ANOTHER_TEST_CATEGORY = "testAnotherCategory";
     69     private static final String TEST_PACKAGE = "android.content.cts";
     70     private static final String ANOTHER_TEST_PACKAGE = "android.database.cts";
     71 
     72     @Override
     73     protected void setUp() throws Exception {
     74         super.setUp();
     75         mIntent = new Intent();
     76         mContext = getContext();
     77         mPm = mContext.getPackageManager();
     78         mComponentName = new ComponentName(mContext, MockActivity.class);
     79         mAnotherComponentName = new ComponentName(mContext, "tmp");
     80     }
     81 
     82     public void testConstructor() {
     83         mIntent = new Intent();
     84         assertNotNull(mIntent);
     85 
     86         Intent intent = new Intent();
     87         intent.setAction(TEST_ACTION);
     88 
     89         mIntent = new Intent(intent);
     90         assertNotNull(mIntent);
     91         assertEquals(TEST_ACTION, mIntent.getAction());
     92 
     93         mIntent = new Intent(TEST_ACTION);
     94         assertNotNull(mIntent);
     95         assertEquals(TEST_ACTION, mIntent.getAction());
     96 
     97         mIntent = new Intent(TEST_ACTION, TEST_URI);
     98         assertNotNull(mIntent);
     99         assertEquals(TEST_ACTION, mIntent.getAction());
    100         assertEquals(TEST_URI, mIntent.getData());
    101 
    102         mIntent = new Intent(mContext, MockActivity.class);
    103         assertNotNull(mIntent);
    104         assertEquals(mComponentName, mIntent.getComponent());
    105 
    106         mIntent = new Intent(TEST_ACTION, TEST_URI, mContext, MockActivity.class);
    107         assertNotNull(mIntent);
    108         assertEquals(TEST_ACTION, mIntent.getAction());
    109         assertEquals(TEST_URI, mIntent.getData());
    110         assertEquals(mComponentName, mIntent.getComponent());
    111     }
    112 
    113     public void testRemoveExtra() {
    114         mIntent = new Intent();
    115         mIntent.putExtra(TEST_EXTRA_NAME, "testvalue");
    116         assertNotNull(mIntent.getStringExtra(TEST_EXTRA_NAME));
    117         mIntent.removeExtra(TEST_EXTRA_NAME);
    118         assertNull(mIntent.getStringExtra(TEST_EXTRA_NAME));
    119     }
    120 
    121     public void testGetCharSequenceExtra() {
    122         final CharSequence expected = "CharSequencetest";
    123         mIntent.putExtra(TEST_EXTRA_NAME, expected);
    124         assertEquals(expected, mIntent.getCharSequenceExtra(TEST_EXTRA_NAME));
    125     }
    126 
    127     public void testReadFromParcel() {
    128         mIntent.setAction(TEST_ACTION);
    129         mIntent.setData(TEST_URI);
    130         mIntent.setType(TEST_TYPE);
    131         mIntent.setFlags(0);
    132         mIntent.setComponent(mComponentName);
    133         mIntent.addCategory(TEST_CATEGORY);
    134         final Parcel parcel = Parcel.obtain();
    135         mIntent.writeToParcel(parcel, 0);
    136         parcel.setDataPosition(0);
    137         final Intent target = new Intent();
    138         target.readFromParcel(parcel);
    139         assertEquals(mIntent.getAction(), target.getAction());
    140         assertEquals(mIntent.getData(), target.getData());
    141         assertEquals(mIntent.getFlags(), target.getFlags());
    142         assertEquals(mIntent.getComponent(), target.getComponent());
    143         assertEquals(mIntent.getCategories(), target.getCategories());
    144         assertEquals(mIntent.toURI(), target.toURI());
    145     }
    146 
    147     public void testGetParcelableArrayListExtra() {
    148         final ArrayList<Intent> expected = new ArrayList<Intent>();
    149         Intent intent = new Intent(TEST_ACTION);
    150         expected.add(intent);
    151 
    152         mIntent.putParcelableArrayListExtra(TEST_EXTRA_NAME, expected);
    153         final ArrayList<Intent> target = mIntent.getParcelableArrayListExtra(TEST_EXTRA_NAME);
    154         assertEquals(expected.size(), target.size());
    155         assertEquals(expected, target);
    156     }
    157 
    158     public void testFilterHashCode() {
    159         mIntent.filterHashCode();
    160     }
    161 
    162     public void testGetCategories() {
    163         mIntent.addCategory(TEST_CATEGORY);
    164         final Set<String> target = mIntent.getCategories();
    165         assertEquals(TEST_CATEGORY, target.toArray()[0]);
    166     }
    167 
    168     public void testGetScheme() {
    169         assertNull(mIntent.getScheme());
    170         mIntent.setData(TEST_URI);
    171         assertEquals(TEST_URI.getScheme(), mIntent.getScheme());
    172     }
    173 
    174     public void testGetIntegerArrayListExtra() {
    175         final ArrayList<Integer> expected = new ArrayList<Integer>();
    176         expected.add(0);
    177         mIntent.putIntegerArrayListExtra(TEST_EXTRA_NAME, expected);
    178         assertEquals(expected, mIntent.getIntegerArrayListExtra(TEST_EXTRA_NAME));
    179     }
    180 
    181     public void testHasExtra() {
    182         mIntent = new Intent();
    183         assertFalse(mIntent.hasExtra(TEST_EXTRA_NAME));
    184         mIntent.putExtra(TEST_EXTRA_NAME, "test");
    185         assertTrue(mIntent.hasExtra(TEST_EXTRA_NAME));
    186     }
    187 
    188     public void testGetIntArrayExtra() {
    189         final int[] expected = { 1, 2, 3 };
    190         assertNull(mIntent.getIntArrayExtra(TEST_EXTRA_NAME));
    191         mIntent.putExtra(TEST_EXTRA_NAME, expected);
    192         assertEquals(expected, mIntent.getIntArrayExtra(TEST_EXTRA_NAME));
    193     }
    194 
    195     public void testSetClassName1() {
    196         final Intent intent = mIntent.setClassName(mContext, MockActivity.class.getName());
    197         assertEquals(mComponentName, mIntent.getComponent());
    198         assertSame(mIntent, intent);
    199     }
    200 
    201     public void testSetClassName2() {
    202         mIntent.setClassName(mContext.getPackageName(), MockActivity.class.getName());
    203         assertEquals(mComponentName, mIntent.getComponent());
    204     }
    205 
    206     public void testGetIntExtra() {
    207         final int expected = 0;
    208         mIntent = new Intent();
    209         assertEquals(expected, mIntent.getIntExtra(TEST_EXTRA_NAME, expected));
    210         mIntent.putExtra(TEST_EXTRA_NAME, 100);
    211         assertEquals(100, mIntent.getIntExtra(TEST_EXTRA_NAME, 1));
    212 
    213     }
    214 
    215     public void testPutIntegerArrayListExtra() {
    216         final ArrayList<Integer> expected = new ArrayList<Integer>();
    217         expected.add(0);
    218         mIntent = new Intent();
    219         mIntent.putIntegerArrayListExtra(TEST_EXTRA_NAME, expected);
    220         assertEquals(expected, mIntent.getIntegerArrayListExtra(TEST_EXTRA_NAME));
    221     }
    222 
    223     public void testAccessType() {
    224         mIntent.setType(TEST_TYPE);
    225         assertEquals(TEST_TYPE, mIntent.getType());
    226     }
    227 
    228     public void testGetBundleExtra() {
    229         final Bundle expected = new Bundle();
    230         expected.putBoolean("testTrue", true);
    231         mIntent.putExtras(expected);
    232         mIntent.putExtra(TEST_EXTRA_NAME, expected);
    233 
    234         assertEquals(expected, mIntent.getBundleExtra(TEST_EXTRA_NAME));
    235     }
    236 
    237     public void testGetCharArrayExtra() {
    238         final char[] expected = { 'a', 'b', 'c' };
    239         mIntent.putExtra(TEST_EXTRA_NAME, expected);
    240         final char[] actual= mIntent.getCharArrayExtra(TEST_EXTRA_NAME);
    241         assertEquals(expected.length, actual.length);
    242         assertEquals(expected[0], actual[0]);
    243         assertEquals(expected[1], actual[1]);
    244         assertEquals(expected[2], actual[2]);
    245     }
    246 
    247     public void testGetDoubleArrayExtra() {
    248         final double[] expected = { 1d, 2d };
    249         mIntent.putExtra(TEST_EXTRA_NAME, expected);
    250         assertEquals(expected, mIntent.getDoubleArrayExtra(TEST_EXTRA_NAME));
    251     }
    252 
    253     public void testPutStringArrayListExtra() {
    254         final ArrayList<String> expected = new ArrayList<String>();
    255         expected.add("testString");
    256         mIntent.putStringArrayListExtra(TEST_EXTRA_NAME, expected);
    257         assertEquals(expected, mIntent.getStringArrayListExtra(TEST_EXTRA_NAME));
    258     }
    259 
    260     public void testResolveType1() {
    261         final ContentResolver contentResolver = mContext.getContentResolver();
    262         assertNull(mIntent.resolveType(mContext));
    263         mIntent.setType(TEST_TYPE);
    264         assertEquals(TEST_TYPE, mIntent.resolveType(mContext));
    265         mIntent.setType(null);
    266         mIntent.setData(TEST_URI);
    267         assertEquals(contentResolver.getType(TEST_URI), mIntent.resolveType(mContext));
    268         mIntent.setData(Uri.parse("test"));
    269         assertNull(mIntent.resolveType(mContext));
    270     }
    271 
    272     public void testResolveType2() {
    273         final ContentResolver contentResolver = mContext.getContentResolver();
    274         assertNull(mIntent.resolveType(contentResolver));
    275         mIntent.setType(TEST_TYPE);
    276         assertEquals(TEST_TYPE, mIntent.resolveType(contentResolver));
    277         mIntent.setType(null);
    278         mIntent.setData(TEST_URI);
    279         assertEquals(contentResolver.getType(TEST_URI), mIntent.resolveType(contentResolver));
    280         mIntent.setData(Uri.parse("test"));
    281         assertNull(mIntent.resolveType(contentResolver));
    282     }
    283 
    284     public void testAccessComponent() {
    285         mIntent.setComponent(mComponentName);
    286         assertEquals(mComponentName, mIntent.getComponent());
    287     }
    288 
    289     public void testGetDataString() {
    290         assertNull(mIntent.getDataString());
    291         mIntent.setData(TEST_URI);
    292         assertEquals(TEST_URI.toString(), mIntent.getDataString());
    293     }
    294 
    295     public void testHasCategory() {
    296         assertFalse(mIntent.hasCategory(TEST_CATEGORY));
    297         mIntent.addCategory(TEST_CATEGORY);
    298         assertTrue(mIntent.hasCategory(TEST_CATEGORY));
    299     }
    300 
    301     public void testGetLongArrayExtra() {
    302         final long[] expected = { 1l, 2l, 3l };
    303         mIntent.putExtra(TEST_EXTRA_NAME, expected);
    304         assertEquals(expected, mIntent.getLongArrayExtra(TEST_EXTRA_NAME));
    305     }
    306 
    307     public void testParseIntent() throws XmlPullParserException, IOException,
    308         NameNotFoundException {
    309         mIntent = null;
    310         XmlResourceParser parser = null;
    311         AttributeSet attrs = null;
    312         ActivityInfo ai = null;
    313         try {
    314             mIntent = Intent.parseIntent(mContext.getResources(), parser, attrs);
    315             fail("should thow exception!");
    316         } catch (NullPointerException e) {
    317             // expected
    318         }
    319 
    320         ai = mContext.getPackageManager().getActivityInfo(mComponentName,
    321                 PackageManager.GET_META_DATA);
    322         parser = ai.loadXmlMetaData(mContext.getPackageManager(), "android.app.alias");
    323 
    324         attrs = Xml.asAttributeSet(parser);
    325         int type;
    326         while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
    327                 && type != XmlPullParser.START_TAG) {
    328         }
    329 
    330         String nodeName = parser.getName();
    331         if (!"alias".equals(nodeName)) {
    332             throw new RuntimeException();
    333         }
    334 
    335         int outerDepth = parser.getDepth();
    336         while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
    337                 && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) {
    338             if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) {
    339                 continue;
    340             }
    341 
    342             nodeName = parser.getName();
    343             if ("intent".equals(nodeName)) {
    344                 mIntent = Intent.parseIntent(mContext.getResources(), parser, attrs);
    345             } else {
    346                 XmlUtils.skipCurrentTag(parser);
    347             }
    348         }
    349 
    350         assertNotNull(mIntent);
    351         assertEquals("android.intent.action.MAIN", mIntent.getAction());
    352         assertEquals(Uri.parse("http://www.google.com/"), mIntent.getData());
    353     }
    354 
    355     public void testSetClass() {
    356         assertNull(mIntent.getComponent());
    357         mIntent.setClass(mContext, MockActivity.class);
    358         assertEquals(mComponentName, mIntent.getComponent());
    359     }
    360 
    361     public void testResolveTypeIfNeeded() {
    362         ContentResolver contentResolver = mContext.getContentResolver();
    363         assertNull(mIntent.resolveTypeIfNeeded(contentResolver));
    364         mIntent.setType(TEST_TYPE);
    365         assertEquals(TEST_TYPE, mIntent.resolveTypeIfNeeded(contentResolver));
    366 
    367         mIntent.setType(null);
    368         mIntent.setComponent(mComponentName);
    369         assertEquals(null, mIntent.resolveTypeIfNeeded(contentResolver));
    370 
    371         mIntent.setType(TEST_TYPE);
    372         mIntent.setComponent(mComponentName);
    373         assertEquals(TEST_TYPE, mIntent.resolveTypeIfNeeded(contentResolver));
    374 
    375         mIntent.setType(null);
    376         mIntent.setData(TEST_URI);
    377         assertNull(mIntent.resolveTypeIfNeeded(contentResolver));
    378     }
    379 
    380     public void testPutExtra1() {
    381         assertFalse(mIntent.getBooleanExtra(TEST_EXTRA_NAME, false));
    382         mIntent.putExtra(TEST_EXTRA_NAME, true);
    383         assertTrue(mIntent.getBooleanExtra(TEST_EXTRA_NAME, false));
    384         mIntent.putExtra(TEST_EXTRA_NAME, false);
    385         assertFalse(mIntent.getBooleanExtra(TEST_EXTRA_NAME, false));
    386     }
    387 
    388     public void testPutExtra2() {
    389         final byte expected = Byte.valueOf("1");
    390         mIntent.putExtra(TEST_EXTRA_NAME, expected);
    391         assertEquals(expected, mIntent.getByteExtra(TEST_EXTRA_NAME, Byte.valueOf("1")));
    392     }
    393 
    394     public void testPutExtra3() {
    395         assertEquals('a', mIntent.getCharExtra(TEST_EXTRA_NAME, 'a'));
    396         final char expected = 'a';
    397         mIntent.putExtra(TEST_EXTRA_NAME, expected);
    398         assertEquals(expected, mIntent.getCharExtra(TEST_EXTRA_NAME, 'a'));
    399     }
    400 
    401     public void testPutExtra4() {
    402         final Short expected = Short.valueOf("2");
    403         assertEquals(Short.valueOf("1").shortValue(), mIntent.getShortExtra(
    404                 TEST_EXTRA_NAME, Short.valueOf("1")));
    405         mIntent.putExtra(TEST_EXTRA_NAME, expected);
    406         assertEquals(expected.shortValue(), mIntent.getShortExtra(TEST_EXTRA_NAME, Short.valueOf("1")));
    407     }
    408 
    409     public void testPutExtra5() {
    410         final int expected = 2;
    411         assertEquals(1, mIntent.getIntExtra(TEST_EXTRA_NAME, 1));
    412         mIntent.putExtra(TEST_EXTRA_NAME, expected);
    413         assertEquals(expected, mIntent.getIntExtra(TEST_EXTRA_NAME, 1));
    414     }
    415 
    416     public void testPutExtra6() {
    417         final long expected = 2l;
    418         assertEquals(1l, mIntent.getLongExtra(TEST_EXTRA_NAME, 1l));
    419         mIntent.putExtra(TEST_EXTRA_NAME, expected);
    420         assertEquals(expected, mIntent.getLongExtra(TEST_EXTRA_NAME, 1l));
    421     }
    422 
    423     public void testPutExtra7() {
    424         final float expected = 2f;
    425         assertEquals(1f, mIntent.getFloatExtra(TEST_EXTRA_NAME, 1f));
    426         mIntent.putExtra(TEST_EXTRA_NAME, expected);
    427         assertEquals(expected, mIntent.getFloatExtra(TEST_EXTRA_NAME, 1f));
    428     }
    429 
    430     public void testPutExtra8() {
    431         final double expected = 2d;
    432         assertEquals(1d, mIntent.getDoubleExtra(TEST_EXTRA_NAME, 1d));
    433         mIntent.putExtra(TEST_EXTRA_NAME, expected);
    434         assertEquals(expected, mIntent.getDoubleExtra(TEST_EXTRA_NAME, 1d));
    435     }
    436 
    437     public void testPutExtra9() {
    438         final String expected = "testString";
    439         assertNull(mIntent.getStringExtra(TEST_EXTRA_NAME));
    440         mIntent.putExtra(TEST_EXTRA_NAME, expected);
    441         assertEquals(expected, mIntent.getStringExtra(TEST_EXTRA_NAME));
    442     }
    443 
    444     public void testPutExtra10() {
    445         final CharSequence expected = "testString";
    446         assertNull(mIntent.getCharSequenceExtra(TEST_EXTRA_NAME));
    447         mIntent.putExtra(TEST_EXTRA_NAME, expected);
    448         assertEquals(expected, mIntent.getCharSequenceExtra(TEST_EXTRA_NAME));
    449     }
    450 
    451     public void testPutExtra11() {
    452         final Intent expected = new Intent(TEST_ACTION);
    453         mIntent.putExtra(TEST_EXTRA_NAME, expected);
    454         assertEquals(expected, mIntent.getParcelableExtra(TEST_EXTRA_NAME));
    455     }
    456 
    457     public void testPutExtra12() {
    458         final Intent[] expected = { new Intent(TEST_ACTION), new Intent(mContext, MockActivity.class) };
    459         mIntent.putExtra(TEST_EXTRA_NAME, expected);
    460         assertEquals(expected, mIntent.getParcelableArrayExtra(TEST_EXTRA_NAME));
    461     }
    462 
    463     public void testPutExtra13() {
    464         final TestSerializable expected = new TestSerializable();
    465         expected.Name = "testName";
    466         mIntent.putExtra(TEST_EXTRA_NAME, expected);
    467         assertEquals(expected, mIntent.getSerializableExtra(TEST_EXTRA_NAME));
    468         TestSerializable target = (TestSerializable) mIntent.getSerializableExtra(TEST_EXTRA_NAME);
    469         assertEquals(expected.Name, target.Name);
    470     }
    471 
    472     public void testPutExtra14() {
    473         final boolean[] expected = { true, true, false };
    474         mIntent.putExtra(TEST_EXTRA_NAME, expected);
    475         assertEquals(expected, mIntent.getBooleanArrayExtra(TEST_EXTRA_NAME));
    476     }
    477 
    478     public void testPutExtra15() {
    479         final byte[] expected = TEST_ACTION.getBytes();
    480         mIntent.putExtra(TEST_EXTRA_NAME, expected);
    481         assertEquals(expected, mIntent.getByteArrayExtra(TEST_EXTRA_NAME));
    482     }
    483 
    484     public void testPutExtra16() {
    485         final short[] expected = { 1, 2, 3 };
    486         mIntent.putExtra(TEST_EXTRA_NAME, expected);
    487         assertEquals(expected, mIntent.getShortArrayExtra(TEST_EXTRA_NAME));
    488     }
    489 
    490     public void testPutExtra17() {
    491         final char[] expected = { '1', '2', '3' };
    492         mIntent.putExtra(TEST_EXTRA_NAME, expected);
    493         assertEquals(expected, mIntent.getCharArrayExtra(TEST_EXTRA_NAME));
    494     }
    495 
    496     public void testPutExtra18() {
    497         final int[] expected = { 1, 2, 3 };
    498         mIntent.putExtra(TEST_EXTRA_NAME, expected);
    499         assertEquals(expected, mIntent.getIntArrayExtra(TEST_EXTRA_NAME));
    500     }
    501 
    502     public void testPutExtra19() {
    503         final long[] expected = { 1l, 2l, 3l };
    504         mIntent.putExtra(TEST_EXTRA_NAME, expected);
    505         assertEquals(expected, mIntent.getLongArrayExtra(TEST_EXTRA_NAME));
    506     }
    507 
    508     public void testPutExtra20() {
    509         final float[] expected = { 1f, 2f, 3f };
    510         mIntent.putExtra(TEST_EXTRA_NAME, expected);
    511         assertEquals(expected, mIntent.getFloatArrayExtra(TEST_EXTRA_NAME));
    512     }
    513 
    514     public void testPutExtra21() {
    515         final double[] expected = { 1d, 2d, 3d };
    516         mIntent.putExtra(TEST_EXTRA_NAME, expected);
    517         assertEquals(expected, mIntent.getDoubleArrayExtra(TEST_EXTRA_NAME));
    518     }
    519 
    520     public void testPutExtra22() {
    521         final String[] expected = { "1d", "2d", "3d" };
    522         mIntent.putExtra(TEST_EXTRA_NAME, expected);
    523         assertEquals(expected, mIntent.getStringArrayExtra(TEST_EXTRA_NAME));
    524     }
    525 
    526     public void testPutExtra23() {
    527         final Bundle expected = new Bundle();
    528         expected.putString("key", "value");
    529         mIntent.putExtra(TEST_EXTRA_NAME, expected);
    530         assertEquals(expected, mIntent.getBundleExtra(TEST_EXTRA_NAME));
    531     }
    532 
    533     @SuppressWarnings("deprecation")
    534     public void testPutExtra24() {
    535         final IBinder expected = ServiceManager.getService("activity");
    536         mIntent.putExtra(TEST_EXTRA_NAME, expected);
    537         assertEquals(expected, mIntent.getIBinderExtra(TEST_EXTRA_NAME));
    538     }
    539 
    540     public void testAddCategory() {
    541         assertFalse(mIntent.hasCategory(TEST_CATEGORY));
    542         mIntent.addCategory(TEST_CATEGORY);
    543         assertTrue(mIntent.hasCategory(TEST_CATEGORY));
    544     }
    545 
    546     public void testPutParcelableArrayListExtra() {
    547         ArrayList<Intent> expected = new ArrayList<Intent>();
    548         mIntent.putExtra(TEST_EXTRA_NAME, expected);
    549         assertEquals(expected, mIntent.getParcelableArrayListExtra(TEST_EXTRA_NAME));
    550     }
    551 
    552     public void testToString() {
    553         assertNotNull(mIntent.toString());
    554     }
    555 
    556     public void testAccessData() {
    557         mIntent.setData(TEST_URI);
    558         assertEquals(TEST_URI, mIntent.getData());
    559     }
    560 
    561     public void testSetExtrasClassLoader() {
    562     }
    563 
    564     public void testGetStringArrayListExtra() {
    565         final ArrayList<String> expected = new ArrayList<String>();
    566         expected.add("testString");
    567         mIntent.putStringArrayListExtra(TEST_EXTRA_NAME, expected);
    568         assertEquals(expected, mIntent.getStringArrayListExtra(TEST_EXTRA_NAME));
    569     }
    570 
    571     public void testGetCharSequenceArrayListExtra() {
    572         final ArrayList<CharSequence> expected = new ArrayList<CharSequence>();
    573         expected.add("testCharSequence");
    574         mIntent.putCharSequenceArrayListExtra(TEST_EXTRA_NAME, expected);
    575         assertEquals(expected, mIntent.getCharSequenceArrayListExtra(TEST_EXTRA_NAME));
    576     }
    577 
    578     public void testResolveActivityInfo() throws NameNotFoundException {
    579         final PackageManager pm = mContext.getPackageManager();
    580         assertEquals(null, mIntent.resolveActivityInfo(pm, 1));
    581         mIntent.setComponent(mComponentName);
    582         ActivityInfo target = null;
    583 
    584         target = pm.getActivityInfo(mComponentName, 1);
    585         assertEquals(target.targetActivity, mIntent.resolveActivityInfo(pm, 1).targetActivity);
    586     }
    587 
    588     public void testGetParcelableExtra() {
    589         final Intent expected = new Intent(TEST_ACTION);
    590         mIntent.putExtra(TEST_EXTRA_NAME, expected);
    591         assertEquals(expected, mIntent.getParcelableExtra(TEST_EXTRA_NAME));
    592     }
    593 
    594     public void testAccessAction() {
    595         mIntent.setAction(TEST_ACTION);
    596         assertEquals(TEST_ACTION, mIntent.getAction());
    597     }
    598 
    599     public void testAddFlags() {
    600         final int flag = 1;
    601         int expected = 0;
    602         mIntent.addFlags(flag);
    603         expected |= flag;
    604         assertEquals(expected, mIntent.getFlags());
    605     }
    606 
    607     public void testDescribeContents() {
    608         final int expected = 0;
    609         assertEquals(expected, mIntent.describeContents());
    610         mIntent.putExtra(TEST_EXTRA_NAME, "test");
    611         assertEquals(mIntent.getExtras().describeContents(), mIntent.describeContents());
    612     }
    613 
    614     public void testGetShortExtra() {
    615 
    616         final Short expected = Short.valueOf("2");
    617         assertEquals(Short.valueOf("1").shortValue(), mIntent.getShortExtra(
    618                 TEST_EXTRA_NAME, Short.valueOf("1")));
    619         mIntent.putExtra(TEST_EXTRA_NAME, expected);
    620         assertEquals(expected.shortValue(), mIntent.getShortExtra(TEST_EXTRA_NAME, Short.valueOf("1")));
    621     }
    622 
    623     public void testClone() {
    624         mIntent.setAction(TEST_ACTION);
    625         mIntent.setClass(mContext, MockActivity.class);
    626         mIntent.setComponent(mComponentName);
    627         mIntent.setDataAndType(TEST_URI, TEST_TYPE);
    628         mIntent.addCategory(TEST_CATEGORY);
    629         final String key = "testkey";
    630         final String excepted = "testValue";
    631         mIntent.putExtra(key, excepted);
    632         Intent actual = (Intent) mIntent.clone();
    633         assertEquals(mComponentName, actual.getComponent());
    634         assertEquals(TEST_ACTION, actual.getAction());
    635         assertEquals(mComponentName, actual.getComponent());
    636         assertEquals(TEST_URI, actual.getData());
    637         assertEquals(TEST_TYPE, actual.getType());
    638         assertEquals(TEST_CATEGORY, (String) (actual.getCategories().toArray()[0]));
    639         assertEquals(excepted, actual.getStringExtra(key));
    640     }
    641 
    642     public void testGetDoubleExtra() {
    643         final double expected = 2d;
    644         assertEquals(1d, mIntent.getDoubleExtra(TEST_EXTRA_NAME, 1d));
    645         mIntent.putExtra(TEST_EXTRA_NAME, expected);
    646         assertEquals(expected, mIntent.getDoubleExtra(TEST_EXTRA_NAME, 1d));
    647     }
    648 
    649     public void testCloneFilter() {
    650         mIntent.setAction(TEST_ACTION);
    651         mIntent.setClass(mContext, MockActivity.class);
    652         mIntent.setComponent(mComponentName);
    653         mIntent.setDataAndType(TEST_URI, TEST_TYPE);
    654         mIntent.addCategory(TEST_CATEGORY);
    655         final String key = "testkey";
    656         mIntent.putExtra(key, "testValue");
    657         Intent actual = mIntent.cloneFilter();
    658         assertEquals(mComponentName, actual.getComponent());
    659         assertEquals(TEST_ACTION, actual.getAction());
    660         assertEquals(mComponentName, actual.getComponent());
    661         assertEquals(TEST_URI, actual.getData());
    662         assertEquals(TEST_TYPE, actual.getType());
    663         assertEquals(TEST_CATEGORY, (String) (actual.getCategories().toArray()[0]));
    664         assertNull(actual.getStringExtra(key));
    665     }
    666 
    667     public void testGetIntentOld() throws URISyntaxException {
    668         String uri = "test";
    669         mIntent = Intent.getIntentOld(uri);
    670         assertEquals(Intent.ACTION_VIEW, mIntent.getAction());
    671 
    672         mIntent = null;
    673         try {
    674             uri = "test#action(test)categories(test)type(mtype)launchFlags(test)extras(test";
    675             mIntent = Intent.getIntentOld(uri);
    676             fail("should throw URISyntaxException.");
    677         } catch (Exception e) {
    678             // expected
    679         }
    680 
    681         final String compnent =
    682                 "component(" + mContext.getPackageName() + "!" + MockActivity.class.getName() + ")";
    683         uri = "testdata#action(test)categories(test!test2)type(mtype)launchFlags(1)" + compnent
    684                 + "extras(Stest=testString!btestbyte=1!"
    685                 + "Btestboolean=true!ctestchar=a!dtestdouble=1d!"
    686                 + "itestint=1!ltestlong=1!stestshort=1!ftestfloat=1f)";
    687         mIntent = Intent.getIntentOld(uri);
    688         assertEquals("test", mIntent.getAction());
    689         assertEquals("testdata", mIntent.getData().toString());
    690         assertEquals(mComponentName, mIntent.getComponent());
    691         assertEquals("test", (String) (mIntent.getCategories().toArray()[0]));
    692         assertEquals("mtype", mIntent.getType());
    693         assertEquals(1, mIntent.getFlags());
    694         assertEquals("testString", mIntent.getStringExtra("test"));
    695         assertTrue(mIntent.getBooleanExtra("testboolean", false));
    696         final byte b = 1;
    697         final byte defaulttByte = 2;
    698         assertEquals(b, mIntent.getByteExtra("testbyte", defaulttByte));
    699         assertEquals('a', mIntent.getCharExtra("testchar", 'b'));
    700         final float testFloat = 1f;
    701         assertEquals(testFloat, mIntent.getFloatExtra("testfloat", 2f));
    702         final double testDouble = 1d;
    703         assertEquals(testDouble, mIntent.getDoubleExtra("testdouble", 2d));
    704 
    705         final long testLong = 1;
    706         assertEquals(testLong, mIntent.getLongExtra("testlong", 2l));
    707 
    708         final short testShort = 1;
    709         final short defaultShort = 2;
    710         assertEquals(testShort, mIntent.getShortExtra("testshort", defaultShort));
    711         assertEquals(1, mIntent.getIntExtra("testint", 2));
    712     }
    713 
    714     public void testGetParcelableArrayExtra() {
    715         final Intent[] expected = { new Intent(TEST_ACTION), new Intent(mContext, MockActivity.class) };
    716         mIntent.putExtra(TEST_EXTRA_NAME, expected);
    717         assertEquals(expected, mIntent.getParcelableArrayExtra(TEST_EXTRA_NAME));
    718     }
    719 
    720     public void testResolveActivityEmpty() {
    721         final Intent emptyIntent = new Intent();
    722 
    723         // Empty intent shouldn't resolve to anything
    724         final ComponentName target = emptyIntent.resolveActivity(mPm);
    725         assertNull(target);
    726     }
    727 
    728     public void testResolveActivitySingleMatch() {
    729         final Intent intent = new Intent("com.android.cts.content.action.TEST_ACTION");
    730         intent.addCategory("com.android.cts.content.category.TEST_CATEGORY");
    731 
    732         // Should only have one activity responding to narrow category
    733         final ComponentName target = intent.resolveActivity(mPm);
    734         assertEquals("com.android.cts.content", target.getPackageName());
    735         assertEquals("android.app.cts.MockActivity", target.getClassName());
    736     }
    737 
    738     public void testResolveActivityShortcutMatch() {
    739         final Intent intent = new Intent("com.android.cts.content.action.TEST_ACTION");
    740         intent.setComponent(
    741                 new ComponentName("com.android.cts.content", "android.app.cts.MockActivity2"));
    742 
    743         // Multiple activities match, but we asked for explicit component
    744         final ComponentName target = intent.resolveActivity(mPm);
    745         assertEquals("com.android.cts.content", target.getPackageName());
    746         assertEquals("android.app.cts.MockActivity2", target.getClassName());
    747     }
    748 
    749     public void testResolveActivityMultipleMatch() {
    750         final Intent intent = new Intent("com.android.cts.content.action.TEST_ACTION");
    751 
    752         // Should have multiple activities, resulting in resolver dialog
    753         final ComponentName target = intent.resolveActivity(mPm);
    754         final String pkgName = target.getPackageName();
    755         assertFalse("com.android.cts.content".equals(pkgName));
    756 
    757         // Whoever they are must be able to set preferred activities
    758         if (!"android".equals(pkgName)) {
    759             if (mPm.checkPermission(android.Manifest.permission.SET_PREFERRED_APPLICATIONS, pkgName)
    760                     != PackageManager.PERMISSION_GRANTED) {
    761                 fail("Resolved target " + target
    762                         + " doesn't have SET_PREFERRED_APPLICATIONS permission");
    763             }
    764         }
    765     }
    766 
    767     public void testGetCharExtra() {
    768         assertEquals('a', mIntent.getCharExtra(TEST_EXTRA_NAME, 'a'));
    769         final char expected = 'b';
    770         mIntent.putExtra(TEST_EXTRA_NAME, expected);
    771         assertEquals(expected, mIntent.getCharExtra(TEST_EXTRA_NAME, 'a'));
    772     }
    773 
    774     public void testGetIntent() throws URISyntaxException {
    775         mIntent = Intent.getIntent("test#");
    776         assertEquals(Intent.ACTION_VIEW, mIntent.getAction());
    777 
    778         try {
    779             String uri = "#Intent;action=android.content.IntentTest_test;"
    780                     + "category=testCategory;type=testtype;launchFlags=0x1;"
    781                     + "component=com.android/.app.MockActivity;K.testExtraName=1;end";
    782             mIntent = Intent.getIntent(uri);
    783             fail("should throw URISyntaxException.");
    784         } catch (Exception e) {
    785             // expected
    786         }
    787         mIntent = new Intent();
    788 
    789         String uri = mIntent.toURI();
    790         Intent target = Intent.getIntent(uri);
    791         assertEquals(Intent.ACTION_VIEW, target.getAction());
    792 
    793         mIntent.setAction(TEST_ACTION);
    794         uri = mIntent.toURI();
    795         target = Intent.getIntent(uri);
    796         assertEquals(TEST_ACTION, target.getAction());
    797 
    798         mIntent.setData(TEST_URI);
    799         uri = mIntent.toURI();
    800         target = Intent.getIntent(uri);
    801         assertEquals(TEST_URI, target.getData());
    802 
    803         mIntent.setComponent(mComponentName);
    804         uri = mIntent.toURI();
    805         target = Intent.getIntent(uri);
    806         assertEquals(mComponentName, target.getComponent());
    807 
    808         mIntent.addCategory(TEST_CATEGORY);
    809         uri = mIntent.toURI();
    810         target = Intent.getIntent(uri);
    811         assertEquals(1, target.getCategories().size());
    812         assertEquals(TEST_CATEGORY, (String) (target.getCategories().toArray()[0]));
    813 
    814         mIntent.setType(TEST_TYPE);
    815         uri = mIntent.toURI();
    816         target = Intent.getIntent(uri);
    817         assertEquals(TEST_TYPE, target.getType());
    818 
    819         mIntent.setFlags(1);
    820         uri = mIntent.toURI();
    821         target = Intent.getIntent(uri);
    822         assertEquals(1, target.getFlags());
    823 
    824         String stringValue = "testString";
    825         mIntent.putExtra(TEST_EXTRA_NAME, stringValue);
    826         uri = mIntent.toURI();
    827         target = Intent.getIntent(uri);
    828         assertEquals(stringValue, target.getStringExtra(TEST_EXTRA_NAME));
    829 
    830         mIntent.putExtra(TEST_EXTRA_NAME, true);
    831         uri = mIntent.toURI();
    832         target = Intent.getIntent(uri);
    833         assertTrue(target.getBooleanExtra(TEST_EXTRA_NAME, false));
    834 
    835         final byte b = 1;
    836         mIntent.putExtra(TEST_EXTRA_NAME, b);
    837 
    838         uri = mIntent.toURI();
    839         target = Intent.getIntent(uri);
    840         final byte defaulttByte = 2;
    841         assertEquals(b, target.getByteExtra(TEST_EXTRA_NAME, defaulttByte));
    842 
    843         final char testChar = 'a';
    844         mIntent.putExtra(TEST_EXTRA_NAME, testChar);
    845         uri = mIntent.toURI();
    846         target = Intent.getIntent(uri);
    847         assertEquals(testChar, target.getCharExtra(TEST_EXTRA_NAME, 'b'));
    848 
    849         final double testDouble = 1;
    850         mIntent.putExtra(TEST_EXTRA_NAME, testDouble);
    851         uri = mIntent.toURI();
    852         target = Intent.getIntent(uri);
    853         assertEquals(testDouble, target.getDoubleExtra(TEST_EXTRA_NAME, 2));
    854 
    855         final int testInt = 1;
    856         mIntent.putExtra(TEST_EXTRA_NAME, testInt);
    857         uri = mIntent.toURI();
    858         target = Intent.getIntent(uri);
    859         assertEquals(testInt, target.getIntExtra(TEST_EXTRA_NAME, 2));
    860 
    861         final long testLong = 1l;
    862         mIntent.putExtra(TEST_EXTRA_NAME, testLong);
    863         uri = mIntent.toURI();
    864         target = Intent.getIntent(uri);
    865         assertEquals(testLong, target.getLongExtra(TEST_EXTRA_NAME, 2l));
    866 
    867         final short testShort = 1;
    868         final short defaultShort = 2;
    869         mIntent.putExtra(TEST_EXTRA_NAME, testShort);
    870         uri = mIntent.toURI();
    871         target = Intent.getIntent(uri);
    872         assertEquals(testShort, target.getShortExtra(TEST_EXTRA_NAME, defaultShort));
    873     }
    874 
    875     public void testToURI() {
    876         mIntent.setFlags(0);
    877         assertEquals("#Intent;end", mIntent.toURI());
    878 
    879         mIntent.setData(TEST_URI);
    880         assertTrue(mIntent.toURI().indexOf(TEST_URI.toString()) != -1);
    881 
    882         mIntent.setAction(TEST_ACTION);
    883         assertTrue(mIntent.toURI().indexOf("action=" + TEST_ACTION) != -1);
    884 
    885         mIntent.addCategory(TEST_CATEGORY);
    886         assertTrue(mIntent.toURI().indexOf("category=") != -1);
    887 
    888         mIntent.setType(TEST_TYPE);
    889 
    890         assertTrue(mIntent.toURI().indexOf("type=" + TEST_TYPE) != -1);
    891 
    892         mIntent.setFlags(1);
    893         assertFalse(mIntent.toURI().indexOf("launchFlags=" + Integer.toHexString(1)) != -1);
    894 
    895         mIntent.setComponent(mComponentName);
    896         assertTrue(mIntent.toURI().indexOf(
    897                 "component=" + mComponentName.flattenToShortString()) != -1);
    898 
    899         final String stringValue = "testString";
    900         mIntent.putExtra(TEST_EXTRA_NAME, stringValue);
    901 
    902         assertTrue(mIntent.toURI().indexOf(getString("S", TEST_EXTRA_NAME, stringValue)) != -1);
    903 
    904         mIntent.putExtra(TEST_EXTRA_NAME, true);
    905 
    906         assertTrue(mIntent.toURI().indexOf(getString("B", TEST_EXTRA_NAME, true)) != -1);
    907 
    908         final byte b = 1;
    909         mIntent.putExtra(TEST_EXTRA_NAME, b);
    910         assertTrue(mIntent.toURI().indexOf(getString("b", TEST_EXTRA_NAME, b)) != -1);
    911 
    912         final Character testChar = 'a';
    913         mIntent.putExtra(TEST_EXTRA_NAME, testChar);
    914 
    915         assertTrue(mIntent.toURI().indexOf(getString("c", TEST_EXTRA_NAME, testChar)) != -1);
    916 
    917         final double testDouble = 1;
    918         mIntent.putExtra(TEST_EXTRA_NAME, testDouble);
    919         assertTrue(mIntent.toURI().indexOf(getString("d", TEST_EXTRA_NAME, testDouble)) != -1);
    920 
    921         final int testInt = 1;
    922         mIntent.putExtra(TEST_EXTRA_NAME, testInt);
    923         assertTrue(mIntent.toURI().indexOf(getString("i", TEST_EXTRA_NAME, testInt)) != -1);
    924 
    925         final long testLong = 1l;
    926         mIntent.putExtra(TEST_EXTRA_NAME, testLong);
    927         assertTrue(mIntent.toURI().indexOf(getString("l", TEST_EXTRA_NAME, testLong)) != -1);
    928         final short testShort = 1;
    929         mIntent.putExtra(TEST_EXTRA_NAME, testShort);
    930         assertTrue(mIntent.toURI().indexOf(getString("s", TEST_EXTRA_NAME, testShort)) != -1);
    931         assertTrue(mIntent.toURI().indexOf("end") != -1);
    932     }
    933 
    934     private String getString(String entryType, String key, Object value) {
    935         StringBuilder uri = new StringBuilder();
    936         uri.append(entryType);
    937         uri.append('.');
    938         uri.append(Uri.encode(key));
    939         uri.append('=');
    940         uri.append(Uri.encode(value.toString()));
    941         return uri.toString();
    942     }
    943 
    944     public void testAccessFlags() {
    945         int expected = 1;
    946         mIntent.setFlags(expected);
    947         assertEquals(expected, mIntent.getFlags());
    948     }
    949 
    950     public void testCreateChooser() {
    951         Intent target = Intent.createChooser(mIntent, null);
    952         assertEquals(Intent.ACTION_CHOOSER, target.getAction());
    953         Intent returnIntent = (Intent) target.getParcelableExtra(Intent.EXTRA_INTENT);
    954         assertEquals(mIntent.toString(), returnIntent.toString());
    955         assertEquals(mIntent.toURI(), returnIntent.toURI());
    956         assertNull(returnIntent.getStringExtra(Intent.EXTRA_INTENT));
    957         final String title = "title String";
    958         target = Intent.createChooser(mIntent, title);
    959         assertEquals(title, target.getStringExtra(Intent.EXTRA_TITLE));
    960     }
    961 
    962     public void testGetFloatArrayExtra() {
    963         final float[] expected = { 1f, 2f, 3f };
    964         mIntent.putExtra(TEST_EXTRA_NAME, expected);
    965         assertEquals(expected, mIntent.getFloatArrayExtra(TEST_EXTRA_NAME));
    966     }
    967 
    968     public void testSetDataAndType() {
    969         mIntent.setDataAndType(TEST_URI, TEST_TYPE);
    970         assertEquals(TEST_URI, mIntent.getData());
    971         assertEquals(TEST_TYPE, mIntent.getType());
    972     }
    973 
    974     public void testSetData() {
    975         mIntent.setData(TEST_URI);
    976         assertEquals(TEST_URI, mIntent.getData());
    977         assertNull(mIntent.getType());
    978 
    979         mIntent.setType(TEST_TYPE);
    980         mIntent.setData(TEST_URI);
    981         assertEquals(TEST_URI, mIntent.getData());
    982         assertNull(mIntent.getType());
    983     }
    984 
    985     public void testSetType() {
    986         mIntent.setType(TEST_TYPE);
    987         assertEquals(TEST_TYPE, mIntent.getType());
    988         assertNull(mIntent.getData());
    989 
    990         mIntent.setData(TEST_URI);
    991         mIntent.setType(TEST_TYPE);
    992         assertEquals(TEST_TYPE, mIntent.getType());
    993         assertNull(mIntent.getData());
    994     }
    995 
    996     public void testGetStringExtra() {
    997         final String expected = "testString";
    998         assertNull(mIntent.getStringExtra(TEST_EXTRA_NAME));
    999         mIntent.putExtra(TEST_EXTRA_NAME, expected);
   1000         assertEquals(expected, mIntent.getStringExtra(TEST_EXTRA_NAME));
   1001     }
   1002 
   1003     /**
   1004      * Test that fillIn has no effect when no fields are set.
   1005      */
   1006     public void testFillIn_blank() {
   1007         Intent sourceIntent = new Intent();
   1008         Intent destIntent = new Intent();
   1009         assertEquals(0, destIntent.fillIn(sourceIntent, Intent.FILL_IN_ACTION));
   1010         assertEquals(0, destIntent.fillIn(sourceIntent, 0));
   1011         assertNull(destIntent.getAction());
   1012     }
   1013 
   1014     /**
   1015      * Test that fillIn copies the action field.
   1016      */
   1017     public void testFillIn_action() {
   1018         Intent sourceIntent = new Intent();
   1019         Intent destIntent = new Intent();
   1020         // test action copied when null
   1021         sourceIntent.setAction(TEST_ACTION);
   1022         assertEquals(Intent.FILL_IN_ACTION, destIntent.fillIn(sourceIntent, 0));
   1023         assertEquals(TEST_ACTION, destIntent.getAction());
   1024     }
   1025 
   1026     /**
   1027      * Test that fillIn does not copy action when its already set in target Intent.
   1028      */
   1029     public void testFillIn_actionSet() {
   1030         Intent sourceIntent = new Intent();
   1031         Intent destIntent = new Intent();
   1032         final String newAction = "foo";
   1033         sourceIntent = new Intent();
   1034         sourceIntent.setAction(newAction);
   1035         destIntent.setAction(TEST_ACTION);
   1036 
   1037         assertEquals(0, destIntent.fillIn(sourceIntent, 0));
   1038         assertEquals(TEST_ACTION, destIntent.getAction());
   1039     }
   1040 
   1041     /**
   1042      * Test that fillIn copies action when {@link Intent#FILL_IN_ACTION} flag is set.
   1043      */
   1044     public void testFillIn_actionOverride() {
   1045         Intent sourceIntent = new Intent();
   1046         Intent destIntent = new Intent();
   1047         final String newAction = "foo";
   1048         sourceIntent = new Intent();
   1049         sourceIntent.setAction(newAction);
   1050         destIntent.setAction(TEST_ACTION);
   1051 
   1052         assertEquals(Intent.FILL_IN_ACTION, destIntent.fillIn(sourceIntent, Intent.FILL_IN_ACTION));
   1053         assertEquals(newAction, destIntent.getAction());
   1054     }
   1055 
   1056     /**
   1057      * Test that fillIn copies data.
   1058      */
   1059     public void testFillIn_data() {
   1060         Intent sourceIntent = new Intent();
   1061         Intent destIntent = new Intent();
   1062         sourceIntent.setData(TEST_URI);
   1063         assertEquals(Intent.FILL_IN_DATA, destIntent.fillIn(sourceIntent, 0));
   1064         assertEquals(TEST_URI, destIntent.getData());
   1065     }
   1066 
   1067     /**
   1068      * Test that fillIn does not copy data when already its already set in target Intent.
   1069      */
   1070     public void testFillIn_dataSet() {
   1071         Intent sourceIntent = new Intent();
   1072         Intent destIntent = new Intent();
   1073         sourceIntent.setData(TEST_URI);
   1074         destIntent.setData(ANOTHER_TEST_URI);
   1075         assertEquals(0, destIntent.fillIn(sourceIntent, 0));
   1076         assertEquals(ANOTHER_TEST_URI, destIntent.getData());
   1077     }
   1078 
   1079     /**
   1080      * Test that fillIn overrides data when {@link Intent#FILL_IN_DATA} flag is set.
   1081      */
   1082     public void testFillIn_dataOverride() {
   1083         Intent sourceIntent = new Intent();
   1084         Intent destIntent = new Intent();
   1085         sourceIntent.setData(TEST_URI);
   1086         destIntent.setData(ANOTHER_TEST_URI);
   1087         assertEquals(Intent.FILL_IN_DATA, destIntent.fillIn(sourceIntent, Intent.FILL_IN_DATA));
   1088         assertEquals(TEST_URI, destIntent.getData());
   1089     }
   1090 
   1091     /**
   1092      * Test that fillIn copies data type.
   1093      */
   1094     public void testFillIn_dataType() {
   1095         Intent sourceIntent = new Intent();
   1096         Intent destIntent = new Intent();
   1097         sourceIntent.setType(TEST_TYPE);
   1098         assertEquals(Intent.FILL_IN_DATA, destIntent.fillIn(sourceIntent, 0));
   1099         assertEquals(TEST_TYPE, destIntent.getType());
   1100     }
   1101 
   1102     /**
   1103      * Test that fillIn does not copy data type when already its already set in target Intent.
   1104      */
   1105     public void testFillIn_dataTypeSet() {
   1106         Intent sourceIntent = new Intent();
   1107         Intent destIntent = new Intent();
   1108         sourceIntent.setType(TEST_TYPE);
   1109         destIntent.setType(ANOTHER_TEST_TYPE);
   1110         assertEquals(0, destIntent.fillIn(sourceIntent, 0));
   1111         assertEquals(ANOTHER_TEST_TYPE, destIntent.getType());
   1112     }
   1113 
   1114     /**
   1115      * Test that fillIn overrides data type when {@link Intent#FILL_IN_DATA} flag is set.
   1116      */
   1117     public void testFillIn_dataTypeOverride() {
   1118         Intent sourceIntent = new Intent();
   1119         Intent destIntent = new Intent();
   1120         sourceIntent.setType(TEST_TYPE);
   1121         destIntent.setType(ANOTHER_TEST_TYPE);
   1122         assertEquals(Intent.FILL_IN_DATA, destIntent.fillIn(sourceIntent, Intent.FILL_IN_DATA));
   1123         assertEquals(TEST_TYPE, destIntent.getType());
   1124     }
   1125 
   1126     /**
   1127      * Test component is not copied by fillIn method when {@link Intent#FILL_IN_COMPONENT} flag is
   1128      * not set.
   1129      */
   1130     public void testFillIn_componentNoCopy() {
   1131         Intent sourceIntent = new Intent();
   1132         Intent destIntent = new Intent();
   1133         sourceIntent.setComponent(mComponentName);
   1134         assertEquals(0, destIntent.fillIn(sourceIntent, 0));
   1135         assertEquals(null, destIntent.getComponent());
   1136     }
   1137 
   1138     /**
   1139      * Test that fillIn copies component when {@link Intent#FILL_IN_COMPONENT} flag is set.
   1140      */
   1141     public void testFillIn_componentOverride() {
   1142         Intent sourceIntent = new Intent();
   1143         Intent destIntent = new Intent();
   1144         sourceIntent.setComponent(mComponentName);
   1145         destIntent.setComponent(mAnotherComponentName);
   1146         assertEquals(Intent.FILL_IN_COMPONENT, destIntent.fillIn(sourceIntent,
   1147                 Intent.FILL_IN_COMPONENT));
   1148         assertEquals(mComponentName, destIntent.getComponent());
   1149     }
   1150 
   1151     /**
   1152      * Test that fillIn copies categories.
   1153      */
   1154     public void testFillIn_category() {
   1155         Intent sourceIntent = new Intent();
   1156         Intent destIntent = new Intent();
   1157         // add two categories to ensure all categories are copied
   1158         sourceIntent.addCategory(TEST_CATEGORY);
   1159         sourceIntent.addCategory(ANOTHER_TEST_CATEGORY);
   1160         assertEquals(Intent.FILL_IN_CATEGORIES, destIntent.fillIn(sourceIntent, 0));
   1161         assertEquals(2, destIntent.getCategories().size());
   1162         assertTrue(destIntent.getCategories().contains(TEST_CATEGORY));
   1163         assertTrue(destIntent.getCategories().contains(ANOTHER_TEST_CATEGORY));
   1164     }
   1165 
   1166     /**
   1167      * Test fillIn does not copy categories by default when already set.
   1168      */
   1169     public void testFillIn_categorySet() {
   1170         Intent sourceIntent = new Intent();
   1171         Intent destIntent = new Intent();
   1172         sourceIntent = new Intent();
   1173         sourceIntent.addCategory(TEST_CATEGORY);
   1174         destIntent.addCategory(ANOTHER_TEST_CATEGORY);
   1175 
   1176         assertEquals(0, destIntent.fillIn(sourceIntent, 0));
   1177         assertEquals(1, destIntent.getCategories().size());
   1178         assertTrue(destIntent.getCategories().contains(ANOTHER_TEST_CATEGORY));
   1179         assertFalse(destIntent.getCategories().contains(TEST_CATEGORY));
   1180     }
   1181 
   1182     /**
   1183      * Test that fillIn adds categories when {@link Intent#FILL_IN_CATEGORIES} flag is set.
   1184      */
   1185     public void testFillIn_categoryOverride() {
   1186         Intent sourceIntent = new Intent();
   1187         Intent destIntent = new Intent();
   1188         sourceIntent = new Intent();
   1189         sourceIntent.addCategory(TEST_CATEGORY);
   1190         destIntent.addCategory(ANOTHER_TEST_CATEGORY);
   1191 
   1192         assertEquals(Intent.FILL_IN_CATEGORIES, destIntent.fillIn(sourceIntent, Intent.FILL_IN_CATEGORIES));
   1193         assertEquals(1, destIntent.getCategories().size());
   1194         assertFalse(destIntent.getCategories().contains(ANOTHER_TEST_CATEGORY));
   1195         assertTrue(destIntent.getCategories().contains(TEST_CATEGORY));
   1196     }
   1197 
   1198     /**
   1199      * Test fillIn copies package.
   1200      */
   1201     public void testFillIn_package() {
   1202         Intent sourceIntent = new Intent();
   1203         Intent destIntent = new Intent();
   1204         sourceIntent.setPackage(TEST_PACKAGE);
   1205         assertEquals(Intent.FILL_IN_PACKAGE, destIntent.fillIn(sourceIntent, 0));
   1206         assertEquals(TEST_PACKAGE, destIntent.getPackage());
   1207     }
   1208 
   1209     /**
   1210      * Test fillIn does not copy package by default when already set.
   1211      */
   1212     public void testFillIn_packageSet() {
   1213         Intent sourceIntent = new Intent();
   1214         Intent destIntent = new Intent();
   1215         sourceIntent.setPackage(TEST_PACKAGE);
   1216         destIntent.setPackage(ANOTHER_TEST_PACKAGE);
   1217         assertEquals(0, destIntent.fillIn(sourceIntent, 0));
   1218         assertEquals(ANOTHER_TEST_PACKAGE, destIntent.getPackage());
   1219     }
   1220 
   1221     /**
   1222      * Test that fillIn overrides package when {@link Intent#FILL_IN_PACKAGE} flag is set.
   1223      */
   1224     public void testFillIn_packageOverride() {
   1225         Intent sourceIntent = new Intent();
   1226         Intent destIntent = new Intent();
   1227         sourceIntent.setPackage(TEST_PACKAGE);
   1228         destIntent.setPackage(ANOTHER_TEST_PACKAGE);
   1229         assertEquals(Intent.FILL_IN_PACKAGE, destIntent.fillIn(sourceIntent, Intent.FILL_IN_PACKAGE));
   1230         assertEquals(TEST_PACKAGE, destIntent.getPackage());
   1231     }
   1232 
   1233     /**
   1234      * Test that fillIn copies extras.
   1235      */
   1236     public void testFillIn_extras() {
   1237         Intent sourceIntent = new Intent();
   1238         Intent destIntent = new Intent();
   1239         final Bundle bundle = new Bundle();
   1240         bundle.putBoolean(TEST_EXTRA_NAME, true);
   1241         sourceIntent.putExtras(bundle);
   1242         assertEquals(0, destIntent.fillIn(sourceIntent, 0));
   1243         assertTrue(destIntent.getExtras().getBoolean(TEST_EXTRA_NAME));
   1244     }
   1245 
   1246     public void testGetExtras() {
   1247         assertNull(mIntent.getExtras());
   1248         final String expected = "testString";
   1249         mIntent.putExtra(TEST_EXTRA_NAME, expected);
   1250         assertNotNull(mIntent.getExtras());
   1251         assertEquals(expected, mIntent.getExtras().getString(TEST_EXTRA_NAME));
   1252     }
   1253 
   1254     public void testGetBooleanExtra() {
   1255         assertFalse(mIntent.getBooleanExtra(TEST_EXTRA_NAME, false));
   1256         mIntent.putExtra(TEST_EXTRA_NAME, true);
   1257         assertTrue(mIntent.getBooleanExtra(TEST_EXTRA_NAME, false));
   1258         mIntent.putExtra(TEST_EXTRA_NAME, false);
   1259         assertFalse(mIntent.getBooleanExtra(TEST_EXTRA_NAME, false));
   1260     }
   1261 
   1262     public void testGetFloatExtra() {
   1263         float expected = 2f;
   1264         assertEquals(1f, mIntent.getFloatExtra(TEST_EXTRA_NAME, 1f));
   1265         mIntent.putExtra(TEST_EXTRA_NAME, expected);
   1266         assertEquals(expected, mIntent.getFloatExtra(TEST_EXTRA_NAME, 1f));
   1267     }
   1268 
   1269     public void testGetShortArrayExtra() {
   1270         final short[] expected = { 1, 2, 3 };
   1271         mIntent.putExtra(TEST_EXTRA_NAME, expected);
   1272         assertEquals(expected, mIntent.getShortArrayExtra(TEST_EXTRA_NAME));
   1273     }
   1274 
   1275     public void testGetStringArrayExtra() {
   1276         final String[] expected = { "1d", "2d", "3d" };
   1277         mIntent.putExtra(TEST_EXTRA_NAME, expected);
   1278         assertEquals(expected, mIntent.getStringArrayExtra(TEST_EXTRA_NAME));
   1279     }
   1280 
   1281     public void testGetCharSequenceArrayExtra() {
   1282         final String[] expected = { "1d", "2d", "3d" };
   1283         mIntent.putExtra(TEST_EXTRA_NAME, expected);
   1284         assertEquals(expected, mIntent.getCharSequenceArrayExtra(TEST_EXTRA_NAME));
   1285     }
   1286 
   1287     public void testGetByteArrayExtra() {
   1288         final byte[] expected = TEST_ACTION.getBytes();
   1289         mIntent.putExtra(TEST_EXTRA_NAME, expected);
   1290         assertEquals(expected, mIntent.getByteArrayExtra(TEST_EXTRA_NAME));
   1291     }
   1292 
   1293     public void testHasFileDescriptors() {
   1294         Bundle bundle = mIntent.getExtras();
   1295         assertEquals(bundle != null && bundle.hasFileDescriptors(), mIntent.hasFileDescriptors());
   1296         final byte[] expected = TEST_ACTION.getBytes();
   1297         mIntent.putExtra(TEST_EXTRA_NAME, expected);
   1298         bundle = mIntent.getExtras();
   1299         assertEquals(bundle != null && bundle.hasFileDescriptors(), mIntent.hasFileDescriptors());
   1300     }
   1301 
   1302     public void testGetBooleanArrayExtra() {
   1303         final boolean[] expected = { true, true, false };
   1304         mIntent.putExtra(TEST_EXTRA_NAME, expected);
   1305         assertEquals(expected, mIntent.getBooleanArrayExtra(TEST_EXTRA_NAME));
   1306     }
   1307 
   1308     public void testGetLongExtra() {
   1309         final long expected = 2l;
   1310         assertEquals(1l, mIntent.getLongExtra(TEST_EXTRA_NAME, 1l));
   1311         mIntent.putExtra(TEST_EXTRA_NAME, expected);
   1312         assertEquals(expected, mIntent.getLongExtra(TEST_EXTRA_NAME, 1l));
   1313     }
   1314 
   1315     public void testRemoveCategory() {
   1316         assertNull(mIntent.getCategories());
   1317         mIntent.addCategory(TEST_CATEGORY);
   1318         assertNotNull(mIntent.getCategories());
   1319         assertEquals(1, mIntent.getCategories().size());
   1320         assertEquals(TEST_CATEGORY, (String) (mIntent.getCategories().toArray()[0]));
   1321         mIntent.removeCategory(TEST_CATEGORY);
   1322         assertFalse(mIntent.hasCategory(TEST_CATEGORY));
   1323     }
   1324 
   1325     public void testFilterEquals() {
   1326         assertFalse(mIntent.filterEquals(null));
   1327 
   1328         Intent target = new Intent();
   1329         assertTrue(mIntent.filterEquals(target));
   1330 
   1331         target.setAction(TEST_ACTION);
   1332         assertFalse(mIntent.filterEquals(target));
   1333         mIntent.setAction(TEST_ACTION + "test");
   1334         assertFalse(mIntent.filterEquals(target));
   1335         mIntent.setAction(null);
   1336         assertFalse(mIntent.filterEquals(target));
   1337         mIntent.setAction(TEST_ACTION);
   1338         assertTrue(mIntent.filterEquals(target));
   1339 
   1340         target.setData(TEST_URI);
   1341         assertFalse(mIntent.filterEquals(target));
   1342         mIntent.setData(Uri.parse("myURI"));
   1343         assertFalse(mIntent.filterEquals(target));
   1344         mIntent.setData(null);
   1345         assertFalse(mIntent.filterEquals(target));
   1346         mIntent.setData(TEST_URI);
   1347         assertTrue(mIntent.filterEquals(target));
   1348 
   1349         target.setType(TEST_TYPE);
   1350         assertFalse(mIntent.filterEquals(target));
   1351         mIntent.setType(TEST_TYPE + "test");
   1352         assertFalse(mIntent.filterEquals(target));
   1353         mIntent.setType(null);
   1354         assertFalse(mIntent.filterEquals(target));
   1355         mIntent.setType(TEST_TYPE);
   1356         assertTrue(mIntent.filterEquals(target));
   1357 
   1358         target.setComponent(mComponentName);
   1359         assertFalse(mIntent.filterEquals(target));
   1360         mIntent.setComponent(new ComponentName(mContext, MockReceiver.class));
   1361         assertFalse(mIntent.filterEquals(target));
   1362         mIntent.setComponent(null);
   1363         assertFalse(mIntent.filterEquals(target));
   1364         mIntent.setComponent(mComponentName);
   1365         assertTrue(mIntent.filterEquals(target));
   1366 
   1367         target.addCategory(TEST_CATEGORY);
   1368         assertFalse(mIntent.filterEquals(target));
   1369         mIntent.addCategory(TEST_CATEGORY + "test");
   1370         assertFalse(mIntent.filterEquals(target));
   1371         mIntent.addCategory(TEST_CATEGORY);
   1372         assertFalse(mIntent.filterEquals(target));
   1373     }
   1374 
   1375     public void testPutExtras1() {
   1376         final Intent intent = new Intent();
   1377         mIntent.putExtras(intent);
   1378         assertEquals(intent.getExtras(), mIntent.getExtras());
   1379         intent.putExtra("test2", true);
   1380         mIntent.putExtras(intent);
   1381         assertEquals(intent.getExtras().toString(), mIntent.getExtras().toString());
   1382     }
   1383 
   1384     public void testPutExtras2() {
   1385         final Bundle bundle = new Bundle();
   1386         mIntent.putExtras(bundle);
   1387         assertEquals(0, mIntent.getExtras().size());
   1388         String expected = "testString";
   1389         bundle.putString(TEST_EXTRA_NAME, expected);
   1390         mIntent.putExtras(bundle);
   1391         assertEquals(1, mIntent.getExtras().size());
   1392         assertEquals(expected, mIntent.getExtras().getString(TEST_EXTRA_NAME));
   1393         mIntent.putExtra(TEST_EXTRA_NAME, bundle);
   1394         assertEquals(bundle, mIntent.getBundleExtra(TEST_EXTRA_NAME));
   1395     }
   1396 
   1397     public void testGetByteExtra() {
   1398         final byte expected = Byte.valueOf("1");
   1399         mIntent.putExtra(TEST_EXTRA_NAME, expected);
   1400         assertEquals(expected, mIntent.getByteExtra(TEST_EXTRA_NAME, Byte.valueOf("1")));
   1401     }
   1402 
   1403     public void testGetSerializableExtra() {
   1404         TestSerializable expected = new TestSerializable();
   1405         expected.Name = "testName";
   1406         mIntent.putExtra(TEST_EXTRA_NAME, expected);
   1407         assertEquals(expected, mIntent.getSerializableExtra(TEST_EXTRA_NAME));
   1408         TestSerializable target = (TestSerializable) mIntent.getSerializableExtra(TEST_EXTRA_NAME);
   1409         assertEquals(expected.Name, target.Name);
   1410     }
   1411 
   1412     public void testReplaceExtras() {
   1413         Bundle extras = new Bundle();
   1414         String bundleKey = "testKey";
   1415         String bundleValue = "testValue";
   1416         extras.putString(bundleKey, bundleValue);
   1417 
   1418         Intent intent = mIntent.replaceExtras(extras);
   1419         assertSame(mIntent, intent);
   1420         String actualValue = intent.getExtras().getString(bundleKey);
   1421         assertEquals(bundleValue, actualValue);
   1422 
   1423         Intent src = new Intent();
   1424         String intentName = "srcName";
   1425         String intentValue = "srcValue";
   1426         src.putExtra(intentName, intentValue);
   1427 
   1428         intent = mIntent.replaceExtras(src);
   1429         assertSame(mIntent, intent);
   1430         actualValue = intent.getExtras().getString(intentName);
   1431         assertEquals(intentValue, actualValue);
   1432     }
   1433 
   1434     public void testNormalizeMimeType() {
   1435         assertEquals(null, Intent.normalizeMimeType(null));
   1436         assertEquals("text/plain", Intent.normalizeMimeType("text/plain; charset=UTF-8"));
   1437         assertEquals("text/x-vcard", Intent.normalizeMimeType("text/x-vCard"));
   1438         assertEquals("foo/bar", Intent.normalizeMimeType("   foo/bar    "));
   1439     }
   1440 
   1441     private static class TestSerializable implements Serializable {
   1442         static final long serialVersionUID = 1l;
   1443         public String Name;
   1444     }
   1445 }
   1446