diff --git a/core/lib/Drupal/Core/Extension/ThemeExtensionList.php b/core/lib/Drupal/Core/Extension/ThemeExtensionList.php
index e3a427f9c8314ef25599055c21dc48513d47f02d..a73782a61e0a2bc4439b87768fbf7d960dffb427 100644
--- a/core/lib/Drupal/Core/Extension/ThemeExtensionList.php
+++ b/core/lib/Drupal/Core/Extension/ThemeExtensionList.php
@@ -210,8 +210,14 @@ protected function fillInSubThemeData(array &$themes, array $sub_themes) {
    * @return array
    *   Returns an array of all of the theme's ancestors; the first element's
    *   value will be NULL if an error occurred.
+   *
+   * @deprecated in drupal:10.3.0 and is removed from drupal:12.0.0. There
+   *   is no direct replacement.
+   *
+   * @see https://www.drupal.org/node/3413187
    */
   public function getBaseThemes(array $themes, $theme) {
+    @trigger_error("\Drupal\Core\Extension\ThemeExtensionList::getBaseThemes() is deprecated in drupal:10.3.0 and is removed from drupal:12.0.0. There is no direct replacement. See https://www.drupal.org/node/3413187", E_USER_DEPRECATED);
     return $this->doGetBaseThemes($themes, $theme);
   }
 
diff --git a/core/lib/Drupal/Core/Extension/ThemeHandler.php b/core/lib/Drupal/Core/Extension/ThemeHandler.php
index cb6037c818baaf2f6f0f635123e18494e9048a66..792be25ab6da89c52163b34d54e37d6d9d1a6bfa 100644
--- a/core/lib/Drupal/Core/Extension/ThemeHandler.php
+++ b/core/lib/Drupal/Core/Extension/ThemeHandler.php
@@ -133,6 +133,7 @@ public function rebuildThemeData() {
    * {@inheritdoc}
    */
   public function getBaseThemes(array $themes, $theme) {
+    @trigger_error("\Drupal\Core\Extension\ThemeHandlerInterface::getBaseThemes() is deprecated in drupal:10.3.0 and is removed from drupal:12.0.0. There is no direct replacement. See https://www.drupal.org/node/3413187", E_USER_DEPRECATED);
     return $this->themeList->getBaseThemes($themes, $theme);
   }
 
diff --git a/core/lib/Drupal/Core/Extension/ThemeHandlerInterface.php b/core/lib/Drupal/Core/Extension/ThemeHandlerInterface.php
index 20d3db78957f2f300b73eb8e25d88848141572d0..55fab77ee53270b176a605ceb18e649338c4c770 100644
--- a/core/lib/Drupal/Core/Extension/ThemeHandlerInterface.php
+++ b/core/lib/Drupal/Core/Extension/ThemeHandlerInterface.php
@@ -98,6 +98,11 @@ public function rebuildThemeData();
    * @return array
    *   Returns an array of all of the theme's ancestors; the first element's
    *   value will be NULL if an error occurred.
+   *
+   * @deprecated in drupal:10.3.0 and is removed from drupal:12.0.0. There
+   *    is no direct replacement.
+   *
+   * @see https://www.drupal.org/node/3413187
    */
   public function getBaseThemes(array $themes, $theme);
 
diff --git a/core/tests/Drupal/Tests/Core/Extension/ThemeExtensionListTest.php b/core/tests/Drupal/Tests/Core/Extension/ThemeExtensionListTest.php
index 0f112489526be5243fcabc3c6a668d7f6bd67eac..118f884713ab601a185956f270f4b78943f0f806 100644
--- a/core/tests/Drupal/Tests/Core/Extension/ThemeExtensionListTest.php
+++ b/core/tests/Drupal/Tests/Core/Extension/ThemeExtensionListTest.php
@@ -116,7 +116,9 @@ public function testRebuildThemeDataWithThemeParents() {
    * @param array $expected
    *   The expected base themes.
    *
-   * @dataProvider providerTestGetBaseThemes
+   * @dataProvider providerTestDoGetBaseThemes
+   *
+   * @group legacy
    */
   public function testGetBaseThemes(array $themes, $theme, array $expected) {
     // Mocks and stubs.
@@ -126,18 +128,45 @@ public function testGetBaseThemes(array $themes, $theme, array $expected) {
     $theme_engine_list = $this->prophesize(ThemeEngineExtensionList::class);
     $theme_listing = new ThemeExtensionList($this->root, 'theme', new NullBackend('test'), new InfoParser($this->root), $module_handler->reveal(), $state, $config_factory, $theme_engine_list->reveal(), 'test');
 
+    $this->expectDeprecation("\Drupal\Core\Extension\ThemeExtensionList::getBaseThemes() is deprecated in drupal:10.3.0 and is removed from drupal:12.0.0. There is no direct replacement. See https://www.drupal.org/node/3413187");
     $base_themes = $theme_listing->getBaseThemes($themes, $theme);
 
     $this->assertEquals($expected, $base_themes);
   }
 
   /**
-   * Provides test data for testGetBaseThemes.
+   * Tests getting the base themes for a set of defined themes.
+   *
+   * @param array $themes
+   *   An array of available themes, keyed by the theme name.
+   * @param string $theme
+   *   The theme name to find all its base themes.
+   * @param array $expected
+   *   The expected base themes.
+   *
+   * @dataProvider providerTestDoGetBaseThemes
+   */
+  public function testDoGetBaseThemes(array $themes, $theme, array $expected): void {
+    // Mocks and stubs.
+    $module_handler = $this->prophesize(ModuleHandlerInterface::class);
+    $state = new State(new KeyValueMemoryFactory());
+    $config_factory = $this->getConfigFactoryStub([]);
+    $theme_engine_list = $this->prophesize(ThemeEngineExtensionList::class);
+    $theme_listing = new ThemeExtensionList($this->root, 'theme', new NullBackend('test'), new InfoParser($this->root), $module_handler->reveal(), $state, $config_factory, $theme_engine_list->reveal(), 'test');
+
+    $method_to_test = (new \ReflectionObject($theme_listing))->getMethod('doGetBaseThemes');
+    $base_themes = $method_to_test->invoke($theme_listing, $themes, $theme);
+
+    $this->assertEquals($expected, $base_themes);
+  }
+
+  /**
+   * Provides test data for testDoGetBaseThemes.
    *
    * @return array
    *   An array of theme test data.
    */
-  public static function providerTestGetBaseThemes() {
+  public static function providerTestDoGetBaseThemes() {
     $data = [];
 
     // Tests a theme without any base theme.