133873d2b41a5cd2597b20a4e88eb8942944c0f23Tyler Schultzpackage com.xtremelabs.robolectric.shadows;
26eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
36fb1776c3dd0820074e31a750d991ce69a0597d2Christian Williams & Ryan Richardimport android.content.ComponentName;
41f217d5155921f43c88908c0939f05880901c249Joe Moore & Tyler Schultzimport android.content.Context;
51f217d5155921f43c88908c0939f05880901c249Joe Moore & Tyler Schultzimport android.content.Intent;
603837114e33fda10c8e1394543d909aebfe15cabJoe Moore & Tyler Schultzimport android.net.Uri;
71f217d5155921f43c88908c0939f05880901c249Joe Moore & Tyler Schultzimport android.os.Bundle;
86fb5d4828313a611b33b9bdd0cc6152d51b67347Zhihong Xuimport android.os.Parcel;
91f217d5155921f43c88908c0939f05880901c249Joe Moore & Tyler Schultzimport android.os.Parcelable;
10064f86b8dad1300e99457c9672a9ebbb6694ae4eJon Boekenoogenimport android.os.Parcelable.Creator;
11064f86b8dad1300e99457c9672a9ebbb6694ae4eJon Boekenoogen
1275d564ab2b02cbe8a0d8cb33779530f72ea813abChristian Williams & Ryan Richardimport com.xtremelabs.robolectric.Robolectric;
1322c22c9aa4ca68c2deac6164edc1d82bc9645310Christian Williams & Phil Goodwinimport com.xtremelabs.robolectric.internal.Implementation;
1422c22c9aa4ca68c2deac6164edc1d82bc9645310Christian Williams & Phil Goodwinimport com.xtremelabs.robolectric.internal.Implements;
1522c22c9aa4ca68c2deac6164edc1d82bc9645310Christian Williams & Phil Goodwinimport com.xtremelabs.robolectric.internal.RealObject;
16a2043a8fff01f3e2d9a5e30dd1cf5fb6a5342f4dTyler Schultzimport com.xtremelabs.robolectric.util.Join;
176eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
1873030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Planteimport java.io.*;
1973030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Planteimport java.util.*;
20af7d6ec8c4d4701125eca89b4a95fdb63aa8a8ebHarry Ugol & Tyler Schultz
21214518e4959583a61690b22306133ee923f625e0Tyler Schultzimport static android.content.Intent.*;
22a8486da7c7a0b6a10e943c55992f34d9c256456dChristian Williamsimport static com.xtremelabs.robolectric.Robolectric.shadowOf;
23a8486da7c7a0b6a10e943c55992f34d9c256456dChristian Williams
246eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz@SuppressWarnings({"UnusedDeclaration"})
250b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher@Implements(Intent.class)
26afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williamspublic class ShadowIntent {
2775d564ab2b02cbe8a0d8cb33779530f72ea813abChristian Williams & Ryan Richard    @RealObject private Intent realIntent;
28e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz
2951cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen    private final Bundle extras = new Bundle();
3075d564ab2b02cbe8a0d8cb33779530f72ea813abChristian Williams & Ryan Richard    private String action;
3175d564ab2b02cbe8a0d8cb33779530f72ea813abChristian Williams & Ryan Richard    private ComponentName componentName;
32b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams    private String type;
3375d564ab2b02cbe8a0d8cb33779530f72ea813abChristian Williams & Ryan Richard    private Uri data;
3475d564ab2b02cbe8a0d8cb33779530f72ea813abChristian Williams & Ryan Richard    private int flags;
35eb645dd6f075c4c7d6d61193fde416739adb7fc1Gregg Van Hove & Phil Goodwin    private Class<?> intentClass;
3672ca49dced475c55926dbad730c306184bb6a68eDavid Farber & Ryan Richard    private String packageName;
3751cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen    private final Set<String> categories = new HashSet<String>();
38e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz
39e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz    public void __constructor__(Context packageContext, Class cls) {
406fb1776c3dd0820074e31a750d991ce69a0597d2Christian Williams & Ryan Richard        componentName = new ComponentName(packageContext, cls);
41a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz        intentClass = cls;
42e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz    }
43e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz
44dcd89b431a3a852aec1f7ec2f5f60111f3800656Christian Williams & Joe Moore    public void __constructor__(String action, Uri uri) {
45dcd89b431a3a852aec1f7ec2f5f60111f3800656Christian Williams & Joe Moore        this.action = action;
46dcd89b431a3a852aec1f7ec2f5f60111f3800656Christian Williams & Joe Moore        data = uri;
47dcd89b431a3a852aec1f7ec2f5f60111f3800656Christian Williams & Joe Moore    }
48dcd89b431a3a852aec1f7ec2f5f60111f3800656Christian Williams & Joe Moore
494cedbc6959d784ba9cb59e0e7f4e59460f3d5075Christian Williams & Ryan Richard    public void __constructor__(String action) {
504cedbc6959d784ba9cb59e0e7f4e59460f3d5075Christian Williams & Ryan Richard        __constructor__(action, null);
514cedbc6959d784ba9cb59e0e7f4e59460f3d5075Christian Williams & Ryan Richard    }
524cedbc6959d784ba9cb59e0e7f4e59460f3d5075Christian Williams & Ryan Richard
53c3833a7a3f753b82d5b18e7d583704f08137477dPhil Goodwin & Ryan Richard    public void __constructor__(Intent intent) {
54c3833a7a3f753b82d5b18e7d583704f08137477dPhil Goodwin & Ryan Richard        ShadowIntent other = shadowOf(intent);
55c3833a7a3f753b82d5b18e7d583704f08137477dPhil Goodwin & Ryan Richard        extras.putAll(other.extras);
56c3833a7a3f753b82d5b18e7d583704f08137477dPhil Goodwin & Ryan Richard        action = other.action;
57c3833a7a3f753b82d5b18e7d583704f08137477dPhil Goodwin & Ryan Richard        componentName = other.componentName;
58c3833a7a3f753b82d5b18e7d583704f08137477dPhil Goodwin & Ryan Richard        type = other.type;
59c3833a7a3f753b82d5b18e7d583704f08137477dPhil Goodwin & Ryan Richard        data = other.data;
60c3833a7a3f753b82d5b18e7d583704f08137477dPhil Goodwin & Ryan Richard        flags = other.flags;
61c3833a7a3f753b82d5b18e7d583704f08137477dPhil Goodwin & Ryan Richard        intentClass = other.intentClass;
62c3833a7a3f753b82d5b18e7d583704f08137477dPhil Goodwin & Ryan Richard        packageName = other.packageName;
63c3833a7a3f753b82d5b18e7d583704f08137477dPhil Goodwin & Ryan Richard        categories.addAll(other.categories);
64c3833a7a3f753b82d5b18e7d583704f08137477dPhil Goodwin & Ryan Richard    }
65c3833a7a3f753b82d5b18e7d583704f08137477dPhil Goodwin & Ryan Richard
66de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams    @Implementation
67214518e4959583a61690b22306133ee923f625e0Tyler Schultz    public static Intent createChooser(Intent target, CharSequence title) {
68214518e4959583a61690b22306133ee923f625e0Tyler Schultz        Intent intent = new Intent(Intent.ACTION_CHOOSER);
69214518e4959583a61690b22306133ee923f625e0Tyler Schultz        intent.putExtra(Intent.EXTRA_INTENT, target);
70214518e4959583a61690b22306133ee923f625e0Tyler Schultz        if (title != null) {
71214518e4959583a61690b22306133ee923f625e0Tyler Schultz            intent.putExtra(Intent.EXTRA_TITLE, title);
72214518e4959583a61690b22306133ee923f625e0Tyler Schultz        }
73214518e4959583a61690b22306133ee923f625e0Tyler Schultz        return intent;
74214518e4959583a61690b22306133ee923f625e0Tyler Schultz    }
75214518e4959583a61690b22306133ee923f625e0Tyler Schultz
76214518e4959583a61690b22306133ee923f625e0Tyler Schultz    @Implementation
77e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz    public Intent setAction(String action) {
78e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz        this.action = action;
79e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz        return realIntent;
80e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz    }
816eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
82de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams    @Implementation
831f217d5155921f43c88908c0939f05880901c249Joe Moore & Tyler Schultz    public String getAction() {
841f217d5155921f43c88908c0939f05880901c249Joe Moore & Tyler Schultz        return action;
851f217d5155921f43c88908c0939f05880901c249Joe Moore & Tyler Schultz    }
8603837114e33fda10c8e1394543d909aebfe15cabJoe Moore & Tyler Schultz
87de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams    @Implementation
88b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams    public Intent setType(String type) {
89b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams        this.type = type;
90eb1008a3b163f0e330cd74fa628ce0004969e673Phil Goodwin & Rick Kawala        this.data = null;
91eb1008a3b163f0e330cd74fa628ce0004969e673Phil Goodwin & Rick Kawala        return realIntent;
92eb1008a3b163f0e330cd74fa628ce0004969e673Phil Goodwin & Rick Kawala    }
93eb1008a3b163f0e330cd74fa628ce0004969e673Phil Goodwin & Rick Kawala
94eb1008a3b163f0e330cd74fa628ce0004969e673Phil Goodwin & Rick Kawala    @Implementation
95eb1008a3b163f0e330cd74fa628ce0004969e673Phil Goodwin & Rick Kawala    public Intent setDataAndType(Uri data, String type) {
96eb1008a3b163f0e330cd74fa628ce0004969e673Phil Goodwin & Rick Kawala        this.data = data;
97eb1008a3b163f0e330cd74fa628ce0004969e673Phil Goodwin & Rick Kawala        this.type = type;
98b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams        return realIntent;
99b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams    }
100b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams
101b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams    @Implementation
102b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams    public String getType() {
103b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams        return type;
104b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams    }
10551cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen
106c35bcd8d89b0dd74e6b0846beb47f0a6badc63c8Michael Portuesi    @Implementation
107c35bcd8d89b0dd74e6b0846beb47f0a6badc63c8Michael Portuesi    public Intent addCategory(String category) {
10856ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder        categories.add(category);
10956ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder        return realIntent;
110c35bcd8d89b0dd74e6b0846beb47f0a6badc63c8Michael Portuesi    }
11151cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen
112c35bcd8d89b0dd74e6b0846beb47f0a6badc63c8Michael Portuesi    @Implementation
113c35bcd8d89b0dd74e6b0846beb47f0a6badc63c8Michael Portuesi    public void removeCategory(String category) {
11456ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder        categories.remove(category);
115c35bcd8d89b0dd74e6b0846beb47f0a6badc63c8Michael Portuesi    }
11651cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen
117c35bcd8d89b0dd74e6b0846beb47f0a6badc63c8Michael Portuesi    @Implementation
118c35bcd8d89b0dd74e6b0846beb47f0a6badc63c8Michael Portuesi    public boolean hasCategory(String category) {
11956ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder        return categories.contains(category);
120c35bcd8d89b0dd74e6b0846beb47f0a6badc63c8Michael Portuesi    }
12151cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen
122c35bcd8d89b0dd74e6b0846beb47f0a6badc63c8Michael Portuesi    @Implementation
123c35bcd8d89b0dd74e6b0846beb47f0a6badc63c8Michael Portuesi    public Set<String> getCategories() {
12456ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder        return categories;
125c35bcd8d89b0dd74e6b0846beb47f0a6badc63c8Michael Portuesi    }
126b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams
127b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams    @Implementation
12872ca49dced475c55926dbad730c306184bb6a68eDavid Farber & Ryan Richard    public Intent setPackage(String packageName) {
12972ca49dced475c55926dbad730c306184bb6a68eDavid Farber & Ryan Richard        this.packageName = packageName;
13072ca49dced475c55926dbad730c306184bb6a68eDavid Farber & Ryan Richard        return realIntent;
13172ca49dced475c55926dbad730c306184bb6a68eDavid Farber & Ryan Richard    }
13272ca49dced475c55926dbad730c306184bb6a68eDavid Farber & Ryan Richard
13372ca49dced475c55926dbad730c306184bb6a68eDavid Farber & Ryan Richard    @Implementation
13472ca49dced475c55926dbad730c306184bb6a68eDavid Farber & Ryan Richard    public String getPackage() {
13572ca49dced475c55926dbad730c306184bb6a68eDavid Farber & Ryan Richard        return packageName;
13672ca49dced475c55926dbad730c306184bb6a68eDavid Farber & Ryan Richard    }
13772ca49dced475c55926dbad730c306184bb6a68eDavid Farber & Ryan Richard
13872ca49dced475c55926dbad730c306184bb6a68eDavid Farber & Ryan Richard    @Implementation
1393e7c90e4093dbb6b80b4f41861d3afa3f2f280bdJoe Moore & Phil Goodwin    public Uri getData() {
1403e7c90e4093dbb6b80b4f41861d3afa3f2f280bdJoe Moore & Phil Goodwin        return data;
1413e7c90e4093dbb6b80b4f41861d3afa3f2f280bdJoe Moore & Phil Goodwin    }
142eb645dd6f075c4c7d6d61193fde416739adb7fc1Gregg Van Hove & Phil Goodwin
14347277624dc760bb2716ca43fa9302117cc591b63Michael Portuesi    @Implementation
144eb645dd6f075c4c7d6d61193fde416739adb7fc1Gregg Van Hove & Phil Goodwin    public Intent setClass(Context packageContext, Class<?> cls) {
145eb645dd6f075c4c7d6d61193fde416739adb7fc1Gregg Van Hove & Phil Goodwin        this.intentClass = cls;
146eb645dd6f075c4c7d6d61193fde416739adb7fc1Gregg Van Hove & Phil Goodwin        return realIntent;
14747277624dc760bb2716ca43fa9302117cc591b63Michael Portuesi    }
1483e7c90e4093dbb6b80b4f41861d3afa3f2f280bdJoe Moore & Phil Goodwin
1493e7c90e4093dbb6b80b4f41861d3afa3f2f280bdJoe Moore & Phil Goodwin    @Implementation
150af7d6ec8c4d4701125eca89b4a95fdb63aa8a8ebHarry Ugol & Tyler Schultz    public Intent setClassName(String packageName, String className) {
1516fb1776c3dd0820074e31a750d991ce69a0597d2Christian Williams & Ryan Richard        componentName = new ComponentName(packageName, className);
152f1599e62d961fb47b74d0500396187cc748e200cAaron VonderHaar & Chris Perry        try {
153f1599e62d961fb47b74d0500396187cc748e200cAaron VonderHaar & Chris Perry            this.intentClass = Class.forName(className);
154f1599e62d961fb47b74d0500396187cc748e200cAaron VonderHaar & Chris Perry        } catch (ClassNotFoundException e) {
155f1599e62d961fb47b74d0500396187cc748e200cAaron VonderHaar & Chris Perry            // ignore
156f1599e62d961fb47b74d0500396187cc748e200cAaron VonderHaar & Chris Perry        }
157af7d6ec8c4d4701125eca89b4a95fdb63aa8a8ebHarry Ugol & Tyler Schultz        return realIntent;
158af7d6ec8c4d4701125eca89b4a95fdb63aa8a8ebHarry Ugol & Tyler Schultz    }
159af7d6ec8c4d4701125eca89b4a95fdb63aa8a8ebHarry Ugol & Tyler Schultz
160de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams    @Implementation
16172ca49dced475c55926dbad730c306184bb6a68eDavid Farber & Ryan Richard    public Intent setClassName(Context packageContext, String className) {
16272ca49dced475c55926dbad730c306184bb6a68eDavid Farber & Ryan Richard        componentName = new ComponentName(packageContext.getPackageName(), className);
16372ca49dced475c55926dbad730c306184bb6a68eDavid Farber & Ryan Richard        return realIntent;
16472ca49dced475c55926dbad730c306184bb6a68eDavid Farber & Ryan Richard    }
16572ca49dced475c55926dbad730c306184bb6a68eDavid Farber & Ryan Richard
16672ca49dced475c55926dbad730c306184bb6a68eDavid Farber & Ryan Richard    @Implementation
16703837114e33fda10c8e1394543d909aebfe15cabJoe Moore & Tyler Schultz    public Intent setData(Uri data) {
16803837114e33fda10c8e1394543d909aebfe15cabJoe Moore & Tyler Schultz        this.data = data;
169eb1008a3b163f0e330cd74fa628ce0004969e673Phil Goodwin & Rick Kawala        this.type = null;
17003837114e33fda10c8e1394543d909aebfe15cabJoe Moore & Tyler Schultz        return realIntent;
17103837114e33fda10c8e1394543d909aebfe15cabJoe Moore & Tyler Schultz    }
17203837114e33fda10c8e1394543d909aebfe15cabJoe Moore & Tyler Schultz
173de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams    @Implementation
17475d564ab2b02cbe8a0d8cb33779530f72ea813abChristian Williams & Ryan Richard    public int getFlags() {
17575d564ab2b02cbe8a0d8cb33779530f72ea813abChristian Williams & Ryan Richard        return flags;
17675d564ab2b02cbe8a0d8cb33779530f72ea813abChristian Williams & Ryan Richard    }
17775d564ab2b02cbe8a0d8cb33779530f72ea813abChristian Williams & Ryan Richard
17875d564ab2b02cbe8a0d8cb33779530f72ea813abChristian Williams & Ryan Richard    @Implementation
1799092c542b0ddd74739bf100cddffd2d991911077Tyler Schultz    public Intent setFlags(int flags) {
18075d564ab2b02cbe8a0d8cb33779530f72ea813abChristian Williams & Ryan Richard        this.flags = flags;
1819092c542b0ddd74739bf100cddffd2d991911077Tyler Schultz        return realIntent;
18275d564ab2b02cbe8a0d8cb33779530f72ea813abChristian Williams & Ryan Richard    }
18351cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen
18475d564ab2b02cbe8a0d8cb33779530f72ea813abChristian Williams & Ryan Richard    @Implementation
1852be30fc6c9a761d9738c736685ff1b0db6b4d131Jan Berkel    public Intent addFlags(int flags) {
18656ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder        this.flags |= flags;
18756ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder        return realIntent;
1882be30fc6c9a761d9738c736685ff1b0db6b4d131Jan Berkel    }
1892be30fc6c9a761d9738c736685ff1b0db6b4d131Jan Berkel
1902be30fc6c9a761d9738c736685ff1b0db6b4d131Jan Berkel    @Implementation
191048ad2d82def96f61e36e9ae8eace000022a264csorack    public Intent putExtras(Bundle src) {
19251cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        extras.putAll(src);
193048ad2d82def96f61e36e9ae8eace000022a264csorack        return realIntent;
194048ad2d82def96f61e36e9ae8eace000022a264csorack    }
19551cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen
196048ad2d82def96f61e36e9ae8eace000022a264csorack    @Implementation
197f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips    public Intent putExtras(Intent src) {
198a8486da7c7a0b6a10e943c55992f34d9c256456dChristian Williams        ShadowIntent srcShadowIntent = shadowOf(src);
19951cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        extras.putAll(srcShadowIntent.extras);
200f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips        return realIntent;
201f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips    }
202f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips
203bbf6ae3d37d2303d8463094096ef0bb9906fd658Christian Williams    @Implementation
2046eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public Bundle getExtras() {
20551cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        return extras != null ? new Bundle(extras) : null;
2066eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
20751cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen
208de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams    @Implementation
2096fb1776c3dd0820074e31a750d991ce69a0597d2Christian Williams & Ryan Richard    public Intent putExtra(String key, int value) {
21051cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        extras.putInt(key, value);
2116fb1776c3dd0820074e31a750d991ce69a0597d2Christian Williams & Ryan Richard        return realIntent;
212c0c6b892cbf19922e445f6278321b94357acdc16Joe Moore & Tyler Schultz    }
213c0c6b892cbf19922e445f6278321b94357acdc16Joe Moore & Tyler Schultz
214de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams    @Implementation
215b8d6d9f0d4fb7f9d8fe4ecf3e3526b4aa1db0c7dJan Berkel    public Intent putExtra(String key, double value) {
21651cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        extras.putDouble(key, value);
217b8d6d9f0d4fb7f9d8fe4ecf3e3526b4aa1db0c7dJan Berkel        return realIntent;
218b8d6d9f0d4fb7f9d8fe4ecf3e3526b4aa1db0c7dJan Berkel    }
219b8d6d9f0d4fb7f9d8fe4ecf3e3526b4aa1db0c7dJan Berkel
220b8d6d9f0d4fb7f9d8fe4ecf3e3526b4aa1db0c7dJan Berkel    @Implementation
2216491deb5788e0a7b7372e27ccdd22e8765e83a48Jan Berkel    public Intent putExtra(String key, float value) {
22251cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        extras.putFloat(key, value);
2236491deb5788e0a7b7372e27ccdd22e8765e83a48Jan Berkel        return realIntent;
2246491deb5788e0a7b7372e27ccdd22e8765e83a48Jan Berkel    }
2256491deb5788e0a7b7372e27ccdd22e8765e83a48Jan Berkel
2266491deb5788e0a7b7372e27ccdd22e8765e83a48Jan Berkel    @Implementation
2276fb1776c3dd0820074e31a750d991ce69a0597d2Christian Williams & Ryan Richard    public Intent putExtra(String key, long value) {
22851cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        extras.putLong(key, value);
2296fb1776c3dd0820074e31a750d991ce69a0597d2Christian Williams & Ryan Richard        return realIntent;
2306eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
2316eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
232de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams    @Implementation
2336fb1776c3dd0820074e31a750d991ce69a0597d2Christian Williams & Ryan Richard    public Intent putExtra(String key, Serializable value) {
23451cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        extras.putSerializable(key, serializeCycle(value));
2356fb1776c3dd0820074e31a750d991ce69a0597d2Christian Williams & Ryan Richard        return realIntent;
2366eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
2376eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
238de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams    @Implementation
2396fb1776c3dd0820074e31a750d991ce69a0597d2Christian Williams & Ryan Richard    public Intent putExtra(String key, Parcelable value) {
24051cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        extras.putParcelable(key, value);
2416fb1776c3dd0820074e31a750d991ce69a0597d2Christian Williams & Ryan Richard        return realIntent;
242fbcb1c89ac5b25271d4fb33b64e15521c03da524Matt DuVall & Tyler Schultz    }
243fbcb1c89ac5b25271d4fb33b64e15521c03da524Matt DuVall & Tyler Schultz
244de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams    @Implementation
245a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    public Intent putExtra(String key, Parcelable[] value) {
24651cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        extras.putParcelableArray(key, value);
247a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz        return realIntent;
248a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    }
249a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz
250a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    @Implementation
2516fb1776c3dd0820074e31a750d991ce69a0597d2Christian Williams & Ryan Richard    public Intent putExtra(String key, String value) {
25251cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        extras.putString(key, value);
2536fb1776c3dd0820074e31a750d991ce69a0597d2Christian Williams & Ryan Richard        return realIntent;
2546eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
2556eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
256de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams    @Implementation
257b38fc2077a6ef0880426abc6bba8b10fb4a27933Yuan Mai    public Intent putExtra(String key, String[] value) {
25851cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        extras.putStringArray(key, value);
259b01474a3329222965d31068f5c33e59c6e6aa6a4Josh Lauer & Christian Williams        return realIntent;
260b01474a3329222965d31068f5c33e59c6e6aa6a4Josh Lauer & Christian Williams    }
26151cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen
262b01474a3329222965d31068f5c33e59c6e6aa6a4Josh Lauer & Christian Williams    @Implementation
263990d13551f7666b813ab84644291c5b37cfa4c58Logdog    public Intent putExtra(String key, Bundle value) {
26451cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        extras.putBundle(key, value);
265990d13551f7666b813ab84644291c5b37cfa4c58Logdog        return realIntent;
266990d13551f7666b813ab84644291c5b37cfa4c58Logdog    }
26751cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen
268990d13551f7666b813ab84644291c5b37cfa4c58Logdog    @Implementation
269b38fc2077a6ef0880426abc6bba8b10fb4a27933Yuan Mai    public Intent putExtra(String key, boolean value) {
27051cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        extras.putBoolean(key, value);
271b38fc2077a6ef0880426abc6bba8b10fb4a27933Yuan Mai        return realIntent;
272b38fc2077a6ef0880426abc6bba8b10fb4a27933Yuan Mai    }
273b38fc2077a6ef0880426abc6bba8b10fb4a27933Yuan Mai
274b38fc2077a6ef0880426abc6bba8b10fb4a27933Yuan Mai    @Implementation
27549c1a88482f79cea39c398b4c7759440bd69e968Sebastien Plisson    public Intent putExtra(String key, int[] value) {
27651cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        extras.putIntArray(key, value);
27749c1a88482f79cea39c398b4c7759440bd69e968Sebastien Plisson        return realIntent;
27849c1a88482f79cea39c398b4c7759440bd69e968Sebastien Plisson    }
27951cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen
28056ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder    @Implementation
28156ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder    public Intent putExtra(String key, long[] value) {
28251cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        extras.putLongArray(key, value);
28356ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder        return realIntent;
28456ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder    }
28549c1a88482f79cea39c398b4c7759440bd69e968Sebastien Plisson
28649c1a88482f79cea39c398b4c7759440bd69e968Sebastien Plisson    @Implementation
28749c1a88482f79cea39c398b4c7759440bd69e968Sebastien Plisson    public int[] getIntArrayExtra(String name) {
28851cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        return extras.getIntArray(name);
28949c1a88482f79cea39c398b4c7759440bd69e968Sebastien Plisson    }
29051cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen
29156ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder    @Implementation
29256ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder    public long[] getLongArrayExtra(String name) {
29351cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        return extras.getLongArray(name);
29456ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder    }
29549c1a88482f79cea39c398b4c7759440bd69e968Sebastien Plisson
29649c1a88482f79cea39c398b4c7759440bd69e968Sebastien Plisson    @Implementation
297b38fc2077a6ef0880426abc6bba8b10fb4a27933Yuan Mai    public boolean getBooleanExtra(String name, boolean defaultValue) {
29851cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        return extras.getBoolean(name, defaultValue);
299b38fc2077a6ef0880426abc6bba8b10fb4a27933Yuan Mai    }
300b38fc2077a6ef0880426abc6bba8b10fb4a27933Yuan Mai
301b38fc2077a6ef0880426abc6bba8b10fb4a27933Yuan Mai    @Implementation
302b38fc2077a6ef0880426abc6bba8b10fb4a27933Yuan Mai    public String[] getStringArrayExtra(String name) {
30351cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        return extras.getStringArray(name);
304b38fc2077a6ef0880426abc6bba8b10fb4a27933Yuan Mai    }
305b38fc2077a6ef0880426abc6bba8b10fb4a27933Yuan Mai
306b38fc2077a6ef0880426abc6bba8b10fb4a27933Yuan Mai    @Implementation
307b01474a3329222965d31068f5c33e59c6e6aa6a4Josh Lauer & Christian Williams    public Intent putExtra(String key, CharSequence value) {
30851cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        extras.putCharSequence(key, value);
309b01474a3329222965d31068f5c33e59c6e6aa6a4Josh Lauer & Christian Williams        return realIntent;
3106eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
31151cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen
312015b696fc090c9be4ce0f219f4c8a7b2c0a10702Michael Portuesi    @Implementation
313015b696fc090c9be4ce0f219f4c8a7b2c0a10702Michael Portuesi    public CharSequence getCharSequenceExtra(String name) {
31451cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        return extras.getCharSequence(name);
315015b696fc090c9be4ce0f219f4c8a7b2c0a10702Michael Portuesi    }
3166eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
317de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams    @Implementation
318f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips    public void putExtra(String key, byte[] value) {
31951cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        extras.putByteArray(key, value);
320f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips    }
32128307faed142337b147ba17851e24ad3535f36e4Glenn Jahnke & Michael Haddad
32228307faed142337b147ba17851e24ad3535f36e4Glenn Jahnke & Michael Haddad    @Implementation
32328307faed142337b147ba17851e24ad3535f36e4Glenn Jahnke & Michael Haddad    public Intent putStringArrayListExtra(String key, ArrayList<String> value) {
32451cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        extras.putStringArrayList(key, value);
32528307faed142337b147ba17851e24ad3535f36e4Glenn Jahnke & Michael Haddad        return realIntent;
32628307faed142337b147ba17851e24ad3535f36e4Glenn Jahnke & Michael Haddad    }
32728307faed142337b147ba17851e24ad3535f36e4Glenn Jahnke & Michael Haddad
32831bb03584315509be6fa21299fbef7dc24a202f6adriancowham    @Implementation
32941d4f21d0192e327046cac0b881cf8f437189140Jan Berkel    public ArrayList<String> getStringArrayListExtra(String name) {
33051cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        return extras.getStringArrayList(name);
33141d4f21d0192e327046cac0b881cf8f437189140Jan Berkel    }
33251cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen
3338e477be24e84c02459a26c616641065fe379ec05Chris Perry    @Implementation
3348e477be24e84c02459a26c616641065fe379ec05Chris Perry    public Intent putIntegerArrayListExtra(String key, ArrayList<Integer> value) {
33551cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        extras.putIntegerArrayList(key, value);
3368e477be24e84c02459a26c616641065fe379ec05Chris Perry        return realIntent;
3378e477be24e84c02459a26c616641065fe379ec05Chris Perry    }
3388e477be24e84c02459a26c616641065fe379ec05Chris Perry
3398e477be24e84c02459a26c616641065fe379ec05Chris Perry    @Implementation
3408e477be24e84c02459a26c616641065fe379ec05Chris Perry    public ArrayList<Integer> getIntegerArrayListExtra(String name) {
34151cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        return extras.getIntegerArrayList(name);
3428e477be24e84c02459a26c616641065fe379ec05Chris Perry    }
34341d4f21d0192e327046cac0b881cf8f437189140Jan Berkel
34441d4f21d0192e327046cac0b881cf8f437189140Jan Berkel    @Implementation
34531bb03584315509be6fa21299fbef7dc24a202f6adriancowham    public Intent putParcelableArrayListExtra(String key, ArrayList<Parcelable> value) {
34651cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        extras.putParcelableArrayList(key, value);
34756ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder        return realIntent;
34831bb03584315509be6fa21299fbef7dc24a202f6adriancowham    }
349f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips
350de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams    @Implementation
35131bb03584315509be6fa21299fbef7dc24a202f6adriancowham    public ArrayList<Parcelable> getParcelableArrayListExtra(String key) {
35251cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        return extras.getParcelableArrayList(key);
35331bb03584315509be6fa21299fbef7dc24a202f6adriancowham    }
35451cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen
35531bb03584315509be6fa21299fbef7dc24a202f6adriancowham    @Implementation
3567598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    public boolean hasExtra(String name) {
35756ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder        return extras.containsKey(name);
35856ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder    }
35901abb0af19b206cfce991e851b8b4f0a61ced433Graeme Duncan
36056ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder    @Implementation
361f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips    public String getStringExtra(String name) {
36251cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        return extras.getString(name);
363f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips    }
364f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips
365de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams    @Implementation
3666eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public Parcelable getParcelableExtra(String name) {
36751cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        return extras.getParcelable(name);
3686eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
3696eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
370de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams    @Implementation
371a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    public Parcelable[] getParcelableArrayExtra(String name) {
37251cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        return extras.getParcelableArray(name);
373a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    }
374a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz
375a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    @Implementation
376d23602293cf5a5f5a83788b4c5d94cdfe8d924beRyan Richard & Tyler Schultz    public int getIntExtra(String name, int defaultValue) {
37751cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        return extras.getInt(name, defaultValue);
378d23602293cf5a5f5a83788b4c5d94cdfe8d924beRyan Richard & Tyler Schultz    }
3795320a83d4cb11a8d94e06a5d638c54df4fab96acHarry Ugol
380de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams    @Implementation
381d11e8433a8cda65b5e1dbc72fdb08c5c89d4ae0fGlenn Jahnke & Rick Kawala    public long getLongExtra(String name, long defaultValue) {
38251cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        return extras.getLong(name, defaultValue);
383d11e8433a8cda65b5e1dbc72fdb08c5c89d4ae0fGlenn Jahnke & Rick Kawala    }
384b8d6d9f0d4fb7f9d8fe4ecf3e3526b4aa1db0c7dJan Berkel
385b8d6d9f0d4fb7f9d8fe4ecf3e3526b4aa1db0c7dJan Berkel    @Implementation
386b8d6d9f0d4fb7f9d8fe4ecf3e3526b4aa1db0c7dJan Berkel    public double getDoubleExtra(String name, double defaultValue) {
38751cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        return extras.getDouble(name, defaultValue);
388b8d6d9f0d4fb7f9d8fe4ecf3e3526b4aa1db0c7dJan Berkel    }
38951cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen
390990d13551f7666b813ab84644291c5b37cfa4c58Logdog    @Implementation
39151cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen    public Bundle getBundleExtra(String name) {
39251cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        return extras.getBundle(name);
393990d13551f7666b813ab84644291c5b37cfa4c58Logdog    }
394b8d6d9f0d4fb7f9d8fe4ecf3e3526b4aa1db0c7dJan Berkel
395d11e8433a8cda65b5e1dbc72fdb08c5c89d4ae0fGlenn Jahnke & Rick Kawala    @Implementation
3966491deb5788e0a7b7372e27ccdd22e8765e83a48Jan Berkel    public float getFloatExtra(String name, float defaultValue) {
39751cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        return extras.getFloat(name, defaultValue);
3986491deb5788e0a7b7372e27ccdd22e8765e83a48Jan Berkel    }
3996491deb5788e0a7b7372e27ccdd22e8765e83a48Jan Berkel
4006491deb5788e0a7b7372e27ccdd22e8765e83a48Jan Berkel    @Implementation
401f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips    public byte[] getByteArrayExtra(String name) {
40251cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        return extras.getByteArray(name);
403f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips    }
404dcd89b431a3a852aec1f7ec2f5f60111f3800656Christian Williams & Joe Moore
405de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams    @Implementation
4065320a83d4cb11a8d94e06a5d638c54df4fab96acHarry Ugol    public Serializable getSerializableExtra(String name) {
40751cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        return extras.getSerializable(name);
4085320a83d4cb11a8d94e06a5d638c54df4fab96acHarry Ugol    }
40951cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen
41001abb0af19b206cfce991e851b8b4f0a61ced433Graeme Duncan    @Implementation
41101abb0af19b206cfce991e851b8b4f0a61ced433Graeme Duncan    public void removeExtra(String name) {
41256ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder        extras.remove(name);
41301abb0af19b206cfce991e851b8b4f0a61ced433Graeme Duncan    }
4145320a83d4cb11a8d94e06a5d638c54df4fab96acHarry Ugol
415d25f4d2346b1e5c188f25dc2b6e254eade5337c2Phil Goodwin    @Implementation
416b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams    public Intent setComponent(ComponentName componentName) {
417b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams        this.componentName = componentName;
418b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams        return realIntent;
419b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams    }
420b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams
421b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams    @Implementation
422d25f4d2346b1e5c188f25dc2b6e254eade5337c2Phil Goodwin    public ComponentName getComponent() {
423daf25ec537e02fbf526434474a591f14c48218f5Phil Goodwin        return componentName;
424daf25ec537e02fbf526434474a591f14c48218f5Phil Goodwin    }
425daf25ec537e02fbf526434474a591f14c48218f5Phil Goodwin
426fb136d1fd04112d8941084739f26876ce8a3866dPhil Goodwin & Rick Kawala    @Implementation
427015b696fc090c9be4ce0f219f4c8a7b2c0a10702Michael Portuesi    public int fillIn(Intent otherIntent, int flags) {
42856ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder        int changes = 0;
42956ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder        ShadowIntent other = shadowOf(otherIntent);
43051cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen
43156ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder        if (other.action != null && (action == null || (flags & FILL_IN_ACTION) != 0)) {
43256ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder            action = other.action;
43356ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder            changes |= FILL_IN_ACTION;
43456ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder        }
43556ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder        if ((other.data != null || other.type != null)
43656ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder                && ((data == null && type == null) || (flags & FILL_IN_DATA) != 0)) {
43756ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder            data = other.data;
43856ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder            type = other.type;
43956ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder            changes |= FILL_IN_DATA;
44056ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder        }
44156ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder        if (!other.categories.isEmpty()
44256ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder                && (categories.isEmpty() || (flags & FILL_IN_CATEGORIES) != 0)) {
44356ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder            categories.addAll(other.categories);
44456ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder            changes |= FILL_IN_CATEGORIES;
44556ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder        }
44651cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen        if (other.packageName != null
44756ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder                && (packageName == null || (flags & FILL_IN_PACKAGE) != 0)) {
44856ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder            packageName = other.packageName;
44956ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder            changes |= FILL_IN_PACKAGE;
45056ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder        }
45156ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder        if (other.componentName != null && (flags & FILL_IN_COMPONENT) != 0) {
45256ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder            componentName = other.componentName;
45356ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder            changes |= FILL_IN_COMPONENT;
45456ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder        }
45551cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen
45656ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder        extras.putAll(other.extras);
45756ea1b1a733d39e0f13c3ba89885456a34047c63Christian Rackerseder        return changes;
458015b696fc090c9be4ce0f219f4c8a7b2c0a10702Michael Portuesi    }
459fb136d1fd04112d8941084739f26876ce8a3866dPhil Goodwin & Rick Kawala
46073030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante    @Implementation
46173030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante    // cribbed from Android source
46273030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante    public boolean filterEquals(Intent other) {
46373030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante        if (other == null) {
46473030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante            return false;
46573030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante        }
46673030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante        if (getAction() != other.getAction()) {
46773030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante            if (getAction() != null) {
46873030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante                if (!getAction().equals(other.getAction())) {
46973030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante                    return false;
47073030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante                }
47173030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante            } else {
47273030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante                if (!other.getAction().equals(getAction())) {
47373030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante                    return false;
47473030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante                }
47573030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante            }
47673030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante        }
47773030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante        if (getData() != other.getData()) {
47873030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante            if (getData() != null) {
47973030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante                if (!getData().equals(other.getData())) {
48073030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante                    return false;
48173030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante                }
48273030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante            } else {
48373030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante                if (!other.getData().equals(getData())) {
48473030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante                    return false;
48573030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante                }
48673030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante            }
48773030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante        }
48873030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante        if (getType() != other.getType()) {
48973030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante            if (getType() != null) {
49073030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante                if (!getType().equals(other.getType())) {
49173030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante                    return false;
49273030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante                }
49373030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante            } else {
49473030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante                if (!other.getType().equals(getType())) {
49573030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante                    return false;
49673030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante                }
49773030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante            }
49873030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante        }
49973030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante        if (getPackage() != other.getPackage()) {
50073030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante            if (getPackage() != null) {
50173030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante                if (!getPackage().equals(other.getPackage())) {
50273030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante                    return false;
50373030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante                }
50473030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante            } else {
50573030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante                if (!other.getPackage().equals(getPackage())) {
50673030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante                    return false;
50773030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante                }
50873030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante            }
50973030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante        }
51073030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante        if (getComponent() != other.getComponent()) {
51173030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante            if (getComponent() != null) {
51273030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante                if (!getComponent().equals(other.getComponent())) {
51373030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante                    return false;
51473030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante                }
51573030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante            } else {
51673030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante                if (!other.getComponent().equals(getComponent())) {
51773030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante                    return false;
51873030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante                }
51973030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante            }
52073030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante        }
52173030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante        if (getCategories() != other.getCategories()) {
52273030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante            if (getCategories() != null) {
52373030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante                if (!getCategories().equals(other.getCategories())) {
52473030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante                    return false;
52573030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante                }
52673030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante            } else {
52773030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante                if (!other.getCategories().equals(getCategories())) {
52873030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante                    return false;
52973030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante                }
53073030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante            }
53173030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante        }
53273030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante
53373030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante        return true;
53473030ff2e934582cbbec4b4b34632ecc72f1863fGlenn Jahnke & Phil Plante    }
53551cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen
536daf25ec537e02fbf526434474a591f14c48218f5Phil Goodwin    /**
537daf25ec537e02fbf526434474a591f14c48218f5Phil Goodwin     * Compares an {@code Intent} with a {@code ShadowIntent} (obtained via a call to
538daf25ec537e02fbf526434474a591f14c48218f5Phil Goodwin     * {@link Robolectric#shadowOf(android.content.Intent)})
539daf25ec537e02fbf526434474a591f14c48218f5Phil Goodwin     *
540daf25ec537e02fbf526434474a591f14c48218f5Phil Goodwin     * @param o a {@code ShadowIntent}
541daf25ec537e02fbf526434474a591f14c48218f5Phil Goodwin     * @return whether they are equivalent
542daf25ec537e02fbf526434474a591f14c48218f5Phil Goodwin     */
543daf25ec537e02fbf526434474a591f14c48218f5Phil Goodwin    @Deprecated
544afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams    public boolean realIntentEquals(ShadowIntent o) {
545dcd89b431a3a852aec1f7ec2f5f60111f3800656Christian Williams & Joe Moore        if (this == o) return true;
546dcd89b431a3a852aec1f7ec2f5f60111f3800656Christian Williams & Joe Moore        if (o == null || getClass() != o.getClass()) return false;
547dcd89b431a3a852aec1f7ec2f5f60111f3800656Christian Williams & Joe Moore
548dcd89b431a3a852aec1f7ec2f5f60111f3800656Christian Williams & Joe Moore        if (action != null ? !action.equals(o.action) : o.action != null) return false;
5496fb1776c3dd0820074e31a750d991ce69a0597d2Christian Williams & Ryan Richard        if (componentName != null ? !componentName.equals(o.componentName) : o.componentName != null)
550dcd89b431a3a852aec1f7ec2f5f60111f3800656Christian Williams & Joe Moore            return false;
551dcd89b431a3a852aec1f7ec2f5f60111f3800656Christian Williams & Joe Moore        if (data != null ? !data.equals(o.data) : o.data != null) return false;
552dcd89b431a3a852aec1f7ec2f5f60111f3800656Christian Williams & Joe Moore        if (extras != null ? !extras.equals(o.extras) : o.extras != null) return false;
553b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams        if (type != null ? !type.equals(o.type) : o.type != null) return false;
554e955bad0fcce60545a0d3ee54ca3006493947518Michael Portuesi        if (categories != null ? !categories.equals(o.categories) : o.categories != null) return false;
555dcd89b431a3a852aec1f7ec2f5f60111f3800656Christian Williams & Joe Moore
556dcd89b431a3a852aec1f7ec2f5f60111f3800656Christian Williams & Joe Moore        return true;
5575320a83d4cb11a8d94e06a5d638c54df4fab96acHarry Ugol    }
5585320a83d4cb11a8d94e06a5d638c54df4fab96acHarry Ugol
559a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    @Override
560a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    @Implementation
561b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams    public int hashCode() {
562b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams        int result = extras != null ? extras.hashCode() : 0;
563b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams        result = 31 * result + (action != null ? action.hashCode() : 0);
564b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams        result = 31 * result + (componentName != null ? componentName.hashCode() : 0);
565b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams        result = 31 * result + (data != null ? data.hashCode() : 0);
566b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams        result = 31 * result + (type != null ? type.hashCode() : 0);
567b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams        result = 31 * result + flags;
568b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams        return result;
569b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams    }
57051cda5c5f3f81b63c168cf1574ec0c90a7b99abfJon Boekenoogen
571a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    @Override
572a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    @Implementation
573b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams    public boolean equals(Object o) {
574b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams        if (!(o instanceof Intent)) return false;
575b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams        return realIntentEquals(shadowOf((Intent) o));
576b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams    }
577b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams
578daf25ec537e02fbf526434474a591f14c48218f5Phil Goodwin    /**
579daf25ec537e02fbf526434474a591f14c48218f5Phil Goodwin     * Non-Android accessor that returns the {@code Class} object set by
580daf25ec537e02fbf526434474a591f14c48218f5Phil Goodwin     * {@link #setClass(android.content.Context, Class)}
581daf25ec537e02fbf526434474a591f14c48218f5Phil Goodwin     *
582daf25ec537e02fbf526434474a591f14c48218f5Phil Goodwin     * @return the {@code Class} object set by
583b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams     *         {@link #setClass(android.content.Context, Class)}
584daf25ec537e02fbf526434474a591f14c48218f5Phil Goodwin     */
585daf25ec537e02fbf526434474a591f14c48218f5Phil Goodwin    public Class<?> getIntentClass() {
586daf25ec537e02fbf526434474a591f14c48218f5Phil Goodwin        return intentClass;
5875320a83d4cb11a8d94e06a5d638c54df4fab96acHarry Ugol    }
58808a7328fa8fb47a682db59e53189b067b6374411Christian Williams & Tyler Schultz
589a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    @Override
590a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    @Implementation
59108a7328fa8fb47a682db59e53189b067b6374411Christian Williams & Tyler Schultz    public String toString() {
59208a7328fa8fb47a682db59e53189b067b6374411Christian Williams & Tyler Schultz        return "Intent{" +
59308a7328fa8fb47a682db59e53189b067b6374411Christian Williams & Tyler Schultz                Join.join(
59408a7328fa8fb47a682db59e53189b067b6374411Christian Williams & Tyler Schultz                        ", ",
5956fb1776c3dd0820074e31a750d991ce69a0597d2Christian Williams & Ryan Richard                        ifWeHave(componentName, "componentName"),
59608a7328fa8fb47a682db59e53189b067b6374411Christian Williams & Tyler Schultz                        ifWeHave(action, "action"),
59708a7328fa8fb47a682db59e53189b067b6374411Christian Williams & Tyler Schultz                        ifWeHave(extras, "extras"),
598b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams                        ifWeHave(data, "data"),
599b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams                        ifWeHave(type, "type")
60008a7328fa8fb47a682db59e53189b067b6374411Christian Williams & Tyler Schultz                ) +
60108a7328fa8fb47a682db59e53189b067b6374411Christian Williams & Tyler Schultz                '}';
60208a7328fa8fb47a682db59e53189b067b6374411Christian Williams & Tyler Schultz    }
603eb645dd6f075c4c7d6d61193fde416739adb7fc1Gregg Van Hove & Phil Goodwin
6046fb5d4828313a611b33b9bdd0cc6152d51b67347Zhihong Xu    @Implementation
6056fb5d4828313a611b33b9bdd0cc6152d51b67347Zhihong Xu    public void writeToParcel(Parcel out, int flags) {
606f139aa4fee979823b0a806347f64a08a6a2477bbZhihong Xu        out.writeString(action);
607f139aa4fee979823b0a806347f64a08a6a2477bbZhihong Xu        if (data != null) {
608f139aa4fee979823b0a806347f64a08a6a2477bbZhihong Xu            out.writeInt(1);
609f139aa4fee979823b0a806347f64a08a6a2477bbZhihong Xu            Uri.writeToParcel(out, data);
610f139aa4fee979823b0a806347f64a08a6a2477bbZhihong Xu        } else {
611064f86b8dad1300e99457c9672a9ebbb6694ae4eJon Boekenoogen            out.writeInt(-1);
612f139aa4fee979823b0a806347f64a08a6a2477bbZhihong Xu        }
613f139aa4fee979823b0a806347f64a08a6a2477bbZhihong Xu        out.writeString(type);
614f139aa4fee979823b0a806347f64a08a6a2477bbZhihong Xu        out.writeInt(flags);
615f139aa4fee979823b0a806347f64a08a6a2477bbZhihong Xu        out.writeString(packageName);
616f139aa4fee979823b0a806347f64a08a6a2477bbZhihong Xu        ComponentName.writeToParcel(componentName, out);
617f139aa4fee979823b0a806347f64a08a6a2477bbZhihong Xu        out.writeInt(categories.size());
618064f86b8dad1300e99457c9672a9ebbb6694ae4eJon Boekenoogen
619f139aa4fee979823b0a806347f64a08a6a2477bbZhihong Xu        for (String category : categories) {
620f139aa4fee979823b0a806347f64a08a6a2477bbZhihong Xu            out.writeString(category);
621f139aa4fee979823b0a806347f64a08a6a2477bbZhihong Xu        }
622f139aa4fee979823b0a806347f64a08a6a2477bbZhihong Xu        out.writeBundle(extras);
6236fb5d4828313a611b33b9bdd0cc6152d51b67347Zhihong Xu    }
6246fb5d4828313a611b33b9bdd0cc6152d51b67347Zhihong Xu
6256fb5d4828313a611b33b9bdd0cc6152d51b67347Zhihong Xu    @Implementation
6266fb5d4828313a611b33b9bdd0cc6152d51b67347Zhihong Xu    public void readFromParcel(Parcel in) {
627f139aa4fee979823b0a806347f64a08a6a2477bbZhihong Xu        setAction(in.readString());
628064f86b8dad1300e99457c9672a9ebbb6694ae4eJon Boekenoogen        if (in.readInt() == 1) {
629f139aa4fee979823b0a806347f64a08a6a2477bbZhihong Xu            data = Uri.CREATOR.createFromParcel(in);
630f139aa4fee979823b0a806347f64a08a6a2477bbZhihong Xu        }
631f139aa4fee979823b0a806347f64a08a6a2477bbZhihong Xu        type = in.readString();
632f139aa4fee979823b0a806347f64a08a6a2477bbZhihong Xu        flags = in.readInt();
633f139aa4fee979823b0a806347f64a08a6a2477bbZhihong Xu        packageName = in.readString();
634f139aa4fee979823b0a806347f64a08a6a2477bbZhihong Xu        componentName = ComponentName.readFromParcel(in);
635f139aa4fee979823b0a806347f64a08a6a2477bbZhihong Xu        int N = in.readInt();
636f139aa4fee979823b0a806347f64a08a6a2477bbZhihong Xu        for (int i = 0; i < N; i++) {
637f139aa4fee979823b0a806347f64a08a6a2477bbZhihong Xu            categories.add(in.readString().intern());
638f139aa4fee979823b0a806347f64a08a6a2477bbZhihong Xu        }
639f139aa4fee979823b0a806347f64a08a6a2477bbZhihong Xu        extras.putAll(in.readBundle());
6406fb5d4828313a611b33b9bdd0cc6152d51b67347Zhihong Xu    }
6416fb5d4828313a611b33b9bdd0cc6152d51b67347Zhihong Xu
642daf25ec537e02fbf526434474a591f14c48218f5Phil Goodwin    private Serializable serializeCycle(Serializable serializable) {
643daf25ec537e02fbf526434474a591f14c48218f5Phil Goodwin        try {
644daf25ec537e02fbf526434474a591f14c48218f5Phil Goodwin            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
645daf25ec537e02fbf526434474a591f14c48218f5Phil Goodwin            ObjectOutputStream output = new ObjectOutputStream(byteArrayOutputStream);
646daf25ec537e02fbf526434474a591f14c48218f5Phil Goodwin            output.writeObject(serializable);
647daf25ec537e02fbf526434474a591f14c48218f5Phil Goodwin            output.close();
648daf25ec537e02fbf526434474a591f14c48218f5Phil Goodwin
649daf25ec537e02fbf526434474a591f14c48218f5Phil Goodwin            byte[] bytes = byteArrayOutputStream.toByteArray();
650daf25ec537e02fbf526434474a591f14c48218f5Phil Goodwin            ObjectInputStream input = new ObjectInputStream(new ByteArrayInputStream(bytes));
651daf25ec537e02fbf526434474a591f14c48218f5Phil Goodwin            return (Serializable) input.readObject();
652daf25ec537e02fbf526434474a591f14c48218f5Phil Goodwin        } catch (IOException e) {
653daf25ec537e02fbf526434474a591f14c48218f5Phil Goodwin            throw new RuntimeException(e);
654daf25ec537e02fbf526434474a591f14c48218f5Phil Goodwin        } catch (ClassNotFoundException e) {
655daf25ec537e02fbf526434474a591f14c48218f5Phil Goodwin            throw new RuntimeException(e);
656daf25ec537e02fbf526434474a591f14c48218f5Phil Goodwin        }
657eb645dd6f075c4c7d6d61193fde416739adb7fc1Gregg Van Hove & Phil Goodwin    }
65808a7328fa8fb47a682db59e53189b067b6374411Christian Williams & Tyler Schultz
659eb645dd6f075c4c7d6d61193fde416739adb7fc1Gregg Van Hove & Phil Goodwin    private String ifWeHave(Object o, String name) {
66008a7328fa8fb47a682db59e53189b067b6374411Christian Williams & Tyler Schultz        if (o == null) return null;
661eb645dd6f075c4c7d6d61193fde416739adb7fc1Gregg Van Hove & Phil Goodwin        if (o instanceof Map && ((Map) o).isEmpty()) return null;
66208a7328fa8fb47a682db59e53189b067b6374411Christian Williams & Tyler Schultz        return name + "=" + o;
66308a7328fa8fb47a682db59e53189b067b6374411Christian Williams & Tyler Schultz    }
664fb136d1fd04112d8941084739f26876ce8a3866dPhil Goodwin & Rick Kawala
665064f86b8dad1300e99457c9672a9ebbb6694ae4eJon Boekenoogen    public static final Creator<Intent> CREATOR =
666064f86b8dad1300e99457c9672a9ebbb6694ae4eJon Boekenoogen        new Creator<Intent>() {
667064f86b8dad1300e99457c9672a9ebbb6694ae4eJon Boekenoogen            @Override
668064f86b8dad1300e99457c9672a9ebbb6694ae4eJon Boekenoogen            public Intent createFromParcel(Parcel source) {
669064f86b8dad1300e99457c9672a9ebbb6694ae4eJon Boekenoogen                Intent intent = new Intent();
670064f86b8dad1300e99457c9672a9ebbb6694ae4eJon Boekenoogen                intent.readFromParcel(source);
671064f86b8dad1300e99457c9672a9ebbb6694ae4eJon Boekenoogen                return intent;
672064f86b8dad1300e99457c9672a9ebbb6694ae4eJon Boekenoogen            }
673064f86b8dad1300e99457c9672a9ebbb6694ae4eJon Boekenoogen
674064f86b8dad1300e99457c9672a9ebbb6694ae4eJon Boekenoogen            @Override
675064f86b8dad1300e99457c9672a9ebbb6694ae4eJon Boekenoogen            public Intent[] newArray(int size) {
676064f86b8dad1300e99457c9672a9ebbb6694ae4eJon Boekenoogen                return new Intent[size];
677064f86b8dad1300e99457c9672a9ebbb6694ae4eJon Boekenoogen            }
678064f86b8dad1300e99457c9672a9ebbb6694ae4eJon Boekenoogen        };
679fb82eae187c0cdff8efd2d93209e775cd0ed6a39Jon Boekenoogen
680fb82eae187c0cdff8efd2d93209e775cd0ed6a39Jon Boekenoogen    public static void reset() {
681fb82eae187c0cdff8efd2d93209e775cd0ed6a39Jon Boekenoogen        Robolectric.Reflection.setFinalStaticField(Intent.class, "CREATOR", CREATOR);
682fb82eae187c0cdff8efd2d93209e775cd0ed6a39Jon Boekenoogen    }
6836eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz}
684