1407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkelpackage com.xtremelabs.robolectric.shadows;
2407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkel
3407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkel
4962dfc938fd6829f96079d4749f050da9118b8cbJan Berkelimport com.xtremelabs.robolectric.Robolectric;
5407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkelimport com.xtremelabs.robolectric.internal.Implementation;
6407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkelimport com.xtremelabs.robolectric.internal.Implements;
7407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkelimport com.xtremelabs.robolectric.internal.RealObject;
8407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkel
9407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkelimport android.os.Bundle;
10e0ab12af2b5fdbad89c6892f77accb9b52797a48Dave Shahimport android.os.Handler;
11407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkelimport android.os.Message;
12407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkel
13407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkel@Implements(Message.class)
14407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkelpublic class ShadowMessage {
15407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkel    private Bundle data;
16e0ab12af2b5fdbad89c6892f77accb9b52797a48Dave Shah    private Handler target;
17962dfc938fd6829f96079d4749f050da9118b8cbJan Berkel    private long when;
18407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkel
19407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkel    @RealObject
20407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkel    private Message message;
21407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkel
22407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkel    @Implementation
23407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkel    public void setData(Bundle data) {
24407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkel        this.data = data;
25407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkel    }
2640674c5041023f9b5cb5570b8c5b81b5968ec585Jon Boekenoogen
27e0ab12af2b5fdbad89c6892f77accb9b52797a48Dave Shah    @Implementation
28e0ab12af2b5fdbad89c6892f77accb9b52797a48Dave Shah    public void setTarget(Handler target) {
29e0ab12af2b5fdbad89c6892f77accb9b52797a48Dave Shah        this.target = target;
30e0ab12af2b5fdbad89c6892f77accb9b52797a48Dave Shah    }
31407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkel
32407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkel    @Implementation
33407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkel    public Bundle peekData() {
349e4cb8aa5c4ddef5bfb6f6f1274904699ecda4bdJan Berkel        return data;
35407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkel    }
36407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkel
37407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkel    @Implementation
38407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkel    public Bundle getData() {
399e4cb8aa5c4ddef5bfb6f6f1274904699ecda4bdJan Berkel        if (data == null) {
409e4cb8aa5c4ddef5bfb6f6f1274904699ecda4bdJan Berkel            data = new Bundle();
419e4cb8aa5c4ddef5bfb6f6f1274904699ecda4bdJan Berkel        }
42407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkel        return data;
43407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkel    }
4440674c5041023f9b5cb5570b8c5b81b5968ec585Jon Boekenoogen
45e0ab12af2b5fdbad89c6892f77accb9b52797a48Dave Shah    @Implementation
46e0ab12af2b5fdbad89c6892f77accb9b52797a48Dave Shah    public Handler getTarget() {
47e0ab12af2b5fdbad89c6892f77accb9b52797a48Dave Shah        return target;
48e0ab12af2b5fdbad89c6892f77accb9b52797a48Dave Shah    }
49407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkel
50407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkel    @Implementation
51407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkel    public void copyFrom(Message m) {
52407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkel        message.arg1 = m.arg1;
53407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkel        message.arg2 = m.arg2;
54407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkel        message.obj = m.obj;
55310172c610d61b650ebb66934947d791057e8e3eJon Boekenoogen        message.what = m.what;
56407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkel        message.setData(m.getData());
57407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkel    }
58e642e4520ac02d9b194b31ea865e885078887a75Dave Shah
59e0ab12af2b5fdbad89c6892f77accb9b52797a48Dave Shah    @Implementation
60e0ab12af2b5fdbad89c6892f77accb9b52797a48Dave Shah    public static Message obtain() {
61e0ab12af2b5fdbad89c6892f77accb9b52797a48Dave Shah        return new Message();
62e0ab12af2b5fdbad89c6892f77accb9b52797a48Dave Shah    }
63e642e4520ac02d9b194b31ea865e885078887a75Dave Shah
64e0ab12af2b5fdbad89c6892f77accb9b52797a48Dave Shah    @Implementation
65e642e4520ac02d9b194b31ea865e885078887a75Dave Shah    public static Message obtain(Handler h) {
66e0ab12af2b5fdbad89c6892f77accb9b52797a48Dave Shah        Message m = new Message();
67e642e4520ac02d9b194b31ea865e885078887a75Dave Shah        m.setTarget(h);
68e642e4520ac02d9b194b31ea865e885078887a75Dave Shah        return m;
69e642e4520ac02d9b194b31ea865e885078887a75Dave Shah    }
70e642e4520ac02d9b194b31ea865e885078887a75Dave Shah
71e642e4520ac02d9b194b31ea865e885078887a75Dave Shah    @Implementation
72e642e4520ac02d9b194b31ea865e885078887a75Dave Shah    public static Message obtain(Handler h, int what) {
73e642e4520ac02d9b194b31ea865e885078887a75Dave Shah        Message m = obtain(h);
74e642e4520ac02d9b194b31ea865e885078887a75Dave Shah        m.what = what;
75e642e4520ac02d9b194b31ea865e885078887a75Dave Shah        return m;
76e642e4520ac02d9b194b31ea865e885078887a75Dave Shah    }
77e642e4520ac02d9b194b31ea865e885078887a75Dave Shah
78e642e4520ac02d9b194b31ea865e885078887a75Dave Shah    @Implementation
79e642e4520ac02d9b194b31ea865e885078887a75Dave Shah    public static Message obtain(Handler h, int what, Object obj) {
80e642e4520ac02d9b194b31ea865e885078887a75Dave Shah        Message m = obtain(h, what);
81e642e4520ac02d9b194b31ea865e885078887a75Dave Shah        m.obj = obj;
82e642e4520ac02d9b194b31ea865e885078887a75Dave Shah        return m;
83e642e4520ac02d9b194b31ea865e885078887a75Dave Shah    }
84e642e4520ac02d9b194b31ea865e885078887a75Dave Shah
85e642e4520ac02d9b194b31ea865e885078887a75Dave Shah    @Implementation
86e642e4520ac02d9b194b31ea865e885078887a75Dave Shah    public static Message obtain(Handler h, int what, int arg1, int arg2) {
87e642e4520ac02d9b194b31ea865e885078887a75Dave Shah        Message m = obtain(h, what);
88e642e4520ac02d9b194b31ea865e885078887a75Dave Shah        m.arg1 = arg1;
89e642e4520ac02d9b194b31ea865e885078887a75Dave Shah        m.arg2 = arg2;
90e642e4520ac02d9b194b31ea865e885078887a75Dave Shah        return m;
91e642e4520ac02d9b194b31ea865e885078887a75Dave Shah    }
92e642e4520ac02d9b194b31ea865e885078887a75Dave Shah
93e642e4520ac02d9b194b31ea865e885078887a75Dave Shah    @Implementation
94e642e4520ac02d9b194b31ea865e885078887a75Dave Shah    public static Message obtain(Handler h, int what, int arg1, int arg2, Object obj) {
95e642e4520ac02d9b194b31ea865e885078887a75Dave Shah        Message m = obtain(h, what, arg1, arg2);
96e642e4520ac02d9b194b31ea865e885078887a75Dave Shah        m.obj = obj;
97e0ab12af2b5fdbad89c6892f77accb9b52797a48Dave Shah        return m;
98e0ab12af2b5fdbad89c6892f77accb9b52797a48Dave Shah    }
994c309b17fd2b0b1fbf094edc84ca99745dc96002Jan Berkel
1004c309b17fd2b0b1fbf094edc84ca99745dc96002Jan Berkel    @Implementation
10171310032ef4ece873debd2d8b7f5d86ff2bb1c37Jon Boekenoogen    public static Message obtain(Message msg) {
10271310032ef4ece873debd2d8b7f5d86ff2bb1c37Jon Boekenoogen        Message m = new Message();
10371310032ef4ece873debd2d8b7f5d86ff2bb1c37Jon Boekenoogen        m.copyFrom(msg);
10471310032ef4ece873debd2d8b7f5d86ff2bb1c37Jon Boekenoogen        m.setTarget(msg.getTarget());
10571310032ef4ece873debd2d8b7f5d86ff2bb1c37Jon Boekenoogen        return m;
10671310032ef4ece873debd2d8b7f5d86ff2bb1c37Jon Boekenoogen    }
10771310032ef4ece873debd2d8b7f5d86ff2bb1c37Jon Boekenoogen
10871310032ef4ece873debd2d8b7f5d86ff2bb1c37Jon Boekenoogen    @Implementation
1094c309b17fd2b0b1fbf094edc84ca99745dc96002Jan Berkel    public void sendToTarget() {
1104c309b17fd2b0b1fbf094edc84ca99745dc96002Jan Berkel        target.sendMessage(message);
1114c309b17fd2b0b1fbf094edc84ca99745dc96002Jan Berkel    }
112962dfc938fd6829f96079d4749f050da9118b8cbJan Berkel
113962dfc938fd6829f96079d4749f050da9118b8cbJan Berkel    @Implementation
114962dfc938fd6829f96079d4749f050da9118b8cbJan Berkel    public long getWhen() {
115962dfc938fd6829f96079d4749f050da9118b8cbJan Berkel        return when;
116962dfc938fd6829f96079d4749f050da9118b8cbJan Berkel    }
117962dfc938fd6829f96079d4749f050da9118b8cbJan Berkel
118962dfc938fd6829f96079d4749f050da9118b8cbJan Berkel    public void setWhen(long when) {
119962dfc938fd6829f96079d4749f050da9118b8cbJan Berkel        this.when = when;
120962dfc938fd6829f96079d4749f050da9118b8cbJan Berkel    }
121407d29789bdc3ef4e50edbcf51eb8c30641cbd99Jan Berkel}
122