1 package org.robolectric.shadows; 2 3 import static org.robolectric.util.reflector.Reflector.reflector; 4 5 import android.os.Handler; 6 import android.os.Message; 7 import org.robolectric.annotation.Implementation; 8 import org.robolectric.annotation.Implements; 9 import org.robolectric.annotation.LooperMode; 10 import org.robolectric.annotation.RealObject; 11 12 /** 13 * The shadow {@link Message} for {@link LooperMode.Mode.PAUSED}. 14 * 15 * <p>This class should not be referenced directly. Use {@link ShadowMessage} instead. 16 */ 17 @Implements(value = Message.class, isInAndroidSdk = false) 18 public class ShadowPausedMessage extends ShadowMessage { 19 20 @RealObject private Message realMessage; 21 22 @Implementation getWhen()23 protected long getWhen() { 24 return reflector(MessageReflector.class, realMessage).getWhen(); 25 } 26 internalGetNext()27 Message internalGetNext() { 28 return reflector(MessageReflector.class, realMessage).getNext(); 29 } 30 31 // TODO: Reconsider this being exposed as a public method 32 @Override 33 @Implementation recycleUnchecked()34 public void recycleUnchecked() { 35 reflector(MessageReflector.class, realMessage).recycleUnchecked(); 36 } 37 38 @Override setScheduledRunnable(Runnable r)39 public void setScheduledRunnable(Runnable r) { 40 throw new UnsupportedOperationException("Not supported in PAUSED LooperMode"); 41 } 42 43 // We could support these methods, but intentionally do not for now as its unclear what the 44 // use case is. 45 46 @Override getNext()47 public Message getNext() { 48 throw new UnsupportedOperationException("Not supported in PAUSED LooperMode"); 49 } 50 51 @Override setNext(Message next)52 public void setNext(Message next) { 53 throw new UnsupportedOperationException("Not supported in PAUSED LooperMode"); 54 } 55 56 @Implementation getTarget()57 protected Handler getTarget() { 58 return reflector(MessageReflector.class, realMessage).getTarget(); 59 } 60 } 61