aboutsummaryrefslogtreecommitdiff
path: root/v1/src/main/java/com/xtremelabs/robolectric/shadows/ShadowMessage.java
blob: d1588c02333e268fcc04da733d2210d0661cff79 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
package com.xtremelabs.robolectric.shadows;


import com.xtremelabs.robolectric.Robolectric;
import com.xtremelabs.robolectric.internal.Implementation;
import com.xtremelabs.robolectric.internal.Implements;
import com.xtremelabs.robolectric.internal.RealObject;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;

@Implements(Message.class)
public class ShadowMessage {
    private Bundle data;
    private Handler target;
    private long when;

    @RealObject
    private Message message;

    @Implementation
    public void setData(Bundle data) {
        this.data = data;
    }

    @Implementation
    public void setTarget(Handler target) {
        this.target = target;
    }

    @Implementation
    public Bundle peekData() {
        return data;
    }

    @Implementation
    public Bundle getData() {
        if (data == null) {
            data = new Bundle();
        }
        return data;
    }

    @Implementation
    public Handler getTarget() {
        return target;
    }

    @Implementation
    public void copyFrom(Message m) {
        message.arg1 = m.arg1;
        message.arg2 = m.arg2;
        message.obj = m.obj;
        message.what = m.what;
        message.setData(m.getData());
    }

    @Implementation
    public static Message obtain() {
        return new Message();
    }

    @Implementation
    public static Message obtain(Handler h) {
        Message m = new Message();
        m.setTarget(h);
        return m;
    }

    @Implementation
    public static Message obtain(Handler h, int what) {
        Message m = obtain(h);
        m.what = what;
        return m;
    }

    @Implementation
    public static Message obtain(Handler h, int what, Object obj) {
        Message m = obtain(h, what);
        m.obj = obj;
        return m;
    }

    @Implementation
    public static Message obtain(Handler h, int what, int arg1, int arg2) {
        Message m = obtain(h, what);
        m.arg1 = arg1;
        m.arg2 = arg2;
        return m;
    }

    @Implementation
    public static Message obtain(Handler h, int what, int arg1, int arg2, Object obj) {
        Message m = obtain(h, what, arg1, arg2);
        m.obj = obj;
        return m;
    }

    @Implementation
    public static Message obtain(Message msg) {
        Message m = new Message();
        m.copyFrom(msg);
        m.setTarget(msg.getTarget());
        return m;
    }

    @Implementation
    public void sendToTarget() {
        target.sendMessage(message);
    }

    @Implementation
    public long getWhen() {
        return when;
    }

    public void setWhen(long when) {
        this.when = when;
    }
}