1a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultzpackage com.xtremelabs.robolectric.shadows;
2a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz
3a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultzimport android.app.Activity;
4a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultzimport android.app.PendingIntent;
5a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultzimport android.content.Context;
6a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultzimport android.content.IntentFilter;
7a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultzimport android.nfc.NfcAdapter;
8a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultzimport com.xtremelabs.robolectric.internal.Implementation;
9a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultzimport com.xtremelabs.robolectric.internal.Implements;
10a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultzimport com.xtremelabs.robolectric.internal.RealObject;
11a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz
12a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultzimport java.lang.reflect.Constructor;
13a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultzimport java.lang.reflect.InvocationTargetException;
14a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz
15a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz@Implements(NfcAdapter.class)
16a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultzpublic class ShadowNfcAdapter {
17a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    @RealObject NfcAdapter nfcAdapter;
18a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    private Activity enabledActivity;
19a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    private PendingIntent intent;
20a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    private IntentFilter[] filters;
21a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    private String[][] techLists;
22a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    private Activity disabledActivity;
23a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz
24a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    @Implementation
25a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    public static NfcAdapter getDefaultAdapter(Context context) {
26a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz        try {
27a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz            Constructor<NfcAdapter> constructor = NfcAdapter.class.getDeclaredConstructor();
28a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz            constructor.setAccessible(true);
29a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz            return constructor.newInstance();
30a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz        } catch (InstantiationException e) {
31a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz            throw new RuntimeException(e);
32a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz        } catch (IllegalAccessException e) {
33a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz            throw new RuntimeException(e);
34a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz        } catch (InvocationTargetException e) {
35a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz            throw new RuntimeException(e);
36a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz        } catch (NoSuchMethodException e) {
37a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz            throw new RuntimeException(e);
38a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz        }
39a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    }
40a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz
41a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    @Implementation
42a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    public void enableForegroundDispatch(Activity activity, PendingIntent intent, IntentFilter[] filters, String[][] techLists) {
43a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz        this.enabledActivity = activity;
44a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz        this.intent = intent;
45a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz        this.filters = filters;
46a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz        this.techLists = techLists;
47a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    }
48a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz
49a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    @Implementation
50a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    public void disableForegroundDispatch(Activity activity) {
51a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz        disabledActivity = activity;
52a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    }
53a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz
54a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    public Activity getEnabledActivity() {
55a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz        return enabledActivity;
56a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    }
57a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz
58a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    public PendingIntent getIntent() {
59a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz        return intent;
60a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    }
61a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz
62a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    public IntentFilter[] getFilters() {
63a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz        return filters;
64a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    }
65a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz
66a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    public String[][] getTechLists() {
67a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz        return techLists;
68a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    }
69a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz
70a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    public Activity getDisabledActivity() {
71a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz        return disabledActivity;
72a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    }
73a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz}
74