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}