12a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang/*
22a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang * Copyright (C) 2017 The Android Open Source Project
32a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang *
42a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang * Licensed under the Apache License, Version 2.0 (the "License");
52a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang * you may not use this file except in compliance with the License.
62a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang * You may obtain a copy of the License at
72a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang *
82a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang *      http://www.apache.org/licenses/LICENSE-2.0
92a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang *
102a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang * Unless required by applicable law or agreed to in writing, software
112a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang * distributed under the License is distributed on an "AS IS" BASIS,
122a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
132a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang * See the License for the specific language governing permissions and
142a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang * limitations under the License.
152a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang */
162a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang
172a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhangpackage com.android.settings.testutils.shadow;
182a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang
192a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhangimport android.view.InputDevice;
202a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang
212a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhangimport org.robolectric.annotation.Implementation;
222a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhangimport org.robolectric.annotation.Implements;
232a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhangimport org.robolectric.annotation.Resetter;
242a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang
252a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhangimport java.util.HashMap;
262a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhangimport java.util.Map;
272a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang
282a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang@Implements(InputDevice.class)
292a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhangpublic class ShadowInputDevice extends org.robolectric.shadows.ShadowInputDevice {
302a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang
312a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang    public static int[] sDeviceIds;
322a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang
332a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang    private static Map<Integer, InputDevice> sDeviceMap = new HashMap<>();
342a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang
352a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang    @Implementation
362a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang    public static int[] getDeviceIds() {
372a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang        return sDeviceIds;
382a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang    }
392a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang
402a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang    @Implementation
412a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang    public static InputDevice getDevice(int id) {
422a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang        return sDeviceMap.get(id);
432a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang    }
442a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang
452a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang    public static void addDevice(int id, InputDevice device) {
462a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang        sDeviceMap.put(id, device);
472a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang    }
482a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang
492a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang    @Resetter
502a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang    public static void reset() {
512a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang        sDeviceIds = null;
522a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang        sDeviceMap.clear();
532a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang    }
542a9255b33c3a36bad699375e9d36ed9395583bdcFan Zhang}
55