diff --git a/core/modules/views/lib/Drupal/views/Routing/ViewPageController.php b/core/modules/views/lib/Drupal/views/Routing/ViewPageController.php
index 3e34891..e3af630 100644
--- a/core/modules/views/lib/Drupal/views/Routing/ViewPageController.php
+++ b/core/modules/views/lib/Drupal/views/Routing/ViewPageController.php
@@ -60,10 +60,7 @@ public static function create(ContainerInterface $container) {
   /**
    * Handles a response for a view.
    */
-  public function handle(Request $request) {
-    $view_id = $request->attributes->get('view_id');
-    $display_id = $request->attributes->get('display_id');
-
+  public function handle(Request $request, $view_id, $display_id, $_view_argument_map = array()) {
     $entity = $this->storage->load($view_id);
     if (empty($entity)) {
       throw new NotFoundHttpException(String::format('Page controller for view %id requested, but view was not found.', array('%id' => $view_id)));
@@ -74,28 +71,22 @@ public function handle(Request $request) {
     $view->initHandlers();
 
     $args = array();
-    $map = $request->attributes->get('_view_argument_map', array());
     $arguments_length = count($view->argument);
     for ($argument_index = 0; $argument_index < $arguments_length; $argument_index++) {
-      // 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.
-      $attribute = 'arg_' . $argument_index;
-      if (isset($map[$attribute])) {
-        $attribute = $map[$attribute];
+      // The map stores the actual name of the route parameter: for example,
+      // 'node' instead of 'arg_0'.
+      // @todo Remove or document why there's a fallback for the map missing
+      //   an entry.
+      $key = 'arg_' . $argument_index;
+      $parameter_name = isset($_view_argument_map[$key]) ? $_view_argument_map[$key] : $key;
 
-        // First try to get from the original values then on the not converted
-        // ones.
-        if ($request->attributes->has('_raw_variables')) {
-          $arg = $request->attributes->get('_raw_variables')->get($attribute);
-        }
-        else {
-          $arg = $request->attributes->get($attribute);
-        }
+      // First try to get from the original values then on the not converted
+      // ones.
+      if ($request->attributes->has('_raw_variables')) {
+        $arg = $request->attributes->get('_raw_variables')->get($parameter_name);
       }
       else {
-        $arg = $request->attributes->get($attribute);
+        $arg = $request->attributes->get($parameter_name);
       }
 
       if (isset($arg)) {
diff --git a/core/modules/views/tests/Drupal/views/Tests/Routing/ViewPageControllerTest.php b/core/modules/views/tests/Drupal/views/Tests/Routing/ViewPageControllerTest.php
index 4a52eac..dd637f7 100644
--- a/core/modules/views/tests/Drupal/views/Tests/Routing/ViewPageControllerTest.php
+++ b/core/modules/views/tests/Drupal/views/Tests/Routing/ViewPageControllerTest.php
@@ -93,10 +93,7 @@ public function testPageController() {
       ->will($this->returnValue($executable));
 
     $request = new Request();
-    $request->attributes->set('view_id', 'test_page_view');
-    $request->attributes->set('display_id', 'default');
-
-    $output = $this->pageController->handle($request);
+    $output = $this->pageController->handle($request, 'test_page_view', 'default');
     $this->assertInternalType('array', $output);
     $this->assertEquals(array('#markup' => 'example output'), $output);
   }
@@ -137,12 +134,10 @@ public function testHandleWithArgumentsWithoutOverridden() {
       ->will($this->returnValue($executable));
 
     $request = new Request();
-    $request->attributes->set('view_id', 'test_page_view');
-    $request->attributes->set('display_id', 'page_1');
     // Add the argument to the request.
     $request->attributes->set('arg_0', 'test-argument');
 
-    $this->pageController->handle($request);
+    $this->pageController->handle($request, 'test_page_view', 'page_1');
   }
 
   /**
@@ -183,15 +178,9 @@ public function testHandleWithArgumentsOnOveriddenRoute() {
       ->will($this->returnValue($executable));
 
     $request = new Request();
-    $request->attributes->set('view_id', 'test_page_view');
-    $request->attributes->set('display_id', 'page_1');
-    // Add the argument to the request.
     $request->attributes->set('parameter', 'test-argument');
-    $request->attributes->set('_view_argument_map', array(
-      'arg_0' => 'parameter',
-    ));
 
-    $this->pageController->handle($request);
+    $this->pageController->handle($request, 'test_page_view', 'page_1', array('arg_0' => 'parameter'));
   }
 
   /**
@@ -233,18 +222,12 @@ public function testHandleWithArgumentsOnOveriddenRouteWithUpcasting() {
       ->will($this->returnValue($executable));
 
     $request = new Request();
-    $request->attributes->set('view_id', 'test_page_view');
-    $request->attributes->set('display_id', 'page_1');
     // Add the argument to the request.
     $request->attributes->set('test_entity', $this->getMock('Drupal\Core\Entity\EntityInterface'));
     $raw_variables = new ParameterBag(array('test_entity' => 'example_id'));
     $request->attributes->set('_raw_variables', $raw_variables);
 
-    $request->attributes->set('_view_argument_map', array(
-      'arg_0' => 'test_entity',
-    ));
-
-    $this->pageController->handle($request);
+    $this->pageController->handle($request, 'test_page_view', 'page_1', array('arg_0' => 'test_entity'));
   }
 
   /**
@@ -255,11 +238,8 @@ public function testHandleWithArgumentsOnOveriddenRouteWithUpcasting() {
   public function testHandleWithNotExistingView() {
     // Pass in a non existent view.
     $random_view_id = $this->randomName();
-
     $request = new Request();
-    $request->attributes->set('view_id', $random_view_id);
-    $request->attributes->set('display_id', 'default');
-    $this->pageController->handle($request);
+    $this->pageController->handle($request, $random_view_id, 'default');
   }
 
 }
