diff --git a/services/inputflinger/InputManager.cpp b/services/inputflinger/InputManager.cpp
index 3d99589..8af9bcb 100644
--- a/services/inputflinger/InputManager.cpp
+++ b/services/inputflinger/InputManager.cpp
@@ -31,25 +31,6 @@
 
 namespace android {
 
-static int32_t exceptionCodeFromStatusT(status_t status) {
-    switch (status) {
-        case OK:
-            return binder::Status::EX_NONE;
-        case INVALID_OPERATION:
-            return binder::Status::EX_UNSUPPORTED_OPERATION;
-        case BAD_VALUE:
-        case BAD_TYPE:
-        case NAME_NOT_FOUND:
-            return binder::Status::EX_ILLEGAL_ARGUMENT;
-        case NO_INIT:
-            return binder::Status::EX_ILLEGAL_STATE;
-        case PERMISSION_DENIED:
-            return binder::Status::EX_SECURITY;
-        default:
-            return binder::Status::EX_TRANSACTION_FAILED;
-    }
-}
-
 InputManager::InputManager(
         const sp<InputReaderPolicyInterface>& readerPolicy,
         const sp<InputDispatcherPolicyInterface>& dispatcherPolicy) {
@@ -138,7 +119,7 @@
 }
 
 // Used by tests only.
-binder::Status InputManager::createInputChannel(const std::string& name, InputChannel* outChannel) {
+binder::Status InputManager::registerInputChannel(const InputChannel& channel) {
     IPCThreadState* ipc = IPCThreadState::self();
     const int uid = ipc->getCallingUid();
     if (uid != AID_SHELL && uid != AID_ROOT) {
@@ -147,17 +128,12 @@
         return binder::Status::ok();
     }
 
-    base::Result<std::unique_ptr<InputChannel>> channel = mDispatcher->createInputChannel(name);
-    if (!channel) {
-        return binder::Status::fromExceptionCode(exceptionCodeFromStatusT(channel.error().code()),
-                                                 channel.error().message().c_str());
-    }
-    (*channel)->copyTo(*outChannel);
+    mDispatcher->registerInputChannel(channel.dup());
     return binder::Status::ok();
 }
 
-binder::Status InputManager::removeInputChannel(const sp<IBinder>& connectionToken) {
-    mDispatcher->removeInputChannel(connectionToken);
+binder::Status InputManager::unregisterInputChannel(const sp<IBinder>& connectionToken) {
+    mDispatcher->unregisterInputChannel(connectionToken);
     return binder::Status::ok();
 }
 
