ShadowHandler.java revision de9feed5ddf1d91a3e76cbc71712c36a7652201e
167142e6509cdc6c82290e955ae69400462cf52a9Christian Williams & Ian Fisherpackage com.xtremelabs.droidsugar.fakes; 2f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips 3f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillipsimport android.os.Handler; 4f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillipsimport android.os.Looper; 5f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillipsimport android.os.Message; 6f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillipsimport com.xtremelabs.droidsugar.ProxyDelegatingHandler; 7de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williamsimport com.xtremelabs.droidsugar.util.Implementation; 80b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisherimport com.xtremelabs.droidsugar.util.Implements; 9f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips 10f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips@SuppressWarnings({"UnusedDeclaration"}) 110b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher@Implements(Handler.class) 12f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillipspublic class FakeHandler { 13f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips private Handler realHandler; 14f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips private Looper looper; 15f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips 16f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips public FakeHandler(Handler realHandler) { 17f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips this.realHandler = realHandler; 18f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips } 19f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips 20f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips public void __constructor__() { 21f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips this.looper = Looper.myLooper(); 22f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips } 23f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips 24f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips public void __constructor__(Looper looper) { 25f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips this.looper = looper; 26f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips } 27f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips 28de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 29de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams public boolean post(Runnable r) { 30534fd31dba68daad0ad9d98c3c480139a3efa5a1Christian Williams & Tyler Schultz return postDelayed(r, 0); 31534fd31dba68daad0ad9d98c3c480139a3efa5a1Christian Williams & Tyler Schultz } 32534fd31dba68daad0ad9d98c3c480139a3efa5a1Christian Williams & Tyler Schultz 33de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 34de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams public boolean postDelayed(Runnable r, long delayMillis) { 35534fd31dba68daad0ad9d98c3c480139a3efa5a1Christian Williams & Tyler Schultz proxyFor(looper).post(r, delayMillis); 36f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips return true; 37f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips } 38f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips 39de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 40de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams public Message obtainMessage(int what, Object obj) { 41f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips Message message = new Message(); 42f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips message.what = what; 43f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips message.obj = obj; 44f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips return message; 45f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips } 46f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips 47de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 48f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips public final boolean sendMessage(final Message msg) { 49f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips post(new Runnable() { 50f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips @Override 51f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips public void run() { 52f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips realHandler.handleMessage(msg); 53f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips } 54f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips }); 55f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips return true; 56f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips } 579c19f7ef7122cfa9e03ed4314da4ad2a115c7e71Christian Williams & Ryan Richard 58563821eb6f69ee8158b44465d227b0ce35ad2ed4Christian Williams & Ian Fisher public static void flush() { 59534fd31dba68daad0ad9d98c3c480139a3efa5a1Christian Williams & Tyler Schultz proxyFor(Looper.myLooper()).idle(); 60534fd31dba68daad0ad9d98c3c480139a3efa5a1Christian Williams & Tyler Schultz } 61534fd31dba68daad0ad9d98c3c480139a3efa5a1Christian Williams & Tyler Schultz 62534fd31dba68daad0ad9d98c3c480139a3efa5a1Christian Williams & Tyler Schultz private static FakeLooper proxyFor(Looper looper) { 63534fd31dba68daad0ad9d98c3c480139a3efa5a1Christian Williams & Tyler Schultz return (FakeLooper) ProxyDelegatingHandler.getInstance().proxyFor(looper); 649c19f7ef7122cfa9e03ed4314da4ad2a115c7e71Christian Williams & Ryan Richard } 65f8d3ea0e4553f6f391543eccb99485f9603c5804Christian Williams & Jay Phillips} 66