diff --git a/core/core.services.yml b/core/core.services.yml
index b832314..1d1f539 100644
--- a/core/core.services.yml
+++ b/core/core.services.yml
@@ -966,7 +966,7 @@ services:
       - { name: access_check, applies_to: _entity_create_access }
   access_check.theme:
     class: Drupal\Core\Theme\ThemeAccessCheck
-    arguments: ['@theme_handler']
+    arguments: ['@theme.initialization']
     tags:
       - { name: access_check, applies_to: _access_theme }
   access_check.custom:
diff --git a/core/lib/Drupal/Core/Theme/ActiveTheme.php b/core/lib/Drupal/Core/Theme/ActiveTheme.php
index c35afad..5ea39fe 100644
--- a/core/lib/Drupal/Core/Theme/ActiveTheme.php
+++ b/core/lib/Drupal/Core/Theme/ActiveTheme.php
@@ -81,6 +81,13 @@ class ActiveTheme {
   protected $regions;
 
   /**
+   * The installation status of a theme.
+   *
+   * @var bool
+   */
+  protected $status;
+
+  /**
    * Constructs an ActiveTheme object.
    *
    * @param array $values
@@ -88,6 +95,7 @@ class ActiveTheme {
    */
   public function __construct(array $values) {
     $values += [
+      'status' => TRUE,
       'path' => '',
       'engine' => 'twig',
       'owner' => 'twig',
@@ -98,6 +106,7 @@ public function __construct(array $values) {
       'regions' => [],
     ];
 
+    $this->status = $values['status'];
     $this->name = $values['name'];
     $this->path = $values['path'];
     $this->engine = $values['engine'];
@@ -110,6 +119,16 @@ public function __construct(array $values) {
   }
 
   /**
+   * Returns the installation status of a theme.
+   *
+   * @return bool
+   *   TRUE if the theme is installed.
+   */
+  public function getStatus() {
+    return $this->status;
+  }
+
+  /**
    * Returns the machine name of the theme.
    *
    * @return string
diff --git a/core/lib/Drupal/Core/Theme/ThemeAccessCheck.php b/core/lib/Drupal/Core/Theme/ThemeAccessCheck.php
index fdd6c77..0e35d46 100644
--- a/core/lib/Drupal/Core/Theme/ThemeAccessCheck.php
+++ b/core/lib/Drupal/Core/Theme/ThemeAccessCheck.php
@@ -17,20 +17,20 @@
 class ThemeAccessCheck implements AccessInterface {
 
   /**
-   * The theme handler.
+   * The theme initialization.
    *
-   * @var \Drupal\Core\Extension\ThemeHandlerInterface
+   * @var \Drupal\Core\Theme\ThemeInitialization
    */
-  protected $themeHandler;
+  protected $themeInitialization;
 
   /**
    * Constructs a \Drupal\Core\Theme\Registry object.
    *
-   * @param \Drupal\Core\Extension\ThemeHandlerInterface $theme_handler
-   *   The theme handler.
+   * @param \Drupal\Core\Theme\ThemeInitialization $theme_initialization
+   *   The theme initialization.
    */
-  public function __construct(ThemeHandlerInterface $theme_handler) {
-    $this->themeHandler = $theme_handler;
+  public function __construct(ThemeInitialization $theme_initialization) {
+    $this->themeInitialization = $theme_initialization;
   }
   /**
    * Checks access to the theme for routing.
@@ -56,8 +56,8 @@ public function access($theme) {
    *   TRUE if the theme is installed, FALSE otherwise.
    */
   public function checkAccess($theme) {
-    $themes = $this->themeHandler->listInfo();
-    return !empty($themes[$theme]->status);
+    $theme = $this->themeInitialization->getActiveThemeByName($theme);
+    return $theme->getStatus();
   }
 
 }
