diff --git a/core/modules/block/block.module b/core/modules/block/block.module
index 1bca18b..6abc867 100644
--- a/core/modules/block/block.module
+++ b/core/modules/block/block.module
@@ -58,7 +58,7 @@ function block_help($path, $arg) {
     else {
       $demo_theme = \Drupal::config('system.theme')->get('default');
     }
-    $themes = list_themes();
+    $themes = \Drupal::service('theme_handler')->listInfo();
     $output = '<p>' . t('This page provides a drag-and-drop interface for adding a block to a region, and for controlling the order of blocks within regions. To add a block to a region, or to configure its specific title and visibility settings, click the block title under <em>Place blocks</em>. Since not all themes implement the same regions, or display regions in the same way, blocks are positioned on a per-theme basis. Remember that your changes will not be saved until you click the <em>Save blocks</em> button at the bottom of the page.') . '</p>';
     $output .= '<p>' . l(t('Demonstrate block regions (@theme)', array('@theme' => $themes[$demo_theme]->info['name'])), 'admin/structure/block/demo/' . $demo_theme) . '</p>';
     return $output;
@@ -388,7 +388,7 @@ function _block_get_renderable_block($element) {
  * Implements hook_rebuild().
  */
 function block_rebuild() {
-  foreach (list_themes() as $name => $data) {
+  foreach (\Drupal::service('theme_handler')->listInfo() as $name => $data) {
     if ($data->status) {
       _block_rehash($name);
     }
diff --git a/core/modules/block/custom_block/lib/Drupal/custom_block/Controller/CustomBlockController.php b/core/modules/block/custom_block/lib/Drupal/custom_block/Controller/CustomBlockController.php
index 3ed3842..284d9b3 100644
--- a/core/modules/block/custom_block/lib/Drupal/custom_block/Controller/CustomBlockController.php
+++ b/core/modules/block/custom_block/lib/Drupal/custom_block/Controller/CustomBlockController.php
@@ -90,7 +90,7 @@ public function addForm(CustomBlockTypeInterface $custom_block_type, Request $re
     $block = $this->customBlockStorage->create(array(
       'type' => $custom_block_type->id()
     ));
-    if (($theme = $request->query->get('theme')) && in_array($theme, array_keys(list_themes()))) {
+    if (($theme = $request->query->get('theme')) && in_array($theme, array_keys(\Drupal::service('theme_handler')->listInfo()))) {
       // We have navigated to this page from the block library and will keep track
       // of the theme for redirecting the user to the configuration page for the
       // newly created block in the given theme.
diff --git a/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/CustomBlockTypeTest.php b/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/CustomBlockTypeTest.php
index 82cb852..a603a00 100644
--- a/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/CustomBlockTypeTest.php
+++ b/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/CustomBlockTypeTest.php
@@ -152,7 +152,7 @@ public function testsCustomBlockAddTypes() {
       ->getStorageController('custom_block');
 
     // Enable all themes.
-    theme_enable(array('bartik', 'seven'));
+    \Drupal::service('theme_handler')->enable(array('bartik', 'seven'));
     $themes = array('bartik', 'seven', 'stark');
     $theme_settings = $this->container->get('config.factory')->get('system.theme');
     foreach ($themes as $default_theme) {
diff --git a/core/modules/block/lib/Drupal/block/BlockFormController.php b/core/modules/block/lib/Drupal/block/BlockFormController.php
index 4ce4c81..ef5bd60 100644
--- a/core/modules/block/lib/Drupal/block/BlockFormController.php
+++ b/core/modules/block/lib/Drupal/block/BlockFormController.php
@@ -229,7 +229,7 @@ public function form(array $form, array &$form_state) {
     }
     else {
       $theme_options = array();
-      foreach (list_themes() as $theme_name => $theme_info) {
+      foreach (\Drupal::service('theme_handler')->listInfo() as $theme_name => $theme_info) {
         if (!empty($theme_info->status)) {
           $theme_options[$theme_name] = $theme_info->info['name'];
         }
diff --git a/core/modules/block/lib/Drupal/block/Controller/BlockController.php b/core/modules/block/lib/Drupal/block/Controller/BlockController.php
index ebd9bc9..ee05f8c 100644
--- a/core/modules/block/lib/Drupal/block/Controller/BlockController.php
+++ b/core/modules/block/lib/Drupal/block/Controller/BlockController.php
@@ -26,7 +26,7 @@ class BlockController extends ControllerBase {
    *   A render array containing the CSS and title for the block region demo.
    */
   public function demo($theme) {
-    $themes = list_themes();
+    $themes = \Drupal::service('theme_handler')->listInfo();
     return array(
       '#title' => String::checkPlain($themes[$theme]->info['name']),
       '#attached' => array(
diff --git a/core/modules/block/lib/Drupal/block/Tests/BlockAdminThemeTest.php b/core/modules/block/lib/Drupal/block/Tests/BlockAdminThemeTest.php
index d553440..6265907 100644
--- a/core/modules/block/lib/Drupal/block/Tests/BlockAdminThemeTest.php
+++ b/core/modules/block/lib/Drupal/block/Tests/BlockAdminThemeTest.php
@@ -42,7 +42,7 @@ function testAdminTheme() {
     $this->assertResponse(403);
 
     // Enable admin theme and confirm that tab is accessible.
-    theme_enable(array('bartik'));
+    \Drupal::service('theme_handler')->enable(array('bartik'));
     $edit['admin_theme'] = 'bartik';
     $this->drupalPostForm('admin/appearance', $edit, t('Save configuration'));
     $this->drupalGet('admin/structure/block/list/bartik');
diff --git a/core/modules/block/lib/Drupal/block/Tests/BlockHiddenRegionTest.php b/core/modules/block/lib/Drupal/block/Tests/BlockHiddenRegionTest.php
index 3fa85d6..6fe57e1 100644
--- a/core/modules/block/lib/Drupal/block/Tests/BlockHiddenRegionTest.php
+++ b/core/modules/block/lib/Drupal/block/Tests/BlockHiddenRegionTest.php
@@ -60,7 +60,7 @@ public function testBlockNotInHiddenRegion() {
 
     // Enable "block_test_theme" and set it as the default theme.
     $theme = 'block_test_theme';
-    theme_enable(array($theme));
+    \Drupal::service('theme_handler')->enable(array($theme));
     \Drupal::config('system.theme')
       ->set('default', $theme)
       ->save();
diff --git a/core/modules/block/lib/Drupal/block/Tests/BlockTest.php b/core/modules/block/lib/Drupal/block/Tests/BlockTest.php
index e7b99e1..87364a3 100644
--- a/core/modules/block/lib/Drupal/block/Tests/BlockTest.php
+++ b/core/modules/block/lib/Drupal/block/Tests/BlockTest.php
@@ -158,7 +158,7 @@ function testBlock() {
    */
   public function testBlockThemeSelector() {
     // Enable all themes.
-    theme_enable(array('bartik', 'seven'));
+    \Drupal::service('theme_handler')->enable(array('bartik', 'seven'));
     $theme_settings = $this->container->get('config.factory')->get('system.theme');
     foreach (array('bartik', 'stark', 'seven') as $theme) {
       $this->drupalGet('admin/structure/block/list/' . $theme);
diff --git a/core/modules/block/lib/Drupal/block/Tests/NewDefaultThemeBlocksTest.php b/core/modules/block/lib/Drupal/block/Tests/NewDefaultThemeBlocksTest.php
index c544960..c4a4ffe 100644
--- a/core/modules/block/lib/Drupal/block/Tests/NewDefaultThemeBlocksTest.php
+++ b/core/modules/block/lib/Drupal/block/Tests/NewDefaultThemeBlocksTest.php
@@ -51,7 +51,7 @@ function testNewDefaultThemeBlocks() {
     // Enable a different theme.
     $new_theme = 'bartik';
     $this->assertFalse($new_theme == $default_theme, 'The new theme is different from the previous default theme.');
-    theme_enable(array($new_theme));
+    \Drupal::service('theme_handler')->enable(array($new_theme));
     \Drupal::config('system.theme')
       ->set('default', $new_theme)
       ->save();
diff --git a/core/modules/block/lib/Drupal/block/Tests/NonDefaultBlockAdminTest.php b/core/modules/block/lib/Drupal/block/Tests/NonDefaultBlockAdminTest.php
index 72f3d1d..cdfbdd9 100644
--- a/core/modules/block/lib/Drupal/block/Tests/NonDefaultBlockAdminTest.php
+++ b/core/modules/block/lib/Drupal/block/Tests/NonDefaultBlockAdminTest.php
@@ -33,7 +33,7 @@ function testNonDefaultBlockAdmin() {
     $admin_user = $this->drupalCreateUser(array('administer blocks', 'administer themes'));
     $this->drupalLogin($admin_user);
     $new_theme = 'bartik';
-    theme_enable(array($new_theme));
+    \Drupal::service('theme_handler')->enable(array($new_theme));
     $this->drupalGet('admin/structure/block/list/' . $new_theme);
     $this->assertText('Bartik(' . t('active tab') . ')', 'Tab for non-default theme found.');
   }
