1ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulian/* 2ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulian * Copyright (C) 2017 The Android Open Source Project 3ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulian * 4ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulian * Licensed under the Apache License, Version 2.0 (the "License"); 5ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulian * you may not use this file except in compliance with the License. 6ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulian * You may obtain a copy of the License at 7ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulian * 8ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulian * http://www.apache.org/licenses/LICENSE-2.0 9ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulian * 10ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulian * Unless required by applicable law or agreed to in writing, software 11ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulian * distributed under the License is distributed on an "AS IS" BASIS, 12ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulian * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulian * See the License for the specific language governing permissions and 14ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulian * limitations under the License 15ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulian */ 16ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulian 17ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulianpackage com.android.server.input; 18ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulian 19ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulianimport android.app.IInputForwarder; 20ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulianimport android.hardware.input.InputManagerInternal; 21ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulianimport android.view.InputEvent; 22ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulianimport android.os.Binder; 23ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulian 24ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulianimport com.android.server.LocalServices; 25ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulian 26ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulianimport static android.hardware.input.InputManager.INJECT_INPUT_EVENT_MODE_ASYNC; 27ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulian 28ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulian/** 29ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulian * Basic implementation of {@link IInputForwarder}. 30ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulian */ 31ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulianclass InputForwarder extends IInputForwarder.Stub { 32ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulian 33ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulian private final InputManagerInternal mInputManagerInternal; 34ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulian private final int mDisplayId; 35ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulian 36ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulian InputForwarder(int displayId) { 37ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulian mDisplayId = displayId; 38ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulian mInputManagerInternal = LocalServices.getService(InputManagerInternal.class); 39ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulian } 40ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulian 41ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulian @Override 42ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulian public boolean forwardEvent(InputEvent event) { 43ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulian return mInputManagerInternal.injectInputEvent(event, mDisplayId, 44ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulian INJECT_INPUT_EVENT_MODE_ASYNC); 45ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulian } 46ed76e7473f5ced22ad008beb01fd19d52998f938Andrii Kulian}