diff --git a/core/modules/filter/lib/Drupal/filter/Access/FilterAccess.php b/core/modules/filter/lib/Drupal/filter/Access/FilterAccess.php
new file mode 100644
index 0000000..758d12c
--- /dev/null
+++ b/core/modules/filter/lib/Drupal/filter/Access/FilterAccess.php
@@ -0,0 +1,44 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\filter\Access\FilterAccess.
+ */
+
+namespace Drupal\filter\Access;
+
+use Drupal\Core\Access\AccessCheckInterface;
+use Symfony\Component\Routing\Route;
+use Symfony\Component\HttpFoundation\Request;
+
+/**
+ * Checks access for text formats.
+ */
+class FilterAccess implements AccessCheckInterface {
+
+  /**
+   * Implements \Drupal\Core\Access\AccessCheckInterface::applies().
+   */
+  public function applies(Route $route) {
+    return array_key_exists('_filter_access', $route->getRequirements());
+  }
+
+  /**
+   * Implements \Drupal\Core\Access\AccessCheckInterface::access().
+   */
+  public function access(Route $route, Request $request) {
+    if ($format = $request->attributes->get('filter_format')) {
+      // Handle special cases up front. All users have access to the fallback
+      // format.
+      if ($format->format == filter_fallback_format()) {
+        return TRUE;
+      }
+
+      // Check the permission if one exists; otherwise, we have a non-existent
+      // format so we return FALSE.
+      $permission = filter_permission_name($format);
+      return !empty($permission) && user_access($permission);
+    }
+    return FALSE;
+  }
+}
diff --git a/core/modules/filter/lib/Drupal/filter/Controller/FilterController.php b/core/modules/filter/lib/Drupal/filter/Controller/FilterController.php
new file mode 100644
index 0000000..7eb5a93
--- /dev/null
+++ b/core/modules/filter/lib/Drupal/filter/Controller/FilterController.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\filter\Controller|FilterController.
+ */
+
+namespace Drupal\filter\Controller;
+
+use Drupal\Core\ControllerInterface;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+
+/**
+ * Controller routines for filter routes.
+ */
+class FilterController implements ControllerInterface {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function create(ContainerInterface $container) {
+    return new static();
+  }
+
+  /**
+   * Constructs a FilterController object.
+   */
+  public function __construct() {
+  }
+
+  /**
+   * Page callback: Displays a page with long filter tips.
+   *
+   * @param $format
+   *   (optional) A filter format. Defaults to NULL.
+   *
+   * @return array
+   *   A renderable array.
+   *
+   * @see filter_menu()
+   * @see theme_filter_tips()
+   */
+  function filterTips($filter_format = NULL) {
+
+    $tips = (!empty($filter_format)) ? $filter_format->format : -1;
+
+    $build = array(
+      '#theme' => 'filter_tips',
+      '#long' => TRUE,
+      '#tips' => _filter_tips($tips, TRUE),
+    );
+
+    return $build;
+  }
+}
