diff --git a/core/lib/Drupal/Core/ContentNegotiation.php b/core/lib/Drupal/Core/ContentNegotiation.php
index 8aa7e48..e4e860c 100644
--- a/core/lib/Drupal/Core/ContentNegotiation.php
+++ b/core/lib/Drupal/Core/ContentNegotiation.php
@@ -12,19 +12,10 @@
 /**
  * Provides content negotation based upon query parameters.
  */
-class ContentNegotiation {
+class ContentNegotiation implements ContentNegotiationInterface {
 
   /**
-   * Gets the normalized type of a request.
-   *
-   * The normalized type is a short, lowercase version of the format, such as
-   * 'html', 'json' or 'atom'.
-   *
-   * @param \Symfony\Component\HttpFoundation\Request $request
-   *   The request object from which to extract the content type.
-   *
-   * @return string
-   *   The normalized type of a given request.
+   * {@inheritdoc}
    */
   public function getContentType(Request $request) {
     // AJAX iframe uploads need special handling, because they contain a JSON
diff --git a/core/lib/Drupal/Core/ContentNegotiationInterface.php b/core/lib/Drupal/Core/ContentNegotiationInterface.php
new file mode 100644
index 0000000..43f9850
--- /dev/null
+++ b/core/lib/Drupal/Core/ContentNegotiationInterface.php
@@ -0,0 +1,30 @@
+<?php
+
+/**
+ * @file
+ * Definition of Drupal\Core\ContentNegotiationInterface.
+ */
+
+namespace Drupal\Core;
+
+use Symfony\Component\HttpFoundation\Request;
+
+/**
+ * Provides content negotiation based upon query parameters.
+ */
+interface ContentNegotiationInterface {
+
+  /**
+   * Gets the normalized type of a request.
+   *
+   * The normalized type is a short, lowercase version of the format, such as
+   * 'html', 'json' or 'atom'.
+   *
+   * @param \Symfony\Component\HttpFoundation\Request $request
+   *   The request object from which to extract the content type.
+   *
+   * @return string
+   *   The normalized type of a given request.
+   */
+  public function getContentType(Request $request);
+}
diff --git a/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php b/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php
index 57d9054..dff6d2a 100644
--- a/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php
+++ b/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php
@@ -7,7 +7,6 @@
 
 namespace Drupal\Core\StackMiddleware;
 
-use Drupal\Core\ContentNegotiation;
 use Drupal\Core\ContentNegotiationInterface;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpKernel\HttpKernelInterface;
@@ -29,7 +28,7 @@ class NegotiationMiddleware implements HttpKernelInterface {
   /**
    * The content negotiator.
    *
-   * @var \Drupal\Core\ContentNegotiation
+   * @var \Drupal\Core\ContentNegotiationInterface
    */
   protected $negotiator;
 
@@ -45,10 +44,10 @@ class NegotiationMiddleware implements HttpKernelInterface {
    *
    * @param \Symfony\Component\HttpKernel\HttpKernelInterface $app
    *   The wrapper HTTP kernel
-   * @param \Drupal\Core\ContentNegotiation $negotiator
+   * @param \Drupal\Core\ContentNegotiationInterface $negotiator
    *   The content negotiator.
    */
-  public function __construct(HttpKernelInterface $app, ContentNegotiation $negotiator) {
+  public function __construct(HttpKernelInterface $app, ContentNegotiationInterface $negotiator) {
     $this->app = $app;
     $this->negotiator = $negotiator;
   }
