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.XmlUtils; 21 22 import org.xmlpull.v1.XmlPullParser; 23 import org.xmlpull.v1.XmlPullParserException; 24 25 import android.content.ComponentName; 26 import android.content.ContentResolver; 27 import android.content.Context; 28 import android.content.Intent; 29 import android.content.pm.ActivityInfo; 30 import android.content.pm.PackageManager; 31 import android.content.pm.PackageManager.NameNotFoundException; 32 import android.content.res.XmlResourceParser; 33 import android.net.Uri; 34 import android.os.Bundle; 35 import android.os.IBinder; 36 import android.os.Parcel; 37 import android.os.ServiceManager; 38 import android.provider.Contacts.People; 39 import android.test.AndroidTestCase; 40 import android.util.AttributeSet; 41 import android.util.Log; 42 import android.util.Xml; 43 44 import java.io.IOException; 45 import java.io.Serializable; 46 import java.net.URISyntaxException; 47 import java.util.ArrayList; 48 import java.util.Objects; 49 import java.util.Set; 50 51 public class IntentTest extends AndroidTestCase { 52 53 private Intent mIntent; 54 private static final String TEST_ACTION = "android.content.IntentTest_test"; 55 private static final Uri TEST_URI = People.CONTENT_URI; 56 private static final Uri ANOTHER_TEST_URI = People.CONTENT_FILTER_URI; 57 private static final String TEST_EXTRA_NAME = "testExtraName"; 58 private Context mContext; 59 private PackageManager mPm; 60 private ComponentName mComponentName; 61 private ComponentName mAnotherComponentName; 62 private static final String TEST_TYPE = "testType"; 63 private static final String ANOTHER_TEST_TYPE = "anotherTestType"; 64 private static final String TEST_CATEGORY = "testCategory"; 65 private static final String ANOTHER_TEST_CATEGORY = "testAnotherCategory"; 66 private static final String TEST_PACKAGE = "android.content.cts"; 67 private static final String ANOTHER_TEST_PACKAGE = "android.database.cts"; 68 69 @Override 70 protected void setUp() throws Exception { 71 super.setUp(); 72 mIntent = new Intent(); 73 mContext = getContext(); 74 mPm = mContext.getPackageManager(); 75 mComponentName = new ComponentName(mContext, MockActivity.class); 76 mAnotherComponentName = new ComponentName(mContext, "tmp"); 77 } 78 79 public void testConstructor() { 80 mIntent = new Intent(); 81 assertNotNull(mIntent); 82 83 Intent intent = new Intent(); 84 intent.setAction(TEST_ACTION); 85 86 mIntent = new Intent(intent); 87 assertNotNull(mIntent); 88 assertEquals(TEST_ACTION, mIntent.getAction()); 89 90 mIntent = new Intent(TEST_ACTION); 91 assertNotNull(mIntent); 92 assertEquals(TEST_ACTION, mIntent.getAction()); 93 94 mIntent = new Intent(TEST_ACTION, TEST_URI); 95 assertNotNull(mIntent); 96 assertEquals(TEST_ACTION, mIntent.getAction()); 97 assertEquals(TEST_URI, mIntent.getData()); 98 99 mIntent = new Intent(mContext, MockActivity.class); 100 assertNotNull(mIntent); 101 assertEquals(mComponentName, mIntent.getComponent()); 102 103 mIntent = new Intent(TEST_ACTION, TEST_URI, mContext, MockActivity.class); 104 assertNotNull(mIntent); 105 assertEquals(TEST_ACTION, mIntent.getAction()); 106 assertEquals(TEST_URI, mIntent.getData()); 107 assertEquals(mComponentName, mIntent.getComponent()); 108 } 109 110 public void testRemoveExtra() { 111 mIntent = new Intent(); 112 mIntent.putExtra(TEST_EXTRA_NAME, "testvalue"); 113 assertNotNull(mIntent.getStringExtra(TEST_EXTRA_NAME)); 114 mIntent.removeExtra(TEST_EXTRA_NAME); 115 assertNull(mIntent.getStringExtra(TEST_EXTRA_NAME)); 116 } 117 118 public void testGetCharSequenceExtra() { 119 final CharSequence expected = "CharSequencetest"; 120 mIntent.putExtra(TEST_EXTRA_NAME, expected); 121 assertEquals(expected, mIntent.getCharSequenceExtra(TEST_EXTRA_NAME)); 122 } 123 124 public void testReadFromParcel() { 125 mIntent.setAction(TEST_ACTION); 126 mIntent.setData(TEST_URI); 127 mIntent.setType(TEST_TYPE); 128 mIntent.setFlags(0); 129 mIntent.setComponent(mComponentName); 130 mIntent.addCategory(TEST_CATEGORY); 131 final Parcel parcel = Parcel.obtain(); 132 mIntent.writeToParcel(parcel, 0); 133 parcel.setDataPosition(0); 134 final Intent target = new Intent(); 135 target.readFromParcel(parcel); 136 assertEquals(mIntent.getAction(), target.getAction()); 137 assertEquals(mIntent.getData(), target.getData()); 138 assertEquals(mIntent.getFlags(), target.getFlags()); 139 assertEquals(mIntent.getComponent(), target.getComponent()); 140 assertEquals(mIntent.getCategories(), target.getCategories()); 141 assertEquals(mIntent.toURI(), target.toURI()); 142 } 143 144 public void testGetParcelableArrayListExtra() { 145 final ArrayList<Intent> expected = new ArrayList<Intent>(); 146 Intent intent = new Intent(TEST_ACTION); 147 expected.add(intent); 148 149 mIntent.putParcelableArrayListExtra(TEST_EXTRA_NAME, expected); 150 final ArrayList<Intent> target = mIntent.getParcelableArrayListExtra(TEST_EXTRA_NAME); 151 assertEquals(expected.size(), target.size()); 152 assertEquals(expected, target); 153 } 154 155 public void testFilterHashCode() { 156 mIntent.filterHashCode(); 157 } 158 159 public void testGetCategories() { 160 mIntent.addCategory(TEST_CATEGORY); 161 final Set<String> target = mIntent.getCategories(); 162 assertEquals(TEST_CATEGORY, target.toArray()[0]); 163 } 164 165 public void testGetScheme() { 166 assertNull(mIntent.getScheme()); 167 mIntent.setData(TEST_URI); 168 assertEquals(TEST_URI.getScheme(), mIntent.getScheme()); 169 } 170 171 public void testGetIntegerArrayListExtra() { 172 final ArrayList<Integer> expected = new ArrayList<Integer>(); 173 expected.add(0); 174 mIntent.putIntegerArrayListExtra(TEST_EXTRA_NAME, expected); 175 assertEquals(expected, mIntent.getIntegerArrayListExtra(TEST_EXTRA_NAME)); 176 } 177 178 public void testHasExtra() { 179 mIntent = new Intent(); 180 assertFalse(mIntent.hasExtra(TEST_EXTRA_NAME)); 181 mIntent.putExtra(TEST_EXTRA_NAME, "test"); 182 assertTrue(mIntent.hasExtra(TEST_EXTRA_NAME)); 183 } 184 185 public void testGetIntArrayExtra() { 186 final int[] expected = { 1, 2, 3 }; 187 assertNull(mIntent.getIntArrayExtra(TEST_EXTRA_NAME)); 188 mIntent.putExtra(TEST_EXTRA_NAME, expected); 189 assertEquals(expected, mIntent.getIntArrayExtra(TEST_EXTRA_NAME)); 190 } 191 192 public void testSetClassName1() { 193 final Intent intent = mIntent.setClassName(mContext, MockActivity.class.getName()); 194 assertEquals(mComponentName, mIntent.getComponent()); 195 assertSame(mIntent, intent); 196 } 197 198 public void testSetClassName2() { 199 mIntent.setClassName(mContext.getPackageName(), MockActivity.class.getName()); 200 assertEquals(mComponentName, mIntent.getComponent()); 201 } 202 203 public void testGetIntExtra() { 204 final int expected = 0; 205 mIntent = new Intent(); 206 assertEquals(expected, mIntent.getIntExtra(TEST_EXTRA_NAME, expected)); 207 mIntent.putExtra(TEST_EXTRA_NAME, 100); 208 assertEquals(100, mIntent.getIntExtra(TEST_EXTRA_NAME, 1)); 209 210 } 211 212 public void testPutIntegerArrayListExtra() { 213 final ArrayList<Integer> expected = new ArrayList<Integer>(); 214 expected.add(0); 215 mIntent = new Intent(); 216 mIntent.putIntegerArrayListExtra(TEST_EXTRA_NAME, expected); 217 assertEquals(expected, mIntent.getIntegerArrayListExtra(TEST_EXTRA_NAME)); 218 } 219 220 public void testAccessType() { 221 mIntent.setType(TEST_TYPE); 222 assertEquals(TEST_TYPE, mIntent.getType()); 223 } 224 225 public void testGetBundleExtra() { 226 final Bundle expected = new Bundle(); 227 expected.putBoolean("testTrue", true); 228 mIntent.putExtras(expected); 229 mIntent.putExtra(TEST_EXTRA_NAME, expected); 230 231 assertEquals(expected, mIntent.getBundleExtra(TEST_EXTRA_NAME)); 232 } 233 234 public void testGetCharArrayExtra() { 235 final char[] expected = { 'a', 'b', 'c' }; 236 mIntent.putExtra(TEST_EXTRA_NAME, expected); 237 final char[] actual= mIntent.getCharArrayExtra(TEST_EXTRA_NAME); 238 assertEquals(expected.length, actual.length); 239 assertEquals(expected[0], actual[0]); 240 assertEquals(expected[1], actual[1]); 241 assertEquals(expected[2], actual[2]); 242 } 243 244 public void testGetDoubleArrayExtra() { 245 final double[] expected = { 1d, 2d }; 246 mIntent.putExtra(TEST_EXTRA_NAME, expected); 247 assertEquals(expected, mIntent.getDoubleArrayExtra(TEST_EXTRA_NAME)); 248 } 249 250 public void testPutStringArrayListExtra() { 251 final ArrayList<String> expected = new ArrayList<String>(); 252 expected.add("testString"); 253 mIntent.putStringArrayListExtra(TEST_EXTRA_NAME, expected); 254 assertEquals(expected, mIntent.getStringArrayListExtra(TEST_EXTRA_NAME)); 255 } 256 257 public void testResolveType1() { 258 final ContentResolver contentResolver = mContext.getContentResolver(); 259 assertNull(mIntent.resolveType(mContext)); 260 mIntent.setType(TEST_TYPE); 261 assertEquals(TEST_TYPE, mIntent.resolveType(mContext)); 262 mIntent.setType(null); 263 mIntent.setData(TEST_URI); 264 assertEquals(contentResolver.getType(TEST_URI), mIntent.resolveType(mContext)); 265 mIntent.setData(Uri.parse("test")); 266 assertNull(mIntent.resolveType(mContext)); 267 } 268 269 public void testResolveType2() { 270 final ContentResolver contentResolver = mContext.getContentResolver(); 271 assertNull(mIntent.resolveType(contentResolver)); 272 mIntent.setType(TEST_TYPE); 273 assertEquals(TEST_TYPE, mIntent.resolveType(contentResolver)); 274 mIntent.setType(null); 275 mIntent.setData(TEST_URI); 276 assertEquals(contentResolver.getType(TEST_URI), mIntent.resolveType(contentResolver)); 277 mIntent.setData(Uri.parse("test")); 278 assertNull(mIntent.resolveType(contentResolver)); 279 } 280 281 public void testAccessComponent() { 282 mIntent.setComponent(mComponentName); 283 assertEquals(mComponentName, mIntent.getComponent()); 284 } 285 286 public void testGetDataString() { 287 assertNull(mIntent.getDataString()); 288 mIntent.setData(TEST_URI); 289 assertEquals(TEST_URI.toString(), mIntent.getDataString()); 290 } 291 292 public void testHasCategory() { 293 assertFalse(mIntent.hasCategory(TEST_CATEGORY)); 294 mIntent.addCategory(TEST_CATEGORY); 295 assertTrue(mIntent.hasCategory(TEST_CATEGORY)); 296 } 297 298 public void testGetLongArrayExtra() { 299 final long[] expected = { 1l, 2l, 3l }; 300 mIntent.putExtra(TEST_EXTRA_NAME, expected); 301 assertEquals(expected, mIntent.getLongArrayExtra(TEST_EXTRA_NAME)); 302 } 303 304 public void testParseIntent() throws XmlPullParserException, IOException, 305 NameNotFoundException { 306 mIntent = null; 307 XmlResourceParser parser = null; 308 AttributeSet attrs = null; 309 ActivityInfo ai = null; 310 try { 311 mIntent = Intent.parseIntent(mContext.getResources(), parser, attrs); 312 fail("should thow exception!"); 313 } catch (NullPointerException e) { 314 // expected 315 } 316 317 ai = mContext.getPackageManager().getActivityInfo(mComponentName, 318 PackageManager.GET_META_DATA); 319 parser = ai.loadXmlMetaData(mContext.getPackageManager(), "android.app.alias"); 320 321 attrs = Xml.asAttributeSet(parser); 322 int type; 323 while ((type = parser.next()) != XmlPullParser.END_DOCUMENT 324 && type != XmlPullParser.START_TAG) { 325 } 326 327 String nodeName = parser.getName(); 328 if (!"alias".equals(nodeName)) { 329 throw new RuntimeException(); 330 } 331 332 int outerDepth = parser.getDepth(); 333 while ((type = parser.next()) != XmlPullParser.END_DOCUMENT 334 && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) { 335 if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) { 336 continue; 337 } 338 339 nodeName = parser.getName(); 340 if ("intent".equals(nodeName)) { 341 mIntent = Intent.parseIntent(mContext.getResources(), parser, attrs); 342 } else { 343 XmlUtils.skipCurrentTag(parser); 344 } 345 } 346 347 assertNotNull(mIntent); 348 assertEquals("android.intent.action.MAIN", mIntent.getAction()); 349 assertEquals(Uri.parse("http://www.google.com/"), mIntent.getData()); 350 } 351 352 public void testSetClass() { 353 assertNull(mIntent.getComponent()); 354 mIntent.setClass(mContext, MockActivity.class); 355 assertEquals(mComponentName, mIntent.getComponent()); 356 } 357 358 public void testResolveTypeIfNeeded() { 359 ContentResolver contentResolver = mContext.getContentResolver(); 360 assertNull(mIntent.resolveTypeIfNeeded(contentResolver)); 361 mIntent.setType(TEST_TYPE); 362 assertEquals(TEST_TYPE, mIntent.resolveTypeIfNeeded(contentResolver)); 363 364 mIntent.setType(null); 365 mIntent.setComponent(mComponentName); 366 assertEquals(null, mIntent.resolveTypeIfNeeded(contentResolver)); 367 368 mIntent.setType(TEST_TYPE); 369 mIntent.setComponent(mComponentName); 370 assertEquals(TEST_TYPE, mIntent.resolveTypeIfNeeded(contentResolver)); 371 372 mIntent.setType(null); 373 mIntent.setData(TEST_URI); 374 assertNull(mIntent.resolveTypeIfNeeded(contentResolver)); 375 } 376 377 public void testPutExtra1() { 378 assertFalse(mIntent.getBooleanExtra(TEST_EXTRA_NAME, false)); 379 mIntent.putExtra(TEST_EXTRA_NAME, true); 380 assertTrue(mIntent.getBooleanExtra(TEST_EXTRA_NAME, false)); 381 mIntent.putExtra(TEST_EXTRA_NAME, false); 382 assertFalse(mIntent.getBooleanExtra(TEST_EXTRA_NAME, false)); 383 } 384 385 public void testPutExtra2() { 386 final byte expected = Byte.valueOf("1"); 387 mIntent.putExtra(TEST_EXTRA_NAME, expected); 388 assertEquals(expected, mIntent.getByteExtra(TEST_EXTRA_NAME, Byte.valueOf("1"))); 389 } 390 391 public void testPutExtra3() { 392 assertEquals('a', mIntent.getCharExtra(TEST_EXTRA_NAME, 'a')); 393 final char expected = 'a'; 394 mIntent.putExtra(TEST_EXTRA_NAME, expected); 395 assertEquals(expected, mIntent.getCharExtra(TEST_EXTRA_NAME, 'a')); 396 } 397 398 public void testPutExtra4() { 399 final Short expected = Short.valueOf("2"); 400 assertEquals(Short.valueOf("1").shortValue(), mIntent.getShortExtra( 401 TEST_EXTRA_NAME, Short.valueOf("1"))); 402 mIntent.putExtra(TEST_EXTRA_NAME, expected); 403 assertEquals(expected.shortValue(), mIntent.getShortExtra(TEST_EXTRA_NAME, Short.valueOf("1"))); 404 } 405 406 public void testPutExtra5() { 407 final int expected = 2; 408 assertEquals(1, mIntent.getIntExtra(TEST_EXTRA_NAME, 1)); 409 mIntent.putExtra(TEST_EXTRA_NAME, expected); 410 assertEquals(expected, mIntent.getIntExtra(TEST_EXTRA_NAME, 1)); 411 } 412 413 public void testPutExtra6() { 414 final long expected = 2l; 415 assertEquals(1l, mIntent.getLongExtra(TEST_EXTRA_NAME, 1l)); 416 mIntent.putExtra(TEST_EXTRA_NAME, expected); 417 assertEquals(expected, mIntent.getLongExtra(TEST_EXTRA_NAME, 1l)); 418 } 419 420 public void testPutExtra7() { 421 final float expected = 2f; 422 assertEquals(1f, mIntent.getFloatExtra(TEST_EXTRA_NAME, 1f)); 423 mIntent.putExtra(TEST_EXTRA_NAME, expected); 424 assertEquals(expected, mIntent.getFloatExtra(TEST_EXTRA_NAME, 1f)); 425 } 426 427 public void testPutExtra8() { 428 final double expected = 2d; 429 assertEquals(1d, mIntent.getDoubleExtra(TEST_EXTRA_NAME, 1d)); 430 mIntent.putExtra(TEST_EXTRA_NAME, expected); 431 assertEquals(expected, mIntent.getDoubleExtra(TEST_EXTRA_NAME, 1d)); 432 } 433 434 public void testPutExtra9() { 435 final String expected = "testString"; 436 assertNull(mIntent.getStringExtra(TEST_EXTRA_NAME)); 437 mIntent.putExtra(TEST_EXTRA_NAME, expected); 438 assertEquals(expected, mIntent.getStringExtra(TEST_EXTRA_NAME)); 439 } 440 441 public void testPutExtra10() { 442 final CharSequence expected = "testString"; 443 assertNull(mIntent.getCharSequenceExtra(TEST_EXTRA_NAME)); 444 mIntent.putExtra(TEST_EXTRA_NAME, expected); 445 assertEquals(expected, mIntent.getCharSequenceExtra(TEST_EXTRA_NAME)); 446 } 447 448 public void testPutExtra11() { 449 final Intent expected = new Intent(TEST_ACTION); 450 mIntent.putExtra(TEST_EXTRA_NAME, expected); 451 assertEquals(expected, mIntent.getParcelableExtra(TEST_EXTRA_NAME)); 452 } 453 454 public void testPutExtra12() { 455 final Intent[] expected = { new Intent(TEST_ACTION), new Intent(mContext, MockActivity.class) }; 456 mIntent.putExtra(TEST_EXTRA_NAME, expected); 457 assertEquals(expected, mIntent.getParcelableArrayExtra(TEST_EXTRA_NAME)); 458 } 459 460 public void testPutExtra13() { 461 final TestSerializable expected = new TestSerializable(); 462 expected.Name = "testName"; 463 mIntent.putExtra(TEST_EXTRA_NAME, expected); 464 assertEquals(expected, mIntent.getSerializableExtra(TEST_EXTRA_NAME)); 465 TestSerializable target = (TestSerializable) mIntent.getSerializableExtra(TEST_EXTRA_NAME); 466 assertEquals(expected.Name, target.Name); 467 } 468 469 public void testPutExtra14() { 470 final boolean[] expected = { true, true, false }; 471 mIntent.putExtra(TEST_EXTRA_NAME, expected); 472 assertEquals(expected, mIntent.getBooleanArrayExtra(TEST_EXTRA_NAME)); 473 } 474 475 public void testPutExtra15() { 476 final byte[] expected = TEST_ACTION.getBytes(); 477 mIntent.putExtra(TEST_EXTRA_NAME, expected); 478 assertEquals(expected, mIntent.getByteArrayExtra(TEST_EXTRA_NAME)); 479 } 480 481 public void testPutExtra16() { 482 final short[] expected = { 1, 2, 3 }; 483 mIntent.putExtra(TEST_EXTRA_NAME, expected); 484 assertEquals(expected, mIntent.getShortArrayExtra(TEST_EXTRA_NAME)); 485 } 486 487 public void testPutExtra17() { 488 final char[] expected = { '1', '2', '3' }; 489 mIntent.putExtra(TEST_EXTRA_NAME, expected); 490 assertEquals(expected, mIntent.getCharArrayExtra(TEST_EXTRA_NAME)); 491 } 492 493 public void testPutExtra18() { 494 final int[] expected = { 1, 2, 3 }; 495 mIntent.putExtra(TEST_EXTRA_NAME, expected); 496 assertEquals(expected, mIntent.getIntArrayExtra(TEST_EXTRA_NAME)); 497 } 498 499 public void testPutExtra19() { 500 final long[] expected = { 1l, 2l, 3l }; 501 mIntent.putExtra(TEST_EXTRA_NAME, expected); 502 assertEquals(expected, mIntent.getLongArrayExtra(TEST_EXTRA_NAME)); 503 } 504 505 public void testPutExtra20() { 506 final float[] expected = { 1f, 2f, 3f }; 507 mIntent.putExtra(TEST_EXTRA_NAME, expected); 508 assertEquals(expected, mIntent.getFloatArrayExtra(TEST_EXTRA_NAME)); 509 } 510 511 public void testPutExtra21() { 512 final double[] expected = { 1d, 2d, 3d }; 513 mIntent.putExtra(TEST_EXTRA_NAME, expected); 514 assertEquals(expected, mIntent.getDoubleArrayExtra(TEST_EXTRA_NAME)); 515 } 516 517 public void testPutExtra22() { 518 final String[] expected = { "1d", "2d", "3d" }; 519 mIntent.putExtra(TEST_EXTRA_NAME, expected); 520 assertEquals(expected, mIntent.getStringArrayExtra(TEST_EXTRA_NAME)); 521 } 522 523 public void testPutExtra23() { 524 final Bundle expected = new Bundle(); 525 expected.putString("key", "value"); 526 mIntent.putExtra(TEST_EXTRA_NAME, expected); 527 assertEquals(expected, mIntent.getBundleExtra(TEST_EXTRA_NAME)); 528 } 529 530 @SuppressWarnings("deprecation") 531 public void testPutExtra24() { 532 final IBinder expected = ServiceManager.getService("activity"); 533 mIntent.putExtra(TEST_EXTRA_NAME, expected); 534 assertEquals(expected, mIntent.getIBinderExtra(TEST_EXTRA_NAME)); 535 } 536 537 public void testAddCategory() { 538 assertFalse(mIntent.hasCategory(TEST_CATEGORY)); 539 mIntent.addCategory(TEST_CATEGORY); 540 assertTrue(mIntent.hasCategory(TEST_CATEGORY)); 541 } 542 543 public void testPutParcelableArrayListExtra() { 544 ArrayList<Intent> expected = new ArrayList<Intent>(); 545 mIntent.putExtra(TEST_EXTRA_NAME, expected); 546 assertEquals(expected, mIntent.getParcelableArrayListExtra(TEST_EXTRA_NAME)); 547 } 548 549 public void testToString() { 550 assertNotNull(mIntent.toString()); 551 } 552 553 public void testAccessData() { 554 mIntent.setData(TEST_URI); 555 assertEquals(TEST_URI, mIntent.getData()); 556 } 557 558 public void testSetExtrasClassLoader() { 559 } 560 561 public void testGetStringArrayListExtra() { 562 final ArrayList<String> expected = new ArrayList<String>(); 563 expected.add("testString"); 564 mIntent.putStringArrayListExtra(TEST_EXTRA_NAME, expected); 565 assertEquals(expected, mIntent.getStringArrayListExtra(TEST_EXTRA_NAME)); 566 } 567 568 public void testGetCharSequenceArrayListExtra() { 569 final ArrayList<CharSequence> expected = new ArrayList<CharSequence>(); 570 expected.add("testCharSequence"); 571 mIntent.putCharSequenceArrayListExtra(TEST_EXTRA_NAME, expected); 572 assertEquals(expected, mIntent.getCharSequenceArrayListExtra(TEST_EXTRA_NAME)); 573 } 574 575 public void testResolveActivityInfo() throws NameNotFoundException { 576 final PackageManager pm = mContext.getPackageManager(); 577 assertEquals(null, mIntent.resolveActivityInfo(pm, 1)); 578 mIntent.setComponent(mComponentName); 579 ActivityInfo target = null; 580 581 target = pm.getActivityInfo(mComponentName, 1); 582 assertEquals(target.targetActivity, mIntent.resolveActivityInfo(pm, 1).targetActivity); 583 } 584 585 public void testGetParcelableExtra() { 586 final Intent expected = new Intent(TEST_ACTION); 587 mIntent.putExtra(TEST_EXTRA_NAME, expected); 588 assertEquals(expected, mIntent.getParcelableExtra(TEST_EXTRA_NAME)); 589 } 590 591 public void testAccessAction() { 592 mIntent.setAction(TEST_ACTION); 593 assertEquals(TEST_ACTION, mIntent.getAction()); 594 } 595 596 public void testAddFlags() { 597 final int flag = 1; 598 int expected = 0; 599 mIntent.addFlags(flag); 600 expected |= flag; 601 assertEquals(expected, mIntent.getFlags()); 602 } 603 604 public void testDescribeContents() { 605 final int expected = 0; 606 assertEquals(expected, mIntent.describeContents()); 607 mIntent.putExtra(TEST_EXTRA_NAME, "test"); 608 assertEquals(mIntent.getExtras().describeContents(), mIntent.describeContents()); 609 } 610 611 public void testGetShortExtra() { 612 613 final Short expected = Short.valueOf("2"); 614 assertEquals(Short.valueOf("1").shortValue(), mIntent.getShortExtra( 615 TEST_EXTRA_NAME, Short.valueOf("1"))); 616 mIntent.putExtra(TEST_EXTRA_NAME, expected); 617 assertEquals(expected.shortValue(), mIntent.getShortExtra(TEST_EXTRA_NAME, Short.valueOf("1"))); 618 } 619 620 public void testClone() { 621 mIntent.setAction(TEST_ACTION); 622 mIntent.setClass(mContext, MockActivity.class); 623 mIntent.setComponent(mComponentName); 624 mIntent.setDataAndType(TEST_URI, TEST_TYPE); 625 mIntent.addCategory(TEST_CATEGORY); 626 final String key = "testkey"; 627 final String excepted = "testValue"; 628 mIntent.putExtra(key, excepted); 629 Intent actual = (Intent) mIntent.clone(); 630 assertEquals(mComponentName, actual.getComponent()); 631 assertEquals(TEST_ACTION, actual.getAction()); 632 assertEquals(mComponentName, actual.getComponent()); 633 assertEquals(TEST_URI, actual.getData()); 634 assertEquals(TEST_TYPE, actual.getType()); 635 assertEquals(TEST_CATEGORY, (String) (actual.getCategories().toArray()[0])); 636 assertEquals(excepted, actual.getStringExtra(key)); 637 } 638 639 public void testGetDoubleExtra() { 640 final double expected = 2d; 641 assertEquals(1d, mIntent.getDoubleExtra(TEST_EXTRA_NAME, 1d)); 642 mIntent.putExtra(TEST_EXTRA_NAME, expected); 643 assertEquals(expected, mIntent.getDoubleExtra(TEST_EXTRA_NAME, 1d)); 644 } 645 646 public void testCloneFilter() { 647 mIntent.setAction(TEST_ACTION); 648 mIntent.setClass(mContext, MockActivity.class); 649 mIntent.setComponent(mComponentName); 650 mIntent.setDataAndType(TEST_URI, TEST_TYPE); 651 mIntent.addCategory(TEST_CATEGORY); 652 final String key = "testkey"; 653 mIntent.putExtra(key, "testValue"); 654 Intent actual = mIntent.cloneFilter(); 655 assertEquals(mComponentName, actual.getComponent()); 656 assertEquals(TEST_ACTION, actual.getAction()); 657 assertEquals(mComponentName, actual.getComponent()); 658 assertEquals(TEST_URI, actual.getData()); 659 assertEquals(TEST_TYPE, actual.getType()); 660 assertEquals(TEST_CATEGORY, (String) (actual.getCategories().toArray()[0])); 661 assertNull(actual.getStringExtra(key)); 662 } 663 664 public void testGetIntentOld() throws URISyntaxException { 665 String uri = "test"; 666 mIntent = Intent.getIntentOld(uri); 667 assertEquals(Intent.ACTION_VIEW, mIntent.getAction()); 668 669 mIntent = null; 670 try { 671 uri = "test#action(test)categories(test)type(mtype)launchFlags(test)extras(test"; 672 mIntent = Intent.getIntentOld(uri); 673 fail("should throw URISyntaxException."); 674 } catch (Exception e) { 675 // expected 676 } 677 678 final String compnent = 679 "component(" + mContext.getPackageName() + "!" + MockActivity.class.getName() + ")"; 680 uri = "testdata#action(test)categories(test!test2)type(mtype)launchFlags(5)" + compnent 681 + "extras(Stest=testString!btestbyte=1!" 682 + "Btestboolean=true!ctestchar=a!dtestdouble=1d!" 683 + "itestint=1!ltestlong=1!stestshort=1!ftestfloat=1f)"; 684 mIntent = Intent.getIntentOld(uri); 685 assertEquals("test", mIntent.getAction()); 686 assertEquals("testdata", mIntent.getData().toString()); 687 assertEquals(mComponentName, mIntent.getComponent()); 688 assertEquals("test", (String) (mIntent.getCategories().toArray()[0])); 689 assertEquals("mtype", mIntent.getType()); 690 assertEquals(4, mIntent.getFlags()); 691 assertEquals("testString", mIntent.getStringExtra("test")); 692 assertTrue(mIntent.getBooleanExtra("testboolean", false)); 693 final byte b = 1; 694 final byte defaulttByte = 2; 695 assertEquals(b, mIntent.getByteExtra("testbyte", defaulttByte)); 696 assertEquals('a', mIntent.getCharExtra("testchar", 'b')); 697 final float testFloat = 1f; 698 assertEquals(testFloat, mIntent.getFloatExtra("testfloat", 2f)); 699 final double testDouble = 1d; 700 assertEquals(testDouble, mIntent.getDoubleExtra("testdouble", 2d)); 701 702 final long testLong = 1; 703 assertEquals(testLong, mIntent.getLongExtra("testlong", 2l)); 704 705 final short testShort = 1; 706 final short defaultShort = 2; 707 assertEquals(testShort, mIntent.getShortExtra("testshort", defaultShort)); 708 assertEquals(1, mIntent.getIntExtra("testint", 2)); 709 } 710 711 public void testGetParcelableArrayExtra() { 712 final Intent[] expected = { new Intent(TEST_ACTION), new Intent(mContext, MockActivity.class) }; 713 mIntent.putExtra(TEST_EXTRA_NAME, expected); 714 assertEquals(expected, mIntent.getParcelableArrayExtra(TEST_EXTRA_NAME)); 715 } 716 717 public void testResolveActivityEmpty() { 718 final Intent emptyIntent = new Intent(); 719 720 // Empty intent shouldn't resolve to anything 721 final ComponentName target = emptyIntent.resolveActivity(mPm); 722 assertNull(target); 723 } 724 725 public void testResolveActivitySingleMatch() { 726 final Intent intent = new Intent("com.android.cts.content.action.TEST_ACTION"); 727 intent.addCategory("com.android.cts.content.category.TEST_CATEGORY"); 728 729 // Should only have one activity responding to narrow category 730 final ComponentName target = intent.resolveActivity(mPm); 731 assertEquals("com.android.cts.content", target.getPackageName()); 732 assertEquals("android.content.cts.MockActivity", target.getClassName()); 733 } 734 735 public void testResolveActivityShortcutMatch() { 736 final Intent intent = new Intent("com.android.cts.content.action.TEST_ACTION"); 737 intent.setComponent( 738 new ComponentName("com.android.cts.content", "android.content.cts.MockActivity2")); 739 740 // Multiple activities match, but we asked for explicit component 741 final ComponentName target = intent.resolveActivity(mPm); 742 assertEquals("com.android.cts.content", target.getPackageName()); 743 assertEquals("android.content.cts.MockActivity2", target.getClassName()); 744 } 745 746 public void testResolveActivityMultipleMatch() { 747 final Intent intent = new Intent("com.android.cts.content.action.TEST_ACTION"); 748 749 // Should have multiple activities, resulting in resolver dialog 750 final ComponentName target = intent.resolveActivity(mPm); 751 final String pkgName = target.getPackageName(); 752 assertFalse("com.android.cts.content".equals(pkgName)); 753 754 // Whoever they are must be able to set preferred activities 755 if (!"android".equals(pkgName)) { 756 if (mPm.checkPermission(android.Manifest.permission.SET_PREFERRED_APPLICATIONS, pkgName) 757 != PackageManager.PERMISSION_GRANTED) { 758 fail("Resolved target " + target 759 + " doesn't have SET_PREFERRED_APPLICATIONS permission"); 760 } 761 } 762 } 763 764 public void testGetCharExtra() { 765 assertEquals('a', mIntent.getCharExtra(TEST_EXTRA_NAME, 'a')); 766 final char expected = 'b'; 767 mIntent.putExtra(TEST_EXTRA_NAME, expected); 768 assertEquals(expected, mIntent.getCharExtra(TEST_EXTRA_NAME, 'a')); 769 } 770 771 public void testGetIntent() throws URISyntaxException { 772 mIntent = Intent.getIntent("test#"); 773 assertEquals(Intent.ACTION_VIEW, mIntent.getAction()); 774 775 try { 776 String uri = "#Intent;action=android.content.IntentTest_test;" 777 + "category=testCategory;type=testtype;launchFlags=0x1;" 778 + "component=com.android/.app.MockActivity;K.testExtraName=1;end"; 779 mIntent = Intent.getIntent(uri); 780 fail("should throw URISyntaxException."); 781 } catch (Exception e) { 782 // expected 783 } 784 mIntent = new Intent(); 785 786 String uri = mIntent.toURI(); 787 Intent target = Intent.getIntent(uri); 788 assertEquals(Intent.ACTION_VIEW, target.getAction()); 789 790 mIntent.setAction(TEST_ACTION); 791 uri = mIntent.toURI(); 792 target = Intent.getIntent(uri); 793 assertEquals(TEST_ACTION, target.getAction()); 794 795 mIntent.setData(TEST_URI); 796 uri = mIntent.toURI(); 797 target = Intent.getIntent(uri); 798 assertEquals(TEST_URI, target.getData()); 799 800 mIntent.setComponent(mComponentName); 801 uri = mIntent.toURI(); 802 target = Intent.getIntent(uri); 803 assertEquals(mComponentName, target.getComponent()); 804 805 mIntent.addCategory(TEST_CATEGORY); 806 uri = mIntent.toURI(); 807 target = Intent.getIntent(uri); 808 assertEquals(1, target.getCategories().size()); 809 assertEquals(TEST_CATEGORY, (String) (target.getCategories().toArray()[0])); 810 811 mIntent.setType(TEST_TYPE); 812 uri = mIntent.toURI(); 813 target = Intent.getIntent(uri); 814 assertEquals(TEST_TYPE, target.getType()); 815 816 mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT 817 | Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION 818 | Intent.FLAG_GRANT_PREFIX_URI_PERMISSION 819 | Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION); 820 uri = mIntent.toURI(); 821 target = Intent.getIntent(uri); 822 assertEquals(Intent.FLAG_ACTIVITY_NEW_DOCUMENT, 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 = new Intent(); 877 assertEquals("", 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 static Intent makeSelector(Intent baseIntent, Intent selectorIntent) { 945 baseIntent.setSelector(selectorIntent); 946 return baseIntent; 947 } 948 949 public void testUris() { 950 checkIntentUri( 951 "intent:#Intent;action=android.test.FOO;end", 952 null, 953 new Intent().setAction("android.test.FOO")); 954 checkIntentUri( 955 "intent:#Intent;category=android.test.FOO;end", 956 null, 957 new Intent().setAction(Intent.ACTION_VIEW).addCategory("android.test.FOO")); 958 checkIntentUri( 959 "intent:#Intent;action=android.test.FOO;launchFlags=0x20;end", 960 null, 961 new Intent().setAction("android.test.FOO").setFlags(0x20)); 962 checkIntentUri( 963 "intent://www.example.com/blah#Intent;scheme=http;end", 964 null, 965 new Intent().setAction(Intent.ACTION_VIEW) 966 .setData(Uri.parse("http://www.example.com/blah"))); 967 checkIntentUri( 968 "intent://www.example.com/blah#Intent;scheme=http;component=com.exfoo/com.argh.Bar;end", 969 null, 970 new Intent().setAction(Intent.ACTION_VIEW) 971 .setData(Uri.parse("http://www.example.com/blah")) 972 .setComponent(new ComponentName("com.exfoo", "com.argh.Bar"))); 973 checkIntentUri( 974 "intent://www.example.com/blah#fragment#Intent;scheme=http;end", 975 null, 976 new Intent().setAction(Intent.ACTION_VIEW) 977 .setData(Uri.parse("http://www.example.com/blah#fragment"))); 978 checkIntentUri( 979 "intent://www.example.com/blah#Intent;scheme=http;action=android.test.foo;end", 980 null, 981 new Intent().setAction("android.test.foo") 982 .setData(Uri.parse("http://www.example.com/blah"))); 983 checkIntentUri( 984 "intent:foo#Intent;scheme=mailto;type=image/foo;end", 985 null, 986 new Intent().setAction(Intent.ACTION_VIEW) 987 .setDataAndType(Uri.parse("mailto:foo"), "image/foo")); 988 checkIntentUri( 989 "intent:foo#Intent;scheme=mailto;S.string=text;end", 990 null, 991 new Intent().setAction(Intent.ACTION_VIEW) 992 .setData(Uri.parse("mailto:foo")) 993 .putExtra("string", "text")); 994 checkIntentUri( 995 "intent:#Intent;action=android.test.FOO;S.string=text;end", 996 null, 997 new Intent().setAction("android.test.FOO").putExtra("string", "text")); 998 checkIntentUri( 999 "intent:foo#Intent;scheme=mailto;i.int=1000;end", 1000 null, 1001 new Intent().setAction(Intent.ACTION_VIEW) 1002 .setData(Uri.parse("mailto:foo")) 1003 .putExtra("int", 1000)); 1004 checkIntentUri( 1005 "intent:foo#Intent;scheme=mailto;l.long=1000;end", 1006 null, 1007 new Intent().setAction(Intent.ACTION_VIEW) 1008 .setData(Uri.parse("mailto:foo")) 1009 .putExtra("long", (long) 1000)); 1010 checkIntentUri( 1011 "intent:foo#Intent;scheme=mailto;B.boolean=true;end", 1012 null, 1013 new Intent().setAction(Intent.ACTION_VIEW) 1014 .setData(Uri.parse("mailto:foo")) 1015 .putExtra("boolean", true)); 1016 checkIntentUri( 1017 "intent:foo#Intent;scheme=mailto;f.float=10.4;end", 1018 null, 1019 new Intent().setAction(Intent.ACTION_VIEW) 1020 .setData(Uri.parse("mailto:foo")) 1021 .putExtra("float", 10.4f)); 1022 checkIntentUri( 1023 "intent:foo#Intent;scheme=mailto;d.double=10.4;end", 1024 null, 1025 new Intent().setAction(Intent.ACTION_VIEW) 1026 .setData(Uri.parse("mailto:foo")) 1027 .putExtra("double", (double) 10.4)); 1028 checkIntentUri( 1029 "intent:#Intent;S.string=text;i.int=1000;l.long=1000;B.boolean=true;f.float=10.4;end", 1030 null, 1031 new Intent().setAction(Intent.ACTION_VIEW).putExtra("string", "text") 1032 .putExtra("int", 1000).putExtra("long", (long) 1000) 1033 .putExtra("boolean", true).putExtra("float", 10.4f)); 1034 checkIntentUri( 1035 "intent:foo#Intent;scheme=mailto;SEL;scheme=foobar;action=android.test.FOO;end", 1036 null, 1037 makeSelector(new Intent(Intent.ACTION_VIEW).setData(Uri.parse("mailto:foo")), 1038 new Intent("android.test.FOO").setData(Uri.parse("foobar:")))); 1039 checkIntentUri( 1040 "intent:foo#Intent;scheme=mailto;SEL;action=android.test.FOO;package=com.myapp;end", 1041 null, 1042 makeSelector(new Intent(Intent.ACTION_VIEW).setData(Uri.parse("mailto:foo")), 1043 new Intent("android.test.FOO").setPackage("com.myapp"))); 1044 checkIntentUri( 1045 "intent:foo#Intent;scheme=mailto;SEL;action=android.test.FOO;component=com.exfoo/com.argh.Bar;end", 1046 null, 1047 makeSelector(new Intent(Intent.ACTION_VIEW).setData(Uri.parse("mailto:foo")), 1048 new Intent("android.test.FOO") 1049 .setComponent(new ComponentName("com.exfoo", "com.argh.Bar")))); 1050 1051 checkIntentUri( 1052 "intent:#Intent;action=android.test.FOO;package=com.myapp;end", 1053 "android-app://com.myapp#Intent;action=android.test.FOO;end", 1054 new Intent().setAction("android.test.FOO").setPackage("com.myapp")); 1055 checkIntentUri( 1056 "intent:#Intent;action=android.intent.action.MAIN;package=com.myapp;end", 1057 "android-app://com.myapp", 1058 new Intent().setAction(Intent.ACTION_MAIN).setPackage("com.myapp")); 1059 checkIntentUri( 1060 "intent:#Intent;package=com.myapp;end", 1061 "android-app://com.myapp#Intent;action=android.intent.action.VIEW;end", 1062 new Intent().setAction(Intent.ACTION_VIEW).setPackage("com.myapp")); 1063 checkIntentUri( 1064 "intent:#Intent;category=android.test.FOO;package=com.myapp;end", 1065 "android-app://com.myapp#Intent;action=android.intent.action.VIEW;category=android.test.FOO;end", 1066 new Intent().setAction(Intent.ACTION_VIEW).addCategory("android.test.FOO") 1067 .setPackage("com.myapp")); 1068 checkIntentUri( 1069 "intent:#Intent;action=android.test.FOO;launchFlags=0x20;package=com.myapp;end", 1070 "android-app://com.myapp#Intent;action=android.test.FOO;launchFlags=0x20;end", 1071 new Intent().setAction("android.test.FOO").setFlags(0x20) 1072 .setPackage("com.myapp")); 1073 checkIntentUri( 1074 "intent://www.example.com/blah#Intent;scheme=http;package=com.myapp;end", 1075 "android-app://com.myapp/http/www.example.com/blah", 1076 new Intent().setAction(Intent.ACTION_VIEW) 1077 .setData(Uri.parse("http://www.example.com/blah")) 1078 .setPackage("com.myapp")); 1079 checkIntentUri( 1080 "intent://www.example.com/blah#Intent;scheme=http;package=com.myapp;component=com.exfoo/com.argh.Bar;end", 1081 "android-app://com.myapp/http/www.example.com/blah#Intent;component=com.exfoo/com.argh.Bar;end", 1082 new Intent().setAction(Intent.ACTION_VIEW) 1083 .setData(Uri.parse("http://www.example.com/blah")) 1084 .setComponent(new ComponentName("com.exfoo", "com.argh.Bar")) 1085 .setPackage("com.myapp")); 1086 checkIntentUri( 1087 "intent://www.example.com/blah#fragment#Intent;scheme=http;package=com.myapp;end", 1088 "android-app://com.myapp/http/www.example.com/blah#fragment", 1089 new Intent().setAction(Intent.ACTION_VIEW) 1090 .setData(Uri.parse("http://www.example.com/blah#fragment")) 1091 .setPackage("com.myapp")); 1092 checkIntentUri( 1093 "intent://www.example.com/blah#fragment#Intent;scheme=http;action=android.test.FOO;package=com.myapp;end", 1094 "android-app://com.myapp/http/www.example.com/blah#fragment#Intent;action=android.test.FOO;end", 1095 new Intent().setAction("android.test.FOO") 1096 .setData(Uri.parse("http://www.example.com/blah#fragment")) 1097 .setPackage("com.myapp")); 1098 checkIntentUri( 1099 "intent://www.example.com/blah#Intent;scheme=http;package=com.myapp;end", 1100 "android-app://com.myapp/http/www.example.com/blah", 1101 new Intent().setAction(Intent.ACTION_VIEW) 1102 .setData(Uri.parse("http://www.example.com/blah")) 1103 .setPackage("com.myapp")); 1104 checkIntentUri( 1105 "intent:#Intent;scheme=mailto;type=image/foo;package=com.myapp;end", 1106 "android-app://com.myapp/mailto#Intent;type=image/foo;end", 1107 new Intent().setAction(Intent.ACTION_VIEW) 1108 .setDataAndType(Uri.parse("mailto:"), "image/foo") 1109 .setPackage("com.myapp")); 1110 checkIntentUri( 1111 "intent:#Intent;scheme=mailto;package=com.myapp;S.string=text;end", 1112 "android-app://com.myapp/mailto#Intent;S.string=text;end", 1113 new Intent().setAction(Intent.ACTION_VIEW).putExtra("string", "text") 1114 .setData(Uri.parse("mailto:")).setPackage("com.myapp")); 1115 checkIntentUri( 1116 "intent:#Intent;action=android.test.FOO;package=com.myapp;S.string=text;end", 1117 "android-app://com.myapp#Intent;action=android.test.FOO;S.string=text;end", 1118 new Intent().setAction("android.test.FOO").putExtra("string", "text") 1119 .setPackage("com.myapp")); 1120 checkIntentUri( 1121 "intent:#Intent;scheme=mailto;package=com.myapp;i.int=1000;end", 1122 "android-app://com.myapp/mailto#Intent;i.int=1000;end", 1123 new Intent().setAction(Intent.ACTION_VIEW).putExtra("int", 1000) 1124 .setData(Uri.parse("mailto:")).setPackage("com.myapp")); 1125 checkIntentUri( 1126 "intent:#Intent;scheme=mailto;package=com.myapp;l.long=1000;end", 1127 "android-app://com.myapp/mailto#Intent;l.long=1000;end", 1128 new Intent().setAction(Intent.ACTION_VIEW).putExtra("long", (long) 1000) 1129 .setData(Uri.parse("mailto:")).setPackage("com.myapp")); 1130 checkIntentUri( 1131 "intent:#Intent;scheme=mailto;package=com.myapp;B.boolean=true;end", 1132 "android-app://com.myapp/mailto#Intent;B.boolean=true;end", 1133 new Intent().setAction(Intent.ACTION_VIEW).putExtra("boolean", true) 1134 .setData(Uri.parse("mailto:")).setPackage("com.myapp")); 1135 checkIntentUri( 1136 "intent:#Intent;scheme=mailto;package=com.myapp;f.float=10.4;end", 1137 "android-app://com.myapp/mailto#Intent;f.float=10.4;end", 1138 new Intent().setAction(Intent.ACTION_VIEW).putExtra("float", 10.4f) 1139 .setData(Uri.parse("mailto:")).setPackage("com.myapp")); 1140 checkIntentUri( 1141 "intent:#Intent;scheme=mailto;package=com.myapp;d.double=10.4;end", 1142 "android-app://com.myapp/mailto#Intent;d.double=10.4;end", 1143 new Intent().setAction(Intent.ACTION_VIEW).putExtra("double", (double) 10.4) 1144 .setData(Uri.parse("mailto:")).setPackage("com.myapp")); 1145 checkIntentUri( 1146 "intent:#Intent;package=com.myapp;S.string=text;i.int=1000;l.long=1000;B.boolean=true;f.float=10.4;end", 1147 "android-app://com.myapp#Intent;action=android.intent.action.VIEW;S.string=text;i.int=1000;l.long=1000;B.boolean=true;f.float=10.4;end", 1148 new Intent().setAction(Intent.ACTION_VIEW).putExtra("string", "text") 1149 .putExtra("int", 1000).putExtra("long", (long) 1000) 1150 .putExtra("boolean", true).putExtra("float", 10.4f) 1151 .setPackage("com.myapp")); 1152 } 1153 1154 private boolean compareIntents(Intent expected, Intent actual) { 1155 if (!Objects.equals(expected.getAction(), actual.getAction())) { 1156 return false; 1157 } 1158 if (!Objects.equals(expected.getData(), actual.getData())) { 1159 return false; 1160 } 1161 if (!Objects.equals(expected.getType(), actual.getType())) { 1162 return false; 1163 } 1164 if (!Objects.equals(expected.getPackage(), actual.getPackage())) { 1165 return false; 1166 } 1167 if (!Objects.equals(expected.getComponent(), actual.getComponent())) { 1168 return false; 1169 } 1170 if (expected.getFlags() != actual.getFlags()) { 1171 return false; 1172 } 1173 Set<String> expectedCat = expected.getCategories(); 1174 Set<String> actualCat = actual.getCategories(); 1175 if (expectedCat != actualCat) { 1176 if (expectedCat == null || actualCat == null) { 1177 return false; 1178 } 1179 for (String cat : expectedCat) { 1180 if (!actual.hasCategory(cat)) { 1181 return false; 1182 } 1183 } 1184 for (String cat : actualCat) { 1185 if (!expected.hasCategory(cat)) { 1186 return false; 1187 } 1188 } 1189 } 1190 Bundle extras1 = expected.getExtras(); 1191 Bundle extras2 = actual.getExtras(); 1192 if (extras1 != extras2) { 1193 if (extras1 == null || extras2 == null) { 1194 return false; 1195 } 1196 for (String key : extras1.keySet()) { 1197 if (!Objects.equals(extras1.get(key), extras2.get(key))) { 1198 return false; 1199 } 1200 } 1201 for (String key : extras2.keySet()) { 1202 if (!Objects.equals(extras1.get(key), extras2.get(key))) { 1203 return false; 1204 } 1205 } 1206 } 1207 return true; 1208 } 1209 1210 private void assertEqualsIntent(String msg, Intent expected, Intent actual) { 1211 if (!compareIntents(expected, actual)) { 1212 failNotEquals(msg, expected, actual); 1213 } 1214 Intent expectedSel = expected.getSelector(); 1215 Intent actualSel = actual.getSelector(); 1216 if (expectedSel != actualSel) { 1217 if (expectedSel == null || actualSel == null) { 1218 failNotEquals(msg, expected, actual); 1219 } 1220 if (!compareIntents(expectedSel, actualSel)) { 1221 failNotEquals(msg, expected, actual); 1222 } 1223 } 1224 } 1225 1226 private void checkIntentUri(String intentSchemeUri, String androidAppSchemeUri, Intent intent) { 1227 if (intentSchemeUri != null) { 1228 try { 1229 Intent genIntent = Intent.parseUri(intentSchemeUri, 0); 1230 assertEqualsIntent("Implicitly converting " + intentSchemeUri + " to Intent", 1231 intent, genIntent); 1232 genIntent = Intent.parseUri(intentSchemeUri, Intent.URI_INTENT_SCHEME); 1233 assertEqualsIntent("Explicitly converting " + intentSchemeUri + " to Intent", 1234 intent, genIntent); 1235 } catch (URISyntaxException e) { 1236 fail("Failure parsing " + intentSchemeUri + ": " + e); 1237 } 1238 String genUri = intent.toUri(Intent.URI_INTENT_SCHEME); 1239 assertEquals("Converting " + intent + " to intent: uri", 1240 intentSchemeUri, genUri); 1241 } 1242 if (androidAppSchemeUri != null) { 1243 try { 1244 Intent genIntent = Intent.parseUri(androidAppSchemeUri, 0); 1245 assertEqualsIntent("Implicitly converting " + androidAppSchemeUri + " to Intent", 1246 intent, genIntent); 1247 genIntent = Intent.parseUri(intentSchemeUri, Intent.URI_ANDROID_APP_SCHEME); 1248 assertEqualsIntent("Explicitly converting " + androidAppSchemeUri + " to Intent", 1249 intent, genIntent); 1250 } catch (URISyntaxException e) { 1251 fail("Failure parsing " + androidAppSchemeUri + ": " + e); 1252 } 1253 String genUri = intent.toUri(Intent.URI_ANDROID_APP_SCHEME); 1254 assertEquals("Converting " + intent + " to android-app: uri", 1255 androidAppSchemeUri, genUri); 1256 } 1257 } 1258 1259 public void testAccessFlags() { 1260 int expected = 1; 1261 mIntent.setFlags(expected); 1262 assertEquals(expected, mIntent.getFlags()); 1263 } 1264 1265 public void testCreateChooser() { 1266 Intent target = Intent.createChooser(mIntent, null); 1267 assertEquals(Intent.ACTION_CHOOSER, target.getAction()); 1268 Intent returnIntent = (Intent) target.getParcelableExtra(Intent.EXTRA_INTENT); 1269 assertEquals(mIntent.toString(), returnIntent.toString()); 1270 assertEquals(mIntent.toURI(), returnIntent.toURI()); 1271 assertNull(returnIntent.getStringExtra(Intent.EXTRA_INTENT)); 1272 final String title = "title String"; 1273 target = Intent.createChooser(mIntent, title); 1274 assertEquals(title, target.getStringExtra(Intent.EXTRA_TITLE)); 1275 } 1276 1277 public void testGetFloatArrayExtra() { 1278 final float[] expected = { 1f, 2f, 3f }; 1279 mIntent.putExtra(TEST_EXTRA_NAME, expected); 1280 assertEquals(expected, mIntent.getFloatArrayExtra(TEST_EXTRA_NAME)); 1281 } 1282 1283 public void testSetDataAndType() { 1284 mIntent.setDataAndType(TEST_URI, TEST_TYPE); 1285 assertEquals(TEST_URI, mIntent.getData()); 1286 assertEquals(TEST_TYPE, mIntent.getType()); 1287 } 1288 1289 public void testSetData() { 1290 mIntent.setData(TEST_URI); 1291 assertEquals(TEST_URI, mIntent.getData()); 1292 assertNull(mIntent.getType()); 1293 1294 mIntent.setType(TEST_TYPE); 1295 mIntent.setData(TEST_URI); 1296 assertEquals(TEST_URI, mIntent.getData()); 1297 assertNull(mIntent.getType()); 1298 } 1299 1300 public void testSetType() { 1301 mIntent.setType(TEST_TYPE); 1302 assertEquals(TEST_TYPE, mIntent.getType()); 1303 assertNull(mIntent.getData()); 1304 1305 mIntent.setData(TEST_URI); 1306 mIntent.setType(TEST_TYPE); 1307 assertEquals(TEST_TYPE, mIntent.getType()); 1308 assertNull(mIntent.getData()); 1309 } 1310 1311 public void testGetStringExtra() { 1312 final String expected = "testString"; 1313 assertNull(mIntent.getStringExtra(TEST_EXTRA_NAME)); 1314 mIntent.putExtra(TEST_EXTRA_NAME, expected); 1315 assertEquals(expected, mIntent.getStringExtra(TEST_EXTRA_NAME)); 1316 } 1317 1318 /** 1319 * Test that fillIn has no effect when no fields are set. 1320 */ 1321 public void testFillIn_blank() { 1322 Intent sourceIntent = new Intent(); 1323 Intent destIntent = new Intent(); 1324 assertEquals(0, destIntent.fillIn(sourceIntent, Intent.FILL_IN_ACTION)); 1325 assertEquals(0, destIntent.fillIn(sourceIntent, 0)); 1326 assertNull(destIntent.getAction()); 1327 } 1328 1329 /** 1330 * Test that fillIn copies the action field. 1331 */ 1332 public void testFillIn_action() { 1333 Intent sourceIntent = new Intent(); 1334 Intent destIntent = new Intent(); 1335 // test action copied when null 1336 sourceIntent.setAction(TEST_ACTION); 1337 assertEquals(Intent.FILL_IN_ACTION, destIntent.fillIn(sourceIntent, 0)); 1338 assertEquals(TEST_ACTION, destIntent.getAction()); 1339 } 1340 1341 /** 1342 * Test that fillIn does not copy action when its already set in target Intent. 1343 */ 1344 public void testFillIn_actionSet() { 1345 Intent sourceIntent = new Intent(); 1346 Intent destIntent = new Intent(); 1347 final String newAction = "foo"; 1348 sourceIntent = new Intent(); 1349 sourceIntent.setAction(newAction); 1350 destIntent.setAction(TEST_ACTION); 1351 1352 assertEquals(0, destIntent.fillIn(sourceIntent, 0)); 1353 assertEquals(TEST_ACTION, destIntent.getAction()); 1354 } 1355 1356 /** 1357 * Test that fillIn copies action when {@link Intent#FILL_IN_ACTION} flag is set. 1358 */ 1359 public void testFillIn_actionOverride() { 1360 Intent sourceIntent = new Intent(); 1361 Intent destIntent = new Intent(); 1362 final String newAction = "foo"; 1363 sourceIntent = new Intent(); 1364 sourceIntent.setAction(newAction); 1365 destIntent.setAction(TEST_ACTION); 1366 1367 assertEquals(Intent.FILL_IN_ACTION, destIntent.fillIn(sourceIntent, Intent.FILL_IN_ACTION)); 1368 assertEquals(newAction, destIntent.getAction()); 1369 } 1370 1371 /** 1372 * Test that fillIn copies data. 1373 */ 1374 public void testFillIn_data() { 1375 Intent sourceIntent = new Intent(); 1376 Intent destIntent = new Intent(); 1377 sourceIntent.setData(TEST_URI); 1378 assertEquals(Intent.FILL_IN_DATA, destIntent.fillIn(sourceIntent, 0)); 1379 assertEquals(TEST_URI, destIntent.getData()); 1380 } 1381 1382 /** 1383 * Test that fillIn does not copy data when already its already set in target Intent. 1384 */ 1385 public void testFillIn_dataSet() { 1386 Intent sourceIntent = new Intent(); 1387 Intent destIntent = new Intent(); 1388 sourceIntent.setData(TEST_URI); 1389 destIntent.setData(ANOTHER_TEST_URI); 1390 assertEquals(0, destIntent.fillIn(sourceIntent, 0)); 1391 assertEquals(ANOTHER_TEST_URI, destIntent.getData()); 1392 } 1393 1394 /** 1395 * Test that fillIn overrides data when {@link Intent#FILL_IN_DATA} flag is set. 1396 */ 1397 public void testFillIn_dataOverride() { 1398 Intent sourceIntent = new Intent(); 1399 Intent destIntent = new Intent(); 1400 sourceIntent.setData(TEST_URI); 1401 destIntent.setData(ANOTHER_TEST_URI); 1402 assertEquals(Intent.FILL_IN_DATA, destIntent.fillIn(sourceIntent, Intent.FILL_IN_DATA)); 1403 assertEquals(TEST_URI, destIntent.getData()); 1404 } 1405 1406 /** 1407 * Test that fillIn copies data type. 1408 */ 1409 public void testFillIn_dataType() { 1410 Intent sourceIntent = new Intent(); 1411 Intent destIntent = new Intent(); 1412 sourceIntent.setType(TEST_TYPE); 1413 assertEquals(Intent.FILL_IN_DATA, destIntent.fillIn(sourceIntent, 0)); 1414 assertEquals(TEST_TYPE, destIntent.getType()); 1415 } 1416 1417 /** 1418 * Test that fillIn does not copy data type when already its already set in target Intent. 1419 */ 1420 public void testFillIn_dataTypeSet() { 1421 Intent sourceIntent = new Intent(); 1422 Intent destIntent = new Intent(); 1423 sourceIntent.setType(TEST_TYPE); 1424 destIntent.setType(ANOTHER_TEST_TYPE); 1425 assertEquals(0, destIntent.fillIn(sourceIntent, 0)); 1426 assertEquals(ANOTHER_TEST_TYPE, destIntent.getType()); 1427 } 1428 1429 /** 1430 * Test that fillIn overrides data type when {@link Intent#FILL_IN_DATA} flag is set. 1431 */ 1432 public void testFillIn_dataTypeOverride() { 1433 Intent sourceIntent = new Intent(); 1434 Intent destIntent = new Intent(); 1435 sourceIntent.setType(TEST_TYPE); 1436 destIntent.setType(ANOTHER_TEST_TYPE); 1437 assertEquals(Intent.FILL_IN_DATA, destIntent.fillIn(sourceIntent, Intent.FILL_IN_DATA)); 1438 assertEquals(TEST_TYPE, destIntent.getType()); 1439 } 1440 1441 /** 1442 * Test component is not copied by fillIn method when {@link Intent#FILL_IN_COMPONENT} flag is 1443 * not set. 1444 */ 1445 public void testFillIn_componentNoCopy() { 1446 Intent sourceIntent = new Intent(); 1447 Intent destIntent = new Intent(); 1448 sourceIntent.setComponent(mComponentName); 1449 assertEquals(0, destIntent.fillIn(sourceIntent, 0)); 1450 assertEquals(null, destIntent.getComponent()); 1451 } 1452 1453 /** 1454 * Test that fillIn copies component when {@link Intent#FILL_IN_COMPONENT} flag is set. 1455 */ 1456 public void testFillIn_componentOverride() { 1457 Intent sourceIntent = new Intent(); 1458 Intent destIntent = new Intent(); 1459 sourceIntent.setComponent(mComponentName); 1460 destIntent.setComponent(mAnotherComponentName); 1461 assertEquals(Intent.FILL_IN_COMPONENT, destIntent.fillIn(sourceIntent, 1462 Intent.FILL_IN_COMPONENT)); 1463 assertEquals(mComponentName, destIntent.getComponent()); 1464 } 1465 1466 /** 1467 * Test that fillIn copies categories. 1468 */ 1469 public void testFillIn_category() { 1470 Intent sourceIntent = new Intent(); 1471 Intent destIntent = new Intent(); 1472 // add two categories to ensure all categories are copied 1473 sourceIntent.addCategory(TEST_CATEGORY); 1474 sourceIntent.addCategory(ANOTHER_TEST_CATEGORY); 1475 assertEquals(Intent.FILL_IN_CATEGORIES, destIntent.fillIn(sourceIntent, 0)); 1476 assertEquals(2, destIntent.getCategories().size()); 1477 assertTrue(destIntent.getCategories().contains(TEST_CATEGORY)); 1478 assertTrue(destIntent.getCategories().contains(ANOTHER_TEST_CATEGORY)); 1479 } 1480 1481 /** 1482 * Test fillIn does not copy categories by default when already set. 1483 */ 1484 public void testFillIn_categorySet() { 1485 Intent sourceIntent = new Intent(); 1486 Intent destIntent = new Intent(); 1487 sourceIntent = new Intent(); 1488 sourceIntent.addCategory(TEST_CATEGORY); 1489 destIntent.addCategory(ANOTHER_TEST_CATEGORY); 1490 1491 assertEquals(0, destIntent.fillIn(sourceIntent, 0)); 1492 assertEquals(1, destIntent.getCategories().size()); 1493 assertTrue(destIntent.getCategories().contains(ANOTHER_TEST_CATEGORY)); 1494 assertFalse(destIntent.getCategories().contains(TEST_CATEGORY)); 1495 } 1496 1497 /** 1498 * Test that fillIn adds categories when {@link Intent#FILL_IN_CATEGORIES} flag is set. 1499 */ 1500 public void testFillIn_categoryOverride() { 1501 Intent sourceIntent = new Intent(); 1502 Intent destIntent = new Intent(); 1503 sourceIntent = new Intent(); 1504 sourceIntent.addCategory(TEST_CATEGORY); 1505 destIntent.addCategory(ANOTHER_TEST_CATEGORY); 1506 1507 assertEquals(Intent.FILL_IN_CATEGORIES, destIntent.fillIn(sourceIntent, Intent.FILL_IN_CATEGORIES)); 1508 assertEquals(1, destIntent.getCategories().size()); 1509 assertFalse(destIntent.getCategories().contains(ANOTHER_TEST_CATEGORY)); 1510 assertTrue(destIntent.getCategories().contains(TEST_CATEGORY)); 1511 } 1512 1513 /** 1514 * Test fillIn copies package. 1515 */ 1516 public void testFillIn_package() { 1517 Intent sourceIntent = new Intent(); 1518 Intent destIntent = new Intent(); 1519 sourceIntent.setPackage(TEST_PACKAGE); 1520 assertEquals(Intent.FILL_IN_PACKAGE, destIntent.fillIn(sourceIntent, 0)); 1521 assertEquals(TEST_PACKAGE, destIntent.getPackage()); 1522 } 1523 1524 /** 1525 * Test fillIn does not copy package by default when already set. 1526 */ 1527 public void testFillIn_packageSet() { 1528 Intent sourceIntent = new Intent(); 1529 Intent destIntent = new Intent(); 1530 sourceIntent.setPackage(TEST_PACKAGE); 1531 destIntent.setPackage(ANOTHER_TEST_PACKAGE); 1532 assertEquals(0, destIntent.fillIn(sourceIntent, 0)); 1533 assertEquals(ANOTHER_TEST_PACKAGE, destIntent.getPackage()); 1534 } 1535 1536 /** 1537 * Test that fillIn overrides package when {@link Intent#FILL_IN_PACKAGE} flag is set. 1538 */ 1539 public void testFillIn_packageOverride() { 1540 Intent sourceIntent = new Intent(); 1541 Intent destIntent = new Intent(); 1542 sourceIntent.setPackage(TEST_PACKAGE); 1543 destIntent.setPackage(ANOTHER_TEST_PACKAGE); 1544 assertEquals(Intent.FILL_IN_PACKAGE, destIntent.fillIn(sourceIntent, Intent.FILL_IN_PACKAGE)); 1545 assertEquals(TEST_PACKAGE, destIntent.getPackage()); 1546 } 1547 1548 /** 1549 * Test that fillIn copies extras. 1550 */ 1551 public void testFillIn_extras() { 1552 Intent sourceIntent = new Intent(); 1553 Intent destIntent = new Intent(); 1554 final Bundle bundle = new Bundle(); 1555 bundle.putBoolean(TEST_EXTRA_NAME, true); 1556 sourceIntent.putExtras(bundle); 1557 assertEquals(0, destIntent.fillIn(sourceIntent, 0)); 1558 assertTrue(destIntent.getExtras().getBoolean(TEST_EXTRA_NAME)); 1559 } 1560 1561 public void testGetExtras() { 1562 assertNull(mIntent.getExtras()); 1563 final String expected = "testString"; 1564 mIntent.putExtra(TEST_EXTRA_NAME, expected); 1565 assertNotNull(mIntent.getExtras()); 1566 assertEquals(expected, mIntent.getExtras().getString(TEST_EXTRA_NAME)); 1567 } 1568 1569 public void testGetBooleanExtra() { 1570 assertFalse(mIntent.getBooleanExtra(TEST_EXTRA_NAME, false)); 1571 mIntent.putExtra(TEST_EXTRA_NAME, true); 1572 assertTrue(mIntent.getBooleanExtra(TEST_EXTRA_NAME, false)); 1573 mIntent.putExtra(TEST_EXTRA_NAME, false); 1574 assertFalse(mIntent.getBooleanExtra(TEST_EXTRA_NAME, false)); 1575 } 1576 1577 public void testGetFloatExtra() { 1578 float expected = 2f; 1579 assertEquals(1f, mIntent.getFloatExtra(TEST_EXTRA_NAME, 1f)); 1580 mIntent.putExtra(TEST_EXTRA_NAME, expected); 1581 assertEquals(expected, mIntent.getFloatExtra(TEST_EXTRA_NAME, 1f)); 1582 } 1583 1584 public void testGetShortArrayExtra() { 1585 final short[] expected = { 1, 2, 3 }; 1586 mIntent.putExtra(TEST_EXTRA_NAME, expected); 1587 assertEquals(expected, mIntent.getShortArrayExtra(TEST_EXTRA_NAME)); 1588 } 1589 1590 public void testGetStringArrayExtra() { 1591 final String[] expected = { "1d", "2d", "3d" }; 1592 mIntent.putExtra(TEST_EXTRA_NAME, expected); 1593 assertEquals(expected, mIntent.getStringArrayExtra(TEST_EXTRA_NAME)); 1594 } 1595 1596 public void testGetCharSequenceArrayExtra() { 1597 final String[] expected = { "1d", "2d", "3d" }; 1598 mIntent.putExtra(TEST_EXTRA_NAME, expected); 1599 assertEquals(expected, mIntent.getCharSequenceArrayExtra(TEST_EXTRA_NAME)); 1600 } 1601 1602 public void testGetByteArrayExtra() { 1603 final byte[] expected = TEST_ACTION.getBytes(); 1604 mIntent.putExtra(TEST_EXTRA_NAME, expected); 1605 assertEquals(expected, mIntent.getByteArrayExtra(TEST_EXTRA_NAME)); 1606 } 1607 1608 public void testHasFileDescriptors() { 1609 Bundle bundle = mIntent.getExtras(); 1610 assertEquals(bundle != null && bundle.hasFileDescriptors(), mIntent.hasFileDescriptors()); 1611 final byte[] expected = TEST_ACTION.getBytes(); 1612 mIntent.putExtra(TEST_EXTRA_NAME, expected); 1613 bundle = mIntent.getExtras(); 1614 assertEquals(bundle != null && bundle.hasFileDescriptors(), mIntent.hasFileDescriptors()); 1615 } 1616 1617 public void testGetBooleanArrayExtra() { 1618 final boolean[] expected = { true, true, false }; 1619 mIntent.putExtra(TEST_EXTRA_NAME, expected); 1620 assertEquals(expected, mIntent.getBooleanArrayExtra(TEST_EXTRA_NAME)); 1621 } 1622 1623 public void testGetLongExtra() { 1624 final long expected = 2l; 1625 assertEquals(1l, mIntent.getLongExtra(TEST_EXTRA_NAME, 1l)); 1626 mIntent.putExtra(TEST_EXTRA_NAME, expected); 1627 assertEquals(expected, mIntent.getLongExtra(TEST_EXTRA_NAME, 1l)); 1628 } 1629 1630 public void testRemoveCategory() { 1631 assertNull(mIntent.getCategories()); 1632 mIntent.addCategory(TEST_CATEGORY); 1633 assertNotNull(mIntent.getCategories()); 1634 assertEquals(1, mIntent.getCategories().size()); 1635 assertEquals(TEST_CATEGORY, (String) (mIntent.getCategories().toArray()[0])); 1636 mIntent.removeCategory(TEST_CATEGORY); 1637 assertFalse(mIntent.hasCategory(TEST_CATEGORY)); 1638 } 1639 1640 public void testFilterEquals() { 1641 assertFalse(mIntent.filterEquals(null)); 1642 1643 Intent target = new Intent(); 1644 assertTrue(mIntent.filterEquals(target)); 1645 1646 target.setAction(TEST_ACTION); 1647 assertFalse(mIntent.filterEquals(target)); 1648 mIntent.setAction(TEST_ACTION + "test"); 1649 assertFalse(mIntent.filterEquals(target)); 1650 mIntent.setAction(null); 1651 assertFalse(mIntent.filterEquals(target)); 1652 mIntent.setAction(TEST_ACTION); 1653 assertTrue(mIntent.filterEquals(target)); 1654 1655 target.setData(TEST_URI); 1656 assertFalse(mIntent.filterEquals(target)); 1657 mIntent.setData(Uri.parse("myURI")); 1658 assertFalse(mIntent.filterEquals(target)); 1659 mIntent.setData(null); 1660 assertFalse(mIntent.filterEquals(target)); 1661 mIntent.setData(TEST_URI); 1662 assertTrue(mIntent.filterEquals(target)); 1663 1664 target.setType(TEST_TYPE); 1665 assertFalse(mIntent.filterEquals(target)); 1666 mIntent.setType(TEST_TYPE + "test"); 1667 assertFalse(mIntent.filterEquals(target)); 1668 mIntent.setType(null); 1669 assertFalse(mIntent.filterEquals(target)); 1670 mIntent.setType(TEST_TYPE); 1671 assertTrue(mIntent.filterEquals(target)); 1672 1673 target.setComponent(mComponentName); 1674 assertFalse(mIntent.filterEquals(target)); 1675 mIntent.setComponent(new ComponentName(mContext, MockReceiver.class)); 1676 assertFalse(mIntent.filterEquals(target)); 1677 mIntent.setComponent(null); 1678 assertFalse(mIntent.filterEquals(target)); 1679 mIntent.setComponent(mComponentName); 1680 assertTrue(mIntent.filterEquals(target)); 1681 1682 target.addCategory(TEST_CATEGORY); 1683 assertFalse(mIntent.filterEquals(target)); 1684 mIntent.addCategory(TEST_CATEGORY + "test"); 1685 assertFalse(mIntent.filterEquals(target)); 1686 mIntent.addCategory(TEST_CATEGORY); 1687 assertFalse(mIntent.filterEquals(target)); 1688 } 1689 1690 public void testPutExtras1() { 1691 final Intent intent = new Intent(); 1692 mIntent.putExtras(intent); 1693 assertEquals(intent.getExtras(), mIntent.getExtras()); 1694 intent.putExtra("test2", true); 1695 mIntent.putExtras(intent); 1696 assertEquals(intent.getExtras().toString(), mIntent.getExtras().toString()); 1697 } 1698 1699 public void testPutExtras2() { 1700 final Bundle bundle = new Bundle(); 1701 mIntent.putExtras(bundle); 1702 assertEquals(0, mIntent.getExtras().size()); 1703 String expected = "testString"; 1704 bundle.putString(TEST_EXTRA_NAME, expected); 1705 mIntent.putExtras(bundle); 1706 assertEquals(1, mIntent.getExtras().size()); 1707 assertEquals(expected, mIntent.getExtras().getString(TEST_EXTRA_NAME)); 1708 mIntent.putExtra(TEST_EXTRA_NAME, bundle); 1709 assertEquals(bundle, mIntent.getBundleExtra(TEST_EXTRA_NAME)); 1710 } 1711 1712 public void testGetByteExtra() { 1713 final byte expected = Byte.valueOf("1"); 1714 mIntent.putExtra(TEST_EXTRA_NAME, expected); 1715 assertEquals(expected, mIntent.getByteExtra(TEST_EXTRA_NAME, Byte.valueOf("1"))); 1716 } 1717 1718 public void testGetSerializableExtra() { 1719 TestSerializable expected = new TestSerializable(); 1720 expected.Name = "testName"; 1721 mIntent.putExtra(TEST_EXTRA_NAME, expected); 1722 assertEquals(expected, mIntent.getSerializableExtra(TEST_EXTRA_NAME)); 1723 TestSerializable target = (TestSerializable) mIntent.getSerializableExtra(TEST_EXTRA_NAME); 1724 assertEquals(expected.Name, target.Name); 1725 } 1726 1727 public void testReplaceExtras() { 1728 Bundle extras = new Bundle(); 1729 String bundleKey = "testKey"; 1730 String bundleValue = "testValue"; 1731 extras.putString(bundleKey, bundleValue); 1732 1733 Intent intent = mIntent.replaceExtras(extras); 1734 assertSame(mIntent, intent); 1735 String actualValue = intent.getExtras().getString(bundleKey); 1736 assertEquals(bundleValue, actualValue); 1737 1738 Intent src = new Intent(); 1739 String intentName = "srcName"; 1740 String intentValue = "srcValue"; 1741 src.putExtra(intentName, intentValue); 1742 1743 intent = mIntent.replaceExtras(src); 1744 assertSame(mIntent, intent); 1745 actualValue = intent.getExtras().getString(intentName); 1746 assertEquals(intentValue, actualValue); 1747 } 1748 1749 public void testNormalizeMimeType() { 1750 assertEquals(null, Intent.normalizeMimeType(null)); 1751 assertEquals("text/plain", Intent.normalizeMimeType("text/plain; charset=UTF-8")); 1752 assertEquals("text/x-vcard", Intent.normalizeMimeType("text/x-vCard")); 1753 assertEquals("foo/bar", Intent.normalizeMimeType(" foo/bar ")); 1754 } 1755 1756 private static class TestSerializable implements Serializable { 1757 static final long serialVersionUID = 1l; 1758 public String Name; 1759 } 1760 } 1761