=== modified file 'src/modules/Unity/Application/mirsurface.cpp'
--- src/modules/Unity/Application/mirsurface.cpp	2017-03-20 21:15:13 +0000
+++ src/modules/Unity/Application/mirsurface.cpp	2017-03-24 17:17:29 +0000
@@ -101,6 +101,11 @@
     void placed_relative(mir::geometry::Rectangle const& placement) override;
 #endif
 
+#if MIR_SERVER_VERSION >= MIR_VERSION_NUMBER(0, 27, 0)
+    void input_consumed(MirEvent const* event) override;
+    void start_drag_and_drop(std::vector<uint8_t> const& handle) override;
+#endif
+
 private:
     QCursor createQCursorFromMirCursorImage(const mir::graphics::CursorImage &cursorImage);
     QObject *m_listener;
@@ -1210,6 +1215,16 @@
     }
 }
 
+#if MIR_SERVER_VERSION >= MIR_VERSION_NUMBER(0, 27, 0)
+void MirSurface::SurfaceObserverImpl::input_consumed(MirEvent const* /*event*/)
+{
+}
+
+void MirSurface::SurfaceObserverImpl::start_drag_and_drop(std::vector<uint8_t> const& /*handle*/)
+{
+}
+#endif
+
 void MirSurface::requestFocus()
 {
     INFO_MSG << "()";

=== modified file 'tests/framework/CMakeLists.txt'
--- tests/framework/CMakeLists.txt	2017-03-20 16:19:42 +0000
+++ tests/framework/CMakeLists.txt	2017-03-24 17:17:29 +0000
@@ -34,7 +34,6 @@
     mock_surface.cpp
     mock_task_controller.cpp
     mock_persistent_surface_store.cpp
-    stub_input_channel.cpp
     fake_surface.h
     fake_displayconfigurationoutput.h
     qtmir_test.cpp

=== modified file 'tests/framework/fake_surface.h'
--- tests/framework/fake_surface.h	2017-01-18 21:24:15 +0000
+++ tests/framework/fake_surface.h	2017-03-24 17:17:29 +0000
@@ -21,8 +21,6 @@
 
 #include <mir/scene/surface.h>
 #include <mir/version.h>
-#include "stub_input_channel.h"
-
 #include <memory>
 #include <gmock/gmock.h>
 
@@ -32,18 +30,17 @@
 class FakeSurface : public Surface
 {
 public:
-    std::shared_ptr<mir::test::doubles::StubInputChannel> channel;
     int fd;
     mir::input::InputReceptionMode input_mode{mir::input::InputReceptionMode::normal};
 
     FakeSurface(int fd=123)
-        : channel(std::make_shared<mir::test::doubles::StubInputChannel>(fd)), fd(fd)
+        : fd(fd)
     {
     }
 
     std::shared_ptr<mir::input::InputChannel> input_channel() const override
     {
-        return channel;
+        return {};
     }
 
     mir::input::InputReceptionMode reception_mode() const override

=== modified file 'tests/framework/mock_mir_session.h'
--- tests/framework/mock_mir_session.h	2017-02-02 13:13:39 +0000
+++ tests/framework/mock_mir_session.h	2017-03-24 17:17:29 +0000
@@ -72,6 +72,10 @@
 
     void send_error(ClientVisibleError const&) override;
 
+#if MIR_SERVER_VERSION >= MIR_VERSION_NUMBER(0, 27, 0)
+    graphics::BufferID create_buffer(geometry::Size, MirPixelFormat) override { return {}; }
+    graphics::BufferID create_buffer(geometry::Size, uint32_t, uint32_t) override {return {}; }
+#endif
 
 private:
 

=== modified file 'tests/framework/mock_surface.h'
--- tests/framework/mock_surface.h	2017-01-18 21:24:15 +0000
+++ tests/framework/mock_surface.h	2017-03-24 17:17:29 +0000
@@ -60,7 +60,9 @@
     MOCK_CONST_METHOD0(cursor_image, std::shared_ptr<graphics::CursorImage>());
     MOCK_METHOD1(add_observer, void(std::shared_ptr<SurfaceObserver> const& observer));
     MOCK_METHOD1(remove_observer, void(std::weak_ptr<SurfaceObserver> const& observer));
+#if MIR_SERVER_VERSION < MIR_VERSION_NUMBER(0, 27, 0)
     MOCK_CONST_METHOD0(input_channel, std::shared_ptr<input::InputChannel>());
+#endif
     MOCK_METHOD1(set_reception_mode, void(input::InputReceptionMode mode));
     MOCK_METHOD0(request_client_surface_close, void());
     MOCK_CONST_METHOD1(buffers_ready_for_compositor, int(void const*));

=== removed file 'tests/framework/stub_input_channel.cpp'
--- tests/framework/stub_input_channel.cpp	2015-10-19 10:45:42 +0000
+++ tests/framework/stub_input_channel.cpp	1970-01-01 00:00:00 +0000
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2015 Canonical, Ltd.
- *
- * This program is free software: you can redistribute it and/or modify it under
- * the terms of the GNU Lesser General Public License version 3, as published by
- * the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranties of MERCHANTABILITY,
- * SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "stub_input_channel.h"
-
-namespace mir
-{
-namespace test
-{
-namespace doubles
-{
-
-StubInputChannel::StubInputChannel(int fd)
-    : input_fd(fd)
-{
-}
-
-StubInputChannel::StubInputChannel()
-    : StubInputChannel(0)
-{
-}
-
-StubInputChannel::~StubInputChannel()
-{
-}
-
-int StubInputChannel::client_fd() const
-{
-    return input_fd;
-}
-
-int StubInputChannel::server_fd() const
-{
-    return input_fd;
-}
-
-} // namespace doubles
-} // namespace test
-} // namespace mir

=== removed file 'tests/framework/stub_input_channel.h'
--- tests/framework/stub_input_channel.h	2015-09-30 15:45:17 +0000
+++ tests/framework/stub_input_channel.h	1970-01-01 00:00:00 +0000
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2013-2015 Canonical, Ltd.
- *
- * This program is free software: you can redistribute it and/or modify it under
- * the terms of the GNU Lesser General Public License version 3, as published by
- * the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranties of MERCHANTABILITY,
- * SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef MIR_TEST_DOUBLES_STUB_INPUT_CHANNEL_H_
-#define MIR_TEST_DOUBLES_STUB_INPUT_CHANNEL_H_
-
-#include "mir/input/input_channel.h"
-
-namespace mir
-{
-namespace test
-{
-namespace doubles
-{
-
-struct StubInputChannel : public input::InputChannel
-{
-    StubInputChannel(int fd);
-
-    StubInputChannel();
-
-    virtual ~StubInputChannel();
-
-    int client_fd() const override;
-    int server_fd() const override;
-    int input_fd;
-};
-
-}
-}
-} // namespace mir
-
-#endif // MIR_TEST_DOUBLES_STUB_INPUT_CHANNEL_H_
-

=== modified file 'tests/framework/stub_scene_surface.h'
--- tests/framework/stub_scene_surface.h	2017-01-18 21:24:15 +0000
+++ tests/framework/stub_scene_surface.h	2017-03-24 17:17:29 +0000
@@ -20,7 +20,6 @@
 #define MIR_SCENE_FAKESURFACE_H_
 
 #include <mir/scene/surface.h>
-#include "stub_input_channel.h"
 
 #include <memory>
 #include <gmock/gmock.h>
@@ -31,7 +30,6 @@
 class FakeSurface : public Surface
 {
 public:
-    std::shared_ptr<mir::test::doubles::StubInputChannel> channel;
     int fd;
     mir::input::InputReceptionMode input_mode{mir::input::InputReceptionMode::normal};
 

