diff --git a/core/modules/views/src/Plugin/views/display/PathPluginBase.php b/core/modules/views/src/Plugin/views/display/PathPluginBase.php
index d1aee85..de605ab 100644
--- a/core/modules/views/src/Plugin/views/display/PathPluginBase.php
+++ b/core/modules/views/src/Plugin/views/display/PathPluginBase.php
@@ -136,6 +136,7 @@ protected function defineOptions() {
   protected function getRoute($view_id, $display_id) {
     $defaults = array(
       '_controller' => 'Drupal\views\Routing\ViewPageController::handle',
+      '_title_callback' => 'Drupal\views\Routing\ViewPageController::title',
       'view_id' => $view_id,
       'display_id' => $display_id,
       '_view_display_show_admin_links' => $this->getOption('show_admin_links'),
diff --git a/core/modules/views/src/Routing/ViewPageController.php b/core/modules/views/src/Routing/ViewPageController.php
index 7d0d2b6..71036ed 100644
--- a/core/modules/views/src/Routing/ViewPageController.php
+++ b/core/modules/views/src/Routing/ViewPageController.php
@@ -105,4 +105,51 @@ public function handle($view_id, $display_id, RouteMatchInterface $route_match)
     }
   }
 
+  /**
+   * Return the view's title for a given view and display.
+   *
+   * @param string $view_id
+   *   The ID of the view
+   * @param string $display_id
+   *   The ID of the display.
+   * @param \Drupal\Core\Routing\RouteMatchInterface $route_match
+   *   The route match.
+   * @return string
+   * @throws \Drupal\views\Routing\NotFoundHttpException
+   */
+  public function title($view_id, $display_id, RouteMatchInterface $route_match) {
+    $args = array();
+    $route = $route_match->getRouteObject();
+    $map = $route->hasOption('_view_argument_map') ? $route->getOption('_view_argument_map') : array();
+
+    foreach ($map as $attribute => $parameter_name) {
+      // Allow parameters be pulled from the request.
+      // The map stores the actual name of the parameter in the request. Views
+      // which override existing controller, use for example 'node' instead of
+      // arg_nid as name.
+      if (isset($map[$attribute])) {
+        $attribute = $map[$attribute];
+      }
+      if ($arg = $route_match->getRawParameter($attribute)) {
+      }
+      else {
+        $arg = $route_match->getParameter($attribute);
+      }
+
+      if (isset($arg)) {
+        $args[] = $arg;
+      }
+    }
+
+    $entity = $this->storage->load($view_id);
+    if (empty($entity)) {
+      throw new NotFoundHttpException(SafeMarkup::format('Page controller for view %id requested, but view was not found.', array('%id' => $view_id)));
+    }
+    $view = $this->executableFactory->get($entity);
+    $view->setDisplay($display_id);
+    $view->initHandlers();
+    $view->setArguments($args);
+    return $view->getTitle();
+  }
+
 }
