1package com.xtremelabs.robolectric.shadows;
2
3import android.os.Bundle;
4import android.os.ResultReceiver;
5import com.xtremelabs.robolectric.internal.Implementation;
6import com.xtremelabs.robolectric.internal.Implements;
7import com.xtremelabs.robolectric.internal.RealObject;
8
9import java.lang.reflect.InvocationTargetException;
10import java.lang.reflect.Method;
11
12@Implements(ResultReceiver.class)
13public class ShadowResultReceiver {
14    // TODO: Use handler to make asynchronous
15
16    @RealObject private ResultReceiver realResultReceiver;
17
18    @Implementation
19    public void send(int resultCode, android.os.Bundle resultData) {
20        try {
21            Method onReceiveResult = ResultReceiver.class.getDeclaredMethod("onReceiveResult", Integer.TYPE, Bundle.class);
22            onReceiveResult.setAccessible(true);
23            onReceiveResult.invoke(realResultReceiver, resultCode, resultData);
24        } catch (NoSuchMethodException e) {
25            throw new RuntimeException(e);
26        } catch (InvocationTargetException e) {
27            throw new RuntimeException(e);
28        } catch (IllegalAccessException e) {
29            throw new RuntimeException(e);
30        }
31    }
32}
33