Files
android_hardware_libhardware/modules/input/evdev/InputDeviceManager.cpp
Tim Kilbourn 4f3145d75f Initial InputMappers for evdev input HAL.
The previous design of the InputHost wrapper classes made it very
painful to do testing, so this change also reverts to a more classical
C++ pattern for non-copyable objects. The InputHost classes still simply
call through to the input_host_t and callbacks as before.

Updated unittests to use gmock for mocking the InputHost interactions.

Change-Id: I4b70df2c89ed48af77446b8f5b87a4bde94510bf
2015-06-09 11:16:04 -07:00

52 lines
1.7 KiB
C++

/*
* Copyright (C) 2015 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#define LOG_TAG "InputDeviceManager"
//#define LOG_NDEBUG 0
#include <utils/Log.h>
#include "InputDevice.h"
#include "InputDeviceManager.h"
namespace android {
void InputDeviceManager::onInputEvent(const std::shared_ptr<InputDeviceNode>& node, InputEvent& event,
nsecs_t event_time) {
if (mDevices[node] == nullptr) {
ALOGE("got input event for unknown node %s", node->getPath().c_str());
return;
}
mDevices[node]->processInput(event, event_time);
}
void InputDeviceManager::onDeviceAdded(const std::shared_ptr<InputDeviceNode>& node) {
mDevices[node] = std::make_shared<EvdevDevice>(mHost, node);
}
void InputDeviceManager::onDeviceRemoved(const std::shared_ptr<InputDeviceNode>& node) {
if (mDevices[node] == nullptr) {
ALOGE("could not remove unknown node %s", node->getPath().c_str());
return;
}
// TODO: tell the InputDevice and InputDeviceNode that they are being
// removed so they can run any cleanup, including unregistering from the
// host.
mDevices.erase(node);
}
} // namespace android