commit fdc80e2e16e30da1f6c7cfc28e0774863bba51df
Author: Laurent Chardin <laurent@chardin.org>
Date:   Mon May 20 21:58:05 2013 +0200

    Issue 1978932

diff --git a/core/modules/overlay/lib/Drupal/overlay/Controller/OverlayController.php b/core/modules/overlay/lib/Drupal/overlay/Controller/OverlayController.php
new file mode 100644
index 0000000..c25c70e
--- /dev/null
+++ b/core/modules/overlay/lib/Drupal/overlay/Controller/OverlayController.php
@@ -0,0 +1,49 @@
+<?php
+/**
+ * @file
+ * Contains \Drupal\overlay\Controller\OverlayController.
+ */
+
+namespace Drupal\overlay\Controller;
+
+use Drupal\Core\Controller\ControllerInterface;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+use Symfony\Component\HttpFoundation\Response;
+
+/**
+ * Controller routines for overlay routes.
+ *
+ * TODO: keeping the controllerInterface since we should be injecting
+ * something to take care of the overlay_render_region() call.
+ */
+class OverlayController implements ControllerInterface {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function create(ContainerInterface $container) {
+    return new static();
+  }
+
+  /**
+   * Constructs a OverlayController object.
+   */
+  public function __construct() {
+  }
+
+  /**
+   * Prints the markup obtained by rendering a single region of the page.
+   *
+   * This function is intended to be called via Ajax.
+   *
+   * TODO: add a DI for managing the overlay_render_region() call.
+   *
+   * @param $region
+   *   The name of the page region to render.
+   *
+   * @see Drupal.overlay.refreshRegions()
+   */
+  public function regionRender($region) {
+    return new Response(overlay_render_region($region));
+  }
+}
diff --git a/core/modules/overlay/overlay.module b/core/modules/overlay/overlay.module
index 1566740..0916c69 100644
--- a/core/modules/overlay/overlay.module
+++ b/core/modules/overlay/overlay.module
@@ -27,13 +27,6 @@ function overlay_help($path, $arg) {
  * Implements hook_menu()
  */
 function overlay_menu() {
-  $items['overlay-ajax/%'] = array(
-    'title' => '',
-    'page callback' => 'overlay_ajax_render_region',
-    'page arguments' => array(1),
-    'access arguments' => array('access overlay'),
-    'type' => MENU_CALLBACK,
-  );
   $items['overlay/dismiss-message'] = array(
     'title' => '',
     'page callback' => 'overlay_user_dismiss_message',
@@ -985,17 +978,3 @@ function overlay_trigger_refresh() {
     unset($_SESSION['overlay_refresh_parent']);
   }
 }
-
-/**
- * Prints the markup obtained by rendering a single region of the page.
- *
- * This function is intended to be called via Ajax.
- *
- * @param $region
- *   The name of the page region to render.
- *
- * @see Drupal.overlay.refreshRegions()
- */
-function overlay_ajax_render_region($region) {
-  return new Response(overlay_render_region($region));
-}
diff --git a/core/modules/overlay/overlay.routing.yml b/core/modules/overlay/overlay.routing.yml
new file mode 100644
index 0000000..08cf944
--- /dev/null
+++ b/core/modules/overlay/overlay.routing.yml
@@ -0,0 +1,6 @@
+overlay_ajax:
+  pattern: '/overlay-ajax/{region}'
+  defaults:
+    _controller: '\Drupal\overlay\Controller\OverlayController::regionRender'
+  requirements:
+    _permission: 'access overlay'
