Home | History | Annotate | Download | only in shadows
      1 package com.xtremelabs.robolectric.shadows;
      2 
      3 
      4 import com.xtremelabs.robolectric.Robolectric;
      5 import com.xtremelabs.robolectric.internal.Implementation;
      6 import com.xtremelabs.robolectric.internal.Implements;
      7 import com.xtremelabs.robolectric.internal.RealObject;
      8 
      9 import android.os.Bundle;
     10 import android.os.Handler;
     11 import android.os.Message;
     12 
     13 @Implements(Message.class)
     14 public class ShadowMessage {
     15     private Bundle data;
     16     private Handler target;
     17     private long when;
     18 
     19     @RealObject
     20     private Message message;
     21 
     22     @Implementation
     23     public void setData(Bundle data) {
     24         this.data = data;
     25     }
     26 
     27     @Implementation
     28     public void setTarget(Handler target) {
     29         this.target = target;
     30     }
     31 
     32     @Implementation
     33     public Bundle peekData() {
     34         return data;
     35     }
     36 
     37     @Implementation
     38     public Bundle getData() {
     39         if (data == null) {
     40             data = new Bundle();
     41         }
     42         return data;
     43     }
     44 
     45     @Implementation
     46     public Handler getTarget() {
     47         return target;
     48     }
     49 
     50     @Implementation
     51     public void copyFrom(Message m) {
     52         message.arg1 = m.arg1;
     53         message.arg2 = m.arg2;
     54         message.obj = m.obj;
     55         message.what = m.what;
     56         message.setData(m.getData());
     57     }
     58 
     59     @Implementation
     60     public static Message obtain() {
     61         return new Message();
     62     }
     63 
     64     @Implementation
     65     public static Message obtain(Handler h) {
     66         Message m = new Message();
     67         m.setTarget(h);
     68         return m;
     69     }
     70 
     71     @Implementation
     72     public static Message obtain(Handler h, int what) {
     73         Message m = obtain(h);
     74         m.what = what;
     75         return m;
     76     }
     77 
     78     @Implementation
     79     public static Message obtain(Handler h, int what, Object obj) {
     80         Message m = obtain(h, what);
     81         m.obj = obj;
     82         return m;
     83     }
     84 
     85     @Implementation
     86     public static Message obtain(Handler h, int what, int arg1, int arg2) {
     87         Message m = obtain(h, what);
     88         m.arg1 = arg1;
     89         m.arg2 = arg2;
     90         return m;
     91     }
     92 
     93     @Implementation
     94     public static Message obtain(Handler h, int what, int arg1, int arg2, Object obj) {
     95         Message m = obtain(h, what, arg1, arg2);
     96         m.obj = obj;
     97         return m;
     98     }
     99 
    100     @Implementation
    101     public static Message obtain(Message msg) {
    102         Message m = new Message();
    103         m.copyFrom(msg);
    104         m.setTarget(msg.getTarget());
    105         return m;
    106     }
    107 
    108     @Implementation
    109     public void sendToTarget() {
    110         target.sendMessage(message);
    111     }
    112 
    113     @Implementation
    114     public long getWhen() {
    115         return when;
    116     }
    117 
    118     public void setWhen(long when) {
    119         this.when = when;
    120     }
    121 }
    122