diff --git a/core/modules/system/src/Tests/Menu/MenuTranslateTest.php b/core/modules/system/src/Tests/Menu/MenuTranslateTest.php
index e316c95..9375bd1 100644
--- a/core/modules/system/src/Tests/Menu/MenuTranslateTest.php
+++ b/core/modules/system/src/Tests/Menu/MenuTranslateTest.php
@@ -11,10 +11,9 @@
 use Drupal\simpletest\WebTestBase;
 
 /**
- * Tests the _menu_translate() method.
+ * Tests the route access checks on menu links.
  *
  * @group Menu
- * @see _menu_translate().
  */
 class MenuTranslateTest extends WebTestBase {
 
@@ -23,12 +22,26 @@ class MenuTranslateTest extends WebTestBase {
    *
    * @var array
    */
-  public static $modules = array('menu_test');
+  public static $modules = array('menu_test', 'block');
 
   /**
-   * Tests _menu_translate().
+   * Tests menu link for route with access check.
+   *
+   * @see \Drupal\menu_test\Access\AccessCheck::access()
    */
-  public function testMenuTranslate() {
+  public function testMenuBlockLinksAccessCheck() {
+    $this->drupalPlaceBlock('system_menu_block:account');
+    // Test that there's link rendered on the route.
+    $this->drupalGet('menu_test_access_check_session');
+    $this->assertLink('Test custom route access check');
+    // Page still accessible but thre should not be menu link.
+    $this->drupalGet('menu_test_access_check_session');
+    $this->assertResponse(200);
+    $this->assertNoLink('Test custom route access check');
+    // Test that page is no more accessible.
+    $this->drupalGet('menu_test_access_check_session');
+    $this->assertResponse(403);
+
     // Check for access to a restricted local task from a default local task.
     $this->drupalGet('foo/asdf');
     $this->assertResponse(200);
diff --git a/core/modules/system/tests/modules/menu_test/menu_test.links.menu.yml b/core/modules/system/tests/modules/menu_test/menu_test.links.menu.yml
index 914fbd5..cfd4c98 100644
--- a/core/modules/system/tests/modules/menu_test/menu_test.links.menu.yml
+++ b/core/modules/system/tests/modules/menu_test/menu_test.links.menu.yml
@@ -79,3 +79,8 @@ menu_test.child:
   title: 'Test menu_name child'
   route_name: menu_test.menu_name_test
   parent: menu_test.parent
+
+menu_test.access_check:
+  title: 'Test custom route access check'
+  route_name: menu_test.router_test_session
+  menu_name: account
diff --git a/core/modules/system/tests/modules/menu_test/menu_test.routing.yml b/core/modules/system/tests/modules/menu_test/menu_test.routing.yml
index 33a337b..a1a2f93 100644
--- a/core/modules/system/tests/modules/menu_test/menu_test.routing.yml
+++ b/core/modules/system/tests/modules/menu_test/menu_test.routing.yml
@@ -67,6 +67,15 @@ menu_test.router_test3:
   requirements:
     _access: 'FALSE'
 
+menu_test.router_test_session:
+  path: '/menu_test_access_check_session'
+  defaults:
+    _controller: '\Drupal\menu_test\TestControllers::testSession'
+  options:
+    no_cache: TRUE
+  requirements:
+    _menu_test_session_access: 'TRUE'
+
 menu_test.local_action1:
   path: '/menu-test-local-action'
   defaults:
diff --git a/core/modules/system/tests/modules/menu_test/menu_test.services.yml b/core/modules/system/tests/modules/menu_test/menu_test.services.yml
index 8841320..81f1f50 100644
--- a/core/modules/system/tests/modules/menu_test/menu_test.services.yml
+++ b/core/modules/system/tests/modules/menu_test/menu_test.services.yml
@@ -3,3 +3,8 @@ services:
     class: Drupal\menu_test\Theme\TestThemeNegotiator
     tags:
       - { name: theme_negotiator }
+
+  access_check.menu_test_session:
+    class: Drupal\menu_test\Access\AccessCheck
+    tags:
+      - { name: access_check, applies_to: _menu_test_session_access }
diff --git a/core/modules/system/tests/modules/menu_test/src/Access/AccessCheck.php b/core/modules/system/tests/modules/menu_test/src/Access/AccessCheck.php
new file mode 100644
index 0000000..c6b9054
--- /dev/null
+++ b/core/modules/system/tests/modules/menu_test/src/Access/AccessCheck.php
@@ -0,0 +1,33 @@
+<?php
+/**
+ * @file
+ * Contains \Drupal\menu_test\Access\AccessCheck.
+ */
+
+namespace Drupal\menu_test\Access;
+
+use Drupal\Core\Access\AccessResult;
+use Drupal\Core\Routing\Access\AccessInterface;
+
+/**
+ * Checks access based on the 'menu_test' key in session.
+ */
+class AccessCheck implements AccessInterface {
+
+  /**
+   * Check to see if user accessed this page.
+   *
+   * @return \Drupal\Core\Access\AccessResultInterface
+   *   The access result.
+   */
+  public function access() {
+    if (!isset($_SESSION['menu_test'])) {
+      $result = AccessResult::allowed();
+    }
+    else {
+      $result = AccessResult::allowedIf($_SESSION['menu_test'] < 2);
+    }
+    return $result->setCacheMaxAge(0);
+  }
+
+}
diff --git a/core/modules/system/tests/modules/menu_test/src/TestControllers.php b/core/modules/system/tests/modules/menu_test/src/TestControllers.php
index 836415c..4233a1d 100644
--- a/core/modules/system/tests/modules/menu_test/src/TestControllers.php
+++ b/core/modules/system/tests/modules/menu_test/src/TestControllers.php
@@ -39,6 +39,17 @@ public function test2() {
   /**
    * Prints out test data.
    */
+  public function testSession() {
+    if (!isset($_SESSION['menu_test'])) {
+      $_SESSION['menu_test'] = 0;
+    }
+    $_SESSION['menu_test']++;
+    return ['#markup' => SafeMarkup::format('Session menu_test is @count', ['@count' => $_SESSION['menu_test']])];
+  }
+
+  /**
+   * Prints out test data.
+   */
   public function testDerived() {
     return ['#markup' => 'testDerived'];
   }
