From d6694e233539623d8df735b937aefc44e2b248c0 Mon Sep 17 00:00:00 2001
From: catch <catch@35733.no-reply.drupal.org>
Date: Fri, 22 Nov 2019 09:58:15 +0000
Subject: [PATCH] Issue #3088492 by tim.plunkett: Remove deprecated code from
 Layout Builder

---
 .../layout_builder.services.yml               |   7 -
 .../src/Access/LayoutSectionAccessCheck.php   |  52 -------
 .../src/Controller/ChooseBlockController.php  |   6 +-
 .../Entity/LayoutBuilderEntityViewDisplay.php |  24 ----
 .../src/Form/DefaultsEntityForm.php           |   6 +-
 .../src/InlineBlockEntityOperations.php       |  16 +--
 .../src/LayoutEntityHelperTrait.php           |  23 ----
 .../src/Plugin/Block/InlineBlock.php          |   9 +-
 .../SectionStorage/DefaultsSectionStorage.php |  43 ------
 .../OverridesSectionStorage.php               |  37 +----
 .../SectionStorage/SectionStorageBase.php     |  22 ---
 .../SectionStorage/SectionStorageManager.php  |  24 +---
 .../SectionStorageManagerInterface.php        |  46 -------
 .../src/SectionStorageInterface.php           |  45 ------
 .../SimpleConfigSectionStorage.php            |  16 ---
 .../ContentPreviewToggleTest.php              |   5 +-
 .../InlineBlockTestBase.php                   |  17 ---
 .../src/Kernel/DefaultsSectionStorageTest.php |  14 --
 .../LayoutBuilderEntityViewDisplayTest.php    |  20 ---
 .../Kernel/OverridesSectionStorageTest.php    |  14 --
 .../src/Unit/DefaultsSectionStorageTest.php   | 128 ------------------
 .../src/Unit/LayoutEntityHelperTraitTest.php  |  49 +------
 .../LayoutTempstoreParamConverterTest.php     |   2 -
 .../src/Unit/OverridesSectionStorageTest.php  | 109 ---------------
 .../src/Unit/SectionStorageManagerTest.php    |  58 --------
 25 files changed, 13 insertions(+), 779 deletions(-)
 delete mode 100644 core/modules/layout_builder/src/Access/LayoutSectionAccessCheck.php

diff --git a/core/modules/layout_builder/layout_builder.services.yml b/core/modules/layout_builder/layout_builder.services.yml
index 6e94ed74d268..87c08814f620 100644
--- a/core/modules/layout_builder/layout_builder.services.yml
+++ b/core/modules/layout_builder/layout_builder.services.yml
@@ -6,13 +6,6 @@ services:
     class: Drupal\layout_builder\Access\LayoutBuilderAccessCheck
     tags:
       - { name: access_check, applies_to: _layout_builder_access }
-  access_check.entity.layout:
-    # Deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. Use
-    # access_check.entity.layout_builder_access instead. See
-    # https://www.drupal.org/node/3039551.
-    class: Drupal\layout_builder\Access\LayoutSectionAccessCheck
-    tags:
-      - { name: access_check, applies_to: _has_layout_section }
   plugin.manager.layout_builder.section_storage:
     class: Drupal\layout_builder\SectionStorage\SectionStorageManager
     parent: default_plugin_manager
diff --git a/core/modules/layout_builder/src/Access/LayoutSectionAccessCheck.php b/core/modules/layout_builder/src/Access/LayoutSectionAccessCheck.php
deleted file mode 100644
index e57218c9d949..000000000000
--- a/core/modules/layout_builder/src/Access/LayoutSectionAccessCheck.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-
-namespace Drupal\layout_builder\Access;
-
-use Drupal\Core\Access\AccessResult;
-use Drupal\Core\Routing\Access\AccessInterface;
-use Drupal\Core\Routing\RouteMatchInterface;
-use Drupal\Core\Session\AccountInterface;
-use Drupal\layout_builder\SectionStorageInterface;
-
-/**
- * Provides an access check for the Layout Builder UI.
- *
- * @internal
- *   Tagged services are internal.
- *
- * @todo Deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. Use
- *   \Drupal\layout_builder\Access\LayoutBuilderAccessCheck instead. See
- *   https://www.drupal.org/node/3039551.
- */
-class LayoutSectionAccessCheck implements AccessInterface {
-
-  /**
-   * Checks routing access to the layout.
-   *
-   * @param \Drupal\Core\Routing\RouteMatchInterface $route_match
-   *   The current route match.
-   * @param \Drupal\Core\Session\AccountInterface $account
-   *   The currently logged in account.
-   *
-   * @return \Drupal\Core\Access\AccessResultInterface
-   *   The access result.
-   */
-  public function access(RouteMatchInterface $route_match, AccountInterface $account) {
-    @trigger_error(__NAMESPACE__ . '\LayoutSectionAccessCheck is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. Use \Drupal\layout_builder\Access\LayoutBuilderAccessCheck instead. See https://www.drupal.org/node/3039551.', E_USER_DEPRECATED);
-    $section_storage = $route_match->getParameter('section_storage');
-
-    if (empty($section_storage)) {
-      return AccessResult::forbidden()->addCacheContexts(['route']);
-    }
-
-    if (!$section_storage instanceof SectionStorageInterface) {
-      $access = AccessResult::forbidden();
-    }
-    else {
-      $access = AccessResult::allowedIfHasPermission($account, 'configure any layout');
-    }
-
-    return $access->addCacheableDependency($section_storage);
-  }
-
-}
diff --git a/core/modules/layout_builder/src/Controller/ChooseBlockController.php b/core/modules/layout_builder/src/Controller/ChooseBlockController.php
index a20a351d56e4..5da534e68702 100644
--- a/core/modules/layout_builder/src/Controller/ChooseBlockController.php
+++ b/core/modules/layout_builder/src/Controller/ChooseBlockController.php
@@ -58,13 +58,9 @@ class ChooseBlockController implements ContainerInjectionInterface {
    * @param \Drupal\Core\Session\AccountInterface $current_user
    *   The current user.
    */
-  public function __construct(BlockManagerInterface $block_manager, EntityTypeManagerInterface $entity_type_manager, AccountInterface $current_user = NULL) {
+  public function __construct(BlockManagerInterface $block_manager, EntityTypeManagerInterface $entity_type_manager, AccountInterface $current_user) {
     $this->blockManager = $block_manager;
     $this->entityTypeManager = $entity_type_manager;
-    if (!$current_user) {
-      @trigger_error('The current_user service must be passed to ChooseBlockController::__construct(), it is required before Drupal 9.0.0.', E_USER_DEPRECATED);
-      $current_user = \Drupal::currentUser();
-    }
     $this->currentUser = $current_user;
   }
 
diff --git a/core/modules/layout_builder/src/Entity/LayoutBuilderEntityViewDisplay.php b/core/modules/layout_builder/src/Entity/LayoutBuilderEntityViewDisplay.php
index dc07388ba38b..8f3b02289998 100644
--- a/core/modules/layout_builder/src/Entity/LayoutBuilderEntityViewDisplay.php
+++ b/core/modules/layout_builder/src/Entity/LayoutBuilderEntityViewDisplay.php
@@ -341,30 +341,6 @@ protected function getContextsForEntity(FieldableEntityInterface $entity) {
     ] + $this->contextRepository()->getAvailableContexts();
   }
 
-  /**
-   * Gets the runtime sections for a given entity.
-   *
-   * @param \Drupal\Core\Entity\FieldableEntityInterface $entity
-   *   The entity.
-   *
-   * @return \Drupal\layout_builder\Section[]
-   *   The sections.
-   *
-   * @deprecated in drupal:8.7.0 and is removed from drupal:9.0.0.
-   *   \Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface::findByContext()
-   *   should be used instead. See https://www.drupal.org/node/3022574.
-   */
-  protected function getRuntimeSections(FieldableEntityInterface $entity) {
-    @trigger_error('\Drupal\layout_builder\Entity\LayoutBuilderEntityViewDisplay::getRuntimeSections() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. \Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface::findByContext() should be used instead. See https://www.drupal.org/node/3022574.', E_USER_DEPRECATED);
-    // For backwards compatibility, mimic the functionality of ::buildSections()
-    // by constructing a cacheable metadata object and retrieving the
-    // entity-based contexts.
-    $cacheability = new CacheableMetadata();
-    $contexts = $this->getContextsForEntity($entity);
-    $storage = $this->sectionStorageManager()->findByContext($contexts, $cacheability);
-    return $storage ? $storage->getSections() : [];
-  }
-
   /**
    * {@inheritdoc}
    *
diff --git a/core/modules/layout_builder/src/Form/DefaultsEntityForm.php b/core/modules/layout_builder/src/Form/DefaultsEntityForm.php
index 8fb71c52f9dc..df964916361f 100644
--- a/core/modules/layout_builder/src/Form/DefaultsEntityForm.php
+++ b/core/modules/layout_builder/src/Form/DefaultsEntityForm.php
@@ -50,12 +50,8 @@ class DefaultsEntityForm extends EntityForm {
    * @param \Drupal\Core\Entity\EntityTypeBundleInfoInterface $entity_type_bundle_info
    *   The entity type bundle info service.
    */
-  public function __construct(LayoutTempstoreRepositoryInterface $layout_tempstore_repository, EntityTypeBundleInfoInterface $entity_type_bundle_info = NULL) {
+  public function __construct(LayoutTempstoreRepositoryInterface $layout_tempstore_repository, EntityTypeBundleInfoInterface $entity_type_bundle_info) {
     $this->layoutTempstoreRepository = $layout_tempstore_repository;
-    if (!$entity_type_bundle_info) {
-      @trigger_error('The entity_type.bundle.info service must be passed to DefaultsEntityForm::__construct(), it is required before Drupal 9.0.0.', E_USER_DEPRECATED);
-      $entity_type_bundle_info = \Drupal::service('entity_type.bundle.info');
-    }
     $this->entityTypeBundleInfo = $entity_type_bundle_info;
   }
 
diff --git a/core/modules/layout_builder/src/InlineBlockEntityOperations.php b/core/modules/layout_builder/src/InlineBlockEntityOperations.php
index 37a14c1f5824..86c8adc442ee 100644
--- a/core/modules/layout_builder/src/InlineBlockEntityOperations.php
+++ b/core/modules/layout_builder/src/InlineBlockEntityOperations.php
@@ -2,7 +2,6 @@
 
 namespace Drupal\layout_builder;
 
-use Drupal\Core\Database\Connection;
 use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
 use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Entity\EntityTypeManagerInterface;
@@ -55,25 +54,13 @@ class InlineBlockEntityOperations implements ContainerInjectionInterface {
    *   The entity type manager service.
    * @param \Drupal\layout_builder\InlineBlockUsageInterface $usage
    *   Inline block usage tracking service.
-   * @param \Drupal\Core\Database\Connection $database
-   *   The database connection.
    * @param \Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface $section_storage_manager
    *   (optional) The section storage manager.
-   *
-   * @todo The current constructor signature is deprecated:
-   *   - The $section_storage_manager parameter is optional, but should become
-   *   required.
-   *   - The $database parameter is unused and should be removed.
-   *   Deprecate in https://www.drupal.org/node/3031492.
    */
-  public function __construct(EntityTypeManagerInterface $entityTypeManager, InlineBlockUsageInterface $usage, Connection $database, SectionStorageManagerInterface $section_storage_manager = NULL) {
+  public function __construct(EntityTypeManagerInterface $entityTypeManager, InlineBlockUsageInterface $usage, SectionStorageManagerInterface $section_storage_manager) {
     $this->entityTypeManager = $entityTypeManager;
     $this->blockContentStorage = $entityTypeManager->getStorage('block_content');
     $this->usage = $usage;
-    if ($section_storage_manager === NULL) {
-      @trigger_error('The plugin.manager.layout_builder.section_storage service must be passed to \Drupal\layout_builder\InlineBlockEntityOperations::__construct(). It was added in Drupal 8.7.0 and will be required before Drupal 9.0.0.', E_USER_DEPRECATED);
-      $section_storage_manager = \Drupal::service('plugin.manager.layout_builder.section_storage');
-    }
     $this->sectionStorageManager = $section_storage_manager;
   }
 
@@ -84,7 +71,6 @@ public static function create(ContainerInterface $container) {
     return new static(
       $container->get('entity_type.manager'),
       $container->get('inline_block.usage'),
-      $container->get('database'),
       $container->get('plugin.manager.layout_builder.section_storage')
     );
   }
diff --git a/core/modules/layout_builder/src/LayoutEntityHelperTrait.php b/core/modules/layout_builder/src/LayoutEntityHelperTrait.php
index 53b74490ab8e..1abf32217884 100644
--- a/core/modules/layout_builder/src/LayoutEntityHelperTrait.php
+++ b/core/modules/layout_builder/src/LayoutEntityHelperTrait.php
@@ -11,7 +11,6 @@
 use Drupal\Core\Plugin\Context\ContextDefinition;
 use Drupal\Core\Plugin\Context\EntityContext;
 use Drupal\layout_builder\Entity\LayoutEntityDisplayInterface;
-use Drupal\layout_builder\Plugin\SectionStorage\OverridesSectionStorage;
 
 /**
  * Methods to help with entities using the layout builder.
@@ -124,28 +123,6 @@ protected function getSectionStorageForEntity(EntityInterface $entity) {
     return $this->sectionStorageManager()->findByContext($contexts, new CacheableMetadata());
   }
 
-  /**
-   * Determines if an entity is using a field for the layout override.
-   *
-   * @param \Drupal\Core\Entity\EntityInterface $entity
-   *   The entity.
-   *
-   * @return bool
-   *   TRUE if the entity is using a field for a layout override.
-   *
-   * @deprecated in drupal:8.7.0 and is removed from drupal:9.0.0.
-   *   To determine if an entity has a layout override, use
-   *   \Drupal\layout_builder\LayoutEntityHelperTrait::getSectionStorageForEntity()
-   *   and check whether the result is an instance of
-   *   \Drupal\layout_builder\DefaultsSectionStorageInterface.
-   *
-   * @see https://www.drupal.org/node/3030609
-   */
-  protected function isEntityUsingFieldOverride(EntityInterface $entity) {
-    @trigger_error('\Drupal\layout_builder\LayoutEntityHelperTrait::isEntityUsingFieldOverride() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. Internal storage of overrides may change so the existence of the field does not necessarily guarantee an overridable entity. See https://www.drupal.org/node/3030609.', E_USER_DEPRECATED);
-    return $entity instanceof FieldableEntityInterface && $entity->hasField(OverridesSectionStorage::FIELD_NAME);
-  }
-
   /**
    * Determines if the original entity used the default section storage.
    *
diff --git a/core/modules/layout_builder/src/Plugin/Block/InlineBlock.php b/core/modules/layout_builder/src/Plugin/Block/InlineBlock.php
index 01f64eb37f7c..0f2288d7b508 100644
--- a/core/modules/layout_builder/src/Plugin/Block/InlineBlock.php
+++ b/core/modules/layout_builder/src/Plugin/Block/InlineBlock.php
@@ -84,20 +84,15 @@ class InlineBlock extends BlockBase implements ContainerFactoryPluginInterface,
    * @param \Drupal\Core\Session\AccountInterface $current_user
    *   The current user.
    */
-  public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager, EntityDisplayRepositoryInterface $entity_display_repository, AccountInterface $current_user = NULL) {
+  public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager, EntityDisplayRepositoryInterface $entity_display_repository, AccountInterface $current_user) {
     parent::__construct($configuration, $plugin_id, $plugin_definition);
 
     $this->entityTypeManager = $entity_type_manager;
     $this->entityDisplayRepository = $entity_display_repository;
+    $this->currentUser = $current_user;
     if (!empty($this->configuration['block_revision_id']) || !empty($this->configuration['block_serialized'])) {
       $this->isNew = FALSE;
     }
-
-    if (!$current_user) {
-      @trigger_error('The current_user service must be passed to InlineBlock::__construct(), it is required before Drupal 9.0.0.', E_USER_DEPRECATED);
-      $current_user = \Drupal::currentUser();
-    }
-    $this->currentUser = $current_user;
   }
 
   /**
diff --git a/core/modules/layout_builder/src/Plugin/SectionStorage/DefaultsSectionStorage.php b/core/modules/layout_builder/src/Plugin/SectionStorage/DefaultsSectionStorage.php
index de8f1bfc4521..140a91213cc6 100644
--- a/core/modules/layout_builder/src/Plugin/SectionStorage/DefaultsSectionStorage.php
+++ b/core/modules/layout_builder/src/Plugin/SectionStorage/DefaultsSectionStorage.php
@@ -213,49 +213,6 @@ protected function getEntityTypes() {
     });
   }
 
-  /**
-   * {@inheritdoc}
-   */
-  public function extractIdFromRoute($value, $definition, $name, array $defaults) {
-    @trigger_error('\Drupal\layout_builder\SectionStorageInterface::extractIdFromRoute() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. \Drupal\layout_builder\SectionStorageInterface::deriveContextsFromRoute() should be used instead. See https://www.drupal.org/node/3016262.', E_USER_DEPRECATED);
-    if (is_string($value) && strpos($value, '.') !== FALSE) {
-      return $value;
-    }
-
-    // If a bundle is not provided but a value corresponding to the bundle key
-    // is, use that for the bundle value.
-    if (empty($defaults['bundle']) && isset($defaults['bundle_key']) && !empty($defaults[$defaults['bundle_key']])) {
-      $defaults['bundle'] = $defaults[$defaults['bundle_key']];
-    }
-
-    if (!empty($defaults['entity_type_id']) && !empty($defaults['bundle']) && !empty($defaults['view_mode_name'])) {
-      return $defaults['entity_type_id'] . '.' . $defaults['bundle'] . '.' . $defaults['view_mode_name'];
-    }
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getSectionListFromId($id) {
-    @trigger_error('\Drupal\layout_builder\SectionStorageInterface::getSectionListFromId() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. The section list should be derived from context. See https://www.drupal.org/node/3016262.', E_USER_DEPRECATED);
-    if (strpos($id, '.') === FALSE) {
-      throw new \InvalidArgumentException(sprintf('The "%s" ID for the "%s" section storage type is invalid', $id, $this->getStorageType()));
-    }
-
-    $storage = $this->entityTypeManager->getStorage('entity_view_display');
-    // If the display does not exist, create a new one.
-    if (!$display = $storage->load($id)) {
-      list($entity_type_id, $bundle, $view_mode) = explode('.', $id, 3);
-      $display = $storage->create([
-        'targetEntityType' => $entity_type_id,
-        'bundle' => $bundle,
-        'mode' => $view_mode,
-        'status' => TRUE,
-      ]);
-    }
-    return $display;
-  }
-
   /**
    * {@inheritdoc}
    */
diff --git a/core/modules/layout_builder/src/Plugin/SectionStorage/OverridesSectionStorage.php b/core/modules/layout_builder/src/Plugin/SectionStorage/OverridesSectionStorage.php
index eb3e12ef9b99..d6c0729643a7 100644
--- a/core/modules/layout_builder/src/Plugin/SectionStorage/OverridesSectionStorage.php
+++ b/core/modules/layout_builder/src/Plugin/SectionStorage/OverridesSectionStorage.php
@@ -93,17 +93,13 @@ class OverridesSectionStorage extends SectionStorageBase implements ContainerFac
   /**
    * {@inheritdoc}
    */
-  public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager, EntityFieldManagerInterface $entity_field_manager, SectionStorageManagerInterface $section_storage_manager, EntityRepositoryInterface $entity_repository, AccountInterface $current_user = NULL) {
+  public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager, EntityFieldManagerInterface $entity_field_manager, SectionStorageManagerInterface $section_storage_manager, EntityRepositoryInterface $entity_repository, AccountInterface $current_user) {
     parent::__construct($configuration, $plugin_id, $plugin_definition);
 
     $this->entityTypeManager = $entity_type_manager;
     $this->entityFieldManager = $entity_field_manager;
     $this->sectionStorageManager = $section_storage_manager;
     $this->entityRepository = $entity_repository;
-    if (!$current_user) {
-      @trigger_error('The current_user service must be passed to OverridesSectionStorage::__construct(), it is required before Drupal 9.0.0.', E_USER_DEPRECATED);
-      $current_user = \Drupal::currentUser();
-    }
     $this->currentUser = $current_user;
   }
 
@@ -164,37 +160,6 @@ public function getTempstoreKey() {
     return $key;
   }
 
-  /**
-   * {@inheritdoc}
-   */
-  public function extractIdFromRoute($value, $definition, $name, array $defaults) {
-    @trigger_error('\Drupal\layout_builder\SectionStorageInterface::extractIdFromRoute() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. \Drupal\layout_builder\SectionStorageInterface::deriveContextsFromRoute() should be used instead. See https://www.drupal.org/node/3016262.', E_USER_DEPRECATED);
-    if (strpos($value, '.') !== FALSE) {
-      return $value;
-    }
-
-    if (isset($defaults['entity_type_id']) && !empty($defaults[$defaults['entity_type_id']])) {
-      $entity_type_id = $defaults['entity_type_id'];
-      $entity_id = $defaults[$entity_type_id];
-      return $entity_type_id . '.' . $entity_id;
-    }
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getSectionListFromId($id) {
-    @trigger_error('\Drupal\layout_builder\SectionStorageInterface::getSectionListFromId() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. The section list should be derived from context. See https://www.drupal.org/node/3016262.', E_USER_DEPRECATED);
-    if (strpos($id, '.') !== FALSE) {
-      list($entity_type_id, $entity_id) = explode('.', $id, 2);
-      $entity = $this->entityRepository->getActive($entity_type_id, $entity_id);
-      if ($entity instanceof FieldableEntityInterface && $entity->hasField(static::FIELD_NAME)) {
-        return $entity->get(static::FIELD_NAME);
-      }
-    }
-    throw new \InvalidArgumentException(sprintf('The "%s" ID for the "%s" section storage type is invalid', $id, $this->getStorageType()));
-  }
-
   /**
    * {@inheritdoc}
    */
diff --git a/core/modules/layout_builder/src/Plugin/SectionStorage/SectionStorageBase.php b/core/modules/layout_builder/src/Plugin/SectionStorage/SectionStorageBase.php
index 71b444a68c17..415fed907ef5 100644
--- a/core/modules/layout_builder/src/Plugin/SectionStorage/SectionStorageBase.php
+++ b/core/modules/layout_builder/src/Plugin/SectionStorage/SectionStorageBase.php
@@ -7,7 +7,6 @@
 use Drupal\Core\Plugin\ContextAwarePluginBase;
 use Drupal\layout_builder\Routing\LayoutBuilderRoutesTrait;
 use Drupal\layout_builder\Section;
-use Drupal\layout_builder\SectionListInterface;
 use Drupal\layout_builder\SectionStorageInterface;
 use Drupal\layout_builder\TempStoreIdentifierInterface;
 
@@ -18,27 +17,6 @@ abstract class SectionStorageBase extends ContextAwarePluginBase implements Sect
 
   use LayoutBuilderRoutesTrait;
 
-  /**
-   * Sets the section list on the storage.
-   *
-   * @param \Drupal\layout_builder\SectionListInterface $section_list
-   *   The section list.
-   *
-   * @internal
-   *   As of Drupal 8.7.0, this method should no longer be used. It previously
-   *   should only have been used during storage instantiation.
-   *
-   * @throws \Exception
-   *
-   * @deprecated in drupal:8.7.0 and is removed from drupal:9.0.0. This
-   *   method should no longer be used. The section list should be derived from
-   *   context. See https://www.drupal.org/node/3016262.
-   */
-  public function setSectionList(SectionListInterface $section_list) {
-    @trigger_error('\Drupal\layout_builder\SectionStorageInterface::setSectionList() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. This method should no longer be used. The section list should be derived from context. See https://www.drupal.org/node/3016262.', E_USER_DEPRECATED);
-    throw new \Exception('\Drupal\layout_builder\SectionStorageInterface::setSectionList() must no longer be called. The section list should be derived from context. See https://www.drupal.org/node/3016262.');
-  }
-
   /**
    * Gets the section list.
    *
diff --git a/core/modules/layout_builder/src/SectionStorage/SectionStorageManager.php b/core/modules/layout_builder/src/SectionStorage/SectionStorageManager.php
index f425187fa343..4d89ca6235d0 100644
--- a/core/modules/layout_builder/src/SectionStorage/SectionStorageManager.php
+++ b/core/modules/layout_builder/src/SectionStorage/SectionStorageManager.php
@@ -42,13 +42,9 @@ class SectionStorageManager extends DefaultPluginManager implements SectionStora
    * @param \Drupal\Core\Plugin\Context\ContextHandlerInterface $context_handler
    *   The context handler.
    */
-  public function __construct(\Traversable $namespaces, CacheBackendInterface $cache_backend, ModuleHandlerInterface $module_handler, ContextHandlerInterface $context_handler = NULL) {
+  public function __construct(\Traversable $namespaces, CacheBackendInterface $cache_backend, ModuleHandlerInterface $module_handler, ContextHandlerInterface $context_handler) {
     parent::__construct('Plugin/SectionStorage', $namespaces, $module_handler, SectionStorageInterface::class, SectionStorage::class);
 
-    if (!$context_handler) {
-      @trigger_error('The context.handler service must be passed to \Drupal\layout_builder\SectionStorage\SectionStorageManager::__construct(); it was added in Drupal 8.7.0 and will be required before Drupal 9.0.0.', E_USER_DEPRECATED);
-      $context_handler = \Drupal::service('context.handler');
-    }
     $this->contextHandler = $context_handler;
 
     $this->alterInfo('layout_builder_section_storage');
@@ -111,22 +107,4 @@ public function loadEmpty($type) {
     return $this->createInstance($type);
   }
 
-  /**
-   * {@inheritdoc}
-   */
-  public function loadFromStorageId($type, $id) {
-    @trigger_error('\Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface::loadFromStorageId() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. \Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface::load() should be used instead. See https://www.drupal.org/node/3012353.', E_USER_DEPRECATED);
-    $contexts = $this->loadEmpty($type)->deriveContextsFromRoute($id, [], '', []);
-    return $this->load($type, $contexts);
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function loadFromRoute($type, $value, $definition, $name, array $defaults) {
-    @trigger_error('\Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface::loadFromRoute() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. \Drupal\layout_builder\SectionStorageInterface::deriveContextsFromRoute() and \Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface::load() should be used instead. See https://www.drupal.org/node/3012353.', E_USER_DEPRECATED);
-    $contexts = $this->loadEmpty($type)->deriveContextsFromRoute($value, $definition, $name, $defaults);
-    return $this->load($type, $contexts);
-  }
-
 }
diff --git a/core/modules/layout_builder/src/SectionStorage/SectionStorageManagerInterface.php b/core/modules/layout_builder/src/SectionStorage/SectionStorageManagerInterface.php
index 323fee50bbb5..d2d5e42a005a 100644
--- a/core/modules/layout_builder/src/SectionStorage/SectionStorageManagerInterface.php
+++ b/core/modules/layout_builder/src/SectionStorage/SectionStorageManagerInterface.php
@@ -59,50 +59,4 @@ public function findByContext(array $contexts, RefinableCacheableDependencyInter
    */
   public function loadEmpty($type);
 
-  /**
-   * Loads a section storage populated with an existing section list.
-   *
-   * @param string $type
-   *   The section storage type.
-   * @param string $id
-   *   The section list ID.
-   *
-   * @return \Drupal\layout_builder\SectionStorageInterface
-   *   The section storage.
-   *
-   * @throws \InvalidArgumentException
-   *   Thrown if the ID is invalid.
-   *
-   * @deprecated in drupal:8.7.0 and is removed from drupal:9.0.0.
-   *   \Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface::load()
-   *   should be used instead. See https://www.drupal.org/node/3012353.
-   */
-  public function loadFromStorageId($type, $id);
-
-  /**
-   * Loads a section storage populated with a section list derived from a route.
-   *
-   * @param string $type
-   *   The section storage type.
-   * @param string $value
-   *   The raw value.
-   * @param mixed $definition
-   *   The parameter definition provided in the route options.
-   * @param string $name
-   *   The name of the parameter.
-   * @param array $defaults
-   *   The route defaults array.
-   *
-   * @return \Drupal\layout_builder\SectionStorageInterface|null
-   *   The section storage if it could be loaded, or NULL otherwise.
-   *
-   * @see \Drupal\Core\ParamConverter\ParamConverterInterface::convert()
-   *
-   * @deprecated in drupal:8.7.0 and is removed from drupal:9.0.0.
-   *   \Drupal\layout_builder\SectionStorageInterface::deriveContextsFromRoute()
-   *   and \Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface::load()
-   *   should be used instead. See https://www.drupal.org/node/3012353.
-   */
-  public function loadFromRoute($type, $value, $definition, $name, array $defaults);
-
 }
diff --git a/core/modules/layout_builder/src/SectionStorageInterface.php b/core/modules/layout_builder/src/SectionStorageInterface.php
index b555e9a9342c..35b3a9c87b8e 100644
--- a/core/modules/layout_builder/src/SectionStorageInterface.php
+++ b/core/modules/layout_builder/src/SectionStorageInterface.php
@@ -32,27 +32,6 @@ public function getStorageId();
    */
   public function getStorageType();
 
-  /**
-   * Derives the section list from the storage ID.
-   *
-   * @param string $id
-   *   The storage ID, see ::getStorageId().
-   *
-   * @return \Drupal\layout_builder\SectionListInterface
-   *   The section list.
-   *
-   * @throws \InvalidArgumentException
-   *   Thrown if the ID is invalid.
-   *
-   * @internal
-   *   This should only be called during section storage instantiation.
-   *
-   * @deprecated in drupal:8.7.0 and is removed from drupal:9.0.0. The
-   *   section list should be derived from context. See
-   *   https://www.drupal.org/node/3016262.
-   */
-  public function getSectionListFromId($id);
-
   /**
    * Provides the routes needed for Layout Builder UI.
    *
@@ -87,30 +66,6 @@ public function getRedirectUrl();
    */
   public function getLayoutBuilderUrl($rel = 'view');
 
-  /**
-   * Configures the plugin based on route values.
-   *
-   * @param mixed $value
-   *   The raw value.
-   * @param mixed $definition
-   *   The parameter definition provided in the route options.
-   * @param string $name
-   *   The name of the parameter.
-   * @param array $defaults
-   *   The route defaults array.
-   *
-   * @return string|null
-   *   The section storage ID if it could be extracted, NULL otherwise.
-   *
-   * @internal
-   *   This should only be called during section storage instantiation.
-   *
-   * @deprecated in drupal:8.7.0 and is removed from drupal:9.0.0.
-   *   \Drupal\layout_builder\SectionStorageInterface::deriveContextsFromRoute()
-   *   should be used instead. See https://www.drupal.org/node/3016262.
-   */
-  public function extractIdFromRoute($value, $definition, $name, array $defaults);
-
   /**
    * Derives the available plugin contexts from route values.
    *
diff --git a/core/modules/layout_builder/tests/modules/layout_builder_test/src/Plugin/SectionStorage/SimpleConfigSectionStorage.php b/core/modules/layout_builder/tests/modules/layout_builder_test/src/Plugin/SectionStorage/SimpleConfigSectionStorage.php
index a4149f5fde58..a17ededaea71 100644
--- a/core/modules/layout_builder/tests/modules/layout_builder_test/src/Plugin/SectionStorage/SimpleConfigSectionStorage.php
+++ b/core/modules/layout_builder/tests/modules/layout_builder_test/src/Plugin/SectionStorage/SimpleConfigSectionStorage.php
@@ -198,22 +198,6 @@ public function getContextsDuringPreview() {
     return $this->getContexts();
   }
 
-  /**
-   * {@inheritdoc}
-   */
-  public function getSectionListFromId($id) {
-    @trigger_error('\Drupal\layout_builder\SectionStorageInterface::getSectionListFromId() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. The section list should be derived from context. See https://www.drupal.org/node/3016262.', E_USER_DEPRECATED);
-    return $this;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function extractIdFromRoute($value, $definition, $name, array $defaults) {
-    @trigger_error('\Drupal\layout_builder\SectionStorageInterface::extractIdFromRoute() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. \Drupal\layout_builder\SectionStorageInterface::deriveContextsFromRoute() should be used instead. See https://www.drupal.org/node/3016262.', E_USER_DEPRECATED);
-    return $value ?: $defaults['id'];
-  }
-
   /**
    * {@inheritdoc}
    */
diff --git a/core/modules/layout_builder/tests/src/FunctionalJavascript/ContentPreviewToggleTest.php b/core/modules/layout_builder/tests/src/FunctionalJavascript/ContentPreviewToggleTest.php
index ee5dfb1f059d..af3c49cf646b 100644
--- a/core/modules/layout_builder/tests/src/FunctionalJavascript/ContentPreviewToggleTest.php
+++ b/core/modules/layout_builder/tests/src/FunctionalJavascript/ContentPreviewToggleTest.php
@@ -4,7 +4,6 @@
 
 use Drupal\FunctionalJavascriptTests\WebDriverTestBase;
 use Drupal\Tests\contextual\FunctionalJavascript\ContextualLinkClickTrait;
-use Zend\Stdlib\ArrayUtils;
 
 /**
  * Tests toggling of content preview.
@@ -149,10 +148,10 @@ protected function assertOrderInPage(array $items) {
     $blocks = $page->findAll('css', '[data-layout-content-preview-placeholder-label]');
 
     // Filter will only return value if block contains expected text.
-    $blocks_with_expected_text = ArrayUtils::filter($blocks, function ($block, $key) use ($items) {
+    $blocks_with_expected_text = array_filter($blocks, function ($block, $key) use ($items) {
       $block_text = $block->getText();
       return strpos($block_text, $items[$key]) !== FALSE;
-    }, ArrayUtils::ARRAY_FILTER_USE_BOTH);
+    }, ARRAY_FILTER_USE_BOTH);
 
     $this->assertCount(count($items), $blocks_with_expected_text);
   }
diff --git a/core/modules/layout_builder/tests/src/FunctionalJavascript/InlineBlockTestBase.php b/core/modules/layout_builder/tests/src/FunctionalJavascript/InlineBlockTestBase.php
index c3b7bf53da45..eba01b50f9aa 100644
--- a/core/modules/layout_builder/tests/src/FunctionalJavascript/InlineBlockTestBase.php
+++ b/core/modules/layout_builder/tests/src/FunctionalJavascript/InlineBlockTestBase.php
@@ -172,23 +172,6 @@ protected function configureInlineBlock($old_body, $new_body, $block_css_locator
     $this->assertDialogClosedAndTextVisible($new_body);
   }
 
-  /**
-   * Waits for an element to be removed from the page.
-   *
-   * @param string $selector
-   *   CSS selector.
-   * @param int $timeout
-   *   (optional) Timeout in milliseconds, defaults to 10000.
-   *
-   * @deprecated in drupal:8.8.0 and is removed from drupal:9.0.0. Use
-   *   Drupal\FunctionalJavascriptTests\JSWebAssert::assertNoElementAfterWait()
-   */
-  protected function waitForNoElement($selector, $timeout = 10000) {
-    @trigger_error('::waitForNoElement is deprecated in Drupal 8.8.0 and will be removed before Drupal 9.0.0. Use \Drupal\FunctionalJavascriptTests\JSWebAssert::assertNoElementAfterWait() instead.', E_USER_DEPRECATED);
-    $condition = "(typeof jQuery !== 'undefined' && jQuery('$selector').length === 0)";
-    $this->assertJsCondition($condition, $timeout);
-  }
-
   /**
    * Asserts that the dialog closes and the new text appears on the main canvas.
    *
diff --git a/core/modules/layout_builder/tests/src/Kernel/DefaultsSectionStorageTest.php b/core/modules/layout_builder/tests/src/Kernel/DefaultsSectionStorageTest.php
index 1a3eeeb7e8f0..bd87b2c65111 100644
--- a/core/modules/layout_builder/tests/src/Kernel/DefaultsSectionStorageTest.php
+++ b/core/modules/layout_builder/tests/src/Kernel/DefaultsSectionStorageTest.php
@@ -12,7 +12,6 @@
 use Drupal\layout_builder\Plugin\SectionStorage\DefaultsSectionStorage;
 use Drupal\layout_builder\Section;
 use Drupal\layout_builder\SectionComponent;
-use Drupal\layout_builder\SectionListInterface;
 use Drupal\layout_builder\SectionStorage\SectionStorageDefinition;
 
 /**
@@ -185,19 +184,6 @@ public function testGetContextsDuringPreview() {
     $this->assertSame('default', $result_value);
   }
 
-  /**
-   * @covers ::setSectionList
-   *
-   * @expectedDeprecation \Drupal\layout_builder\SectionStorageInterface::setSectionList() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. This method should no longer be used. The section list should be derived from context. See https://www.drupal.org/node/3016262.
-   * @group legacy
-   */
-  public function testSetSectionList() {
-    $section_list = $this->prophesize(SectionListInterface::class);
-    $this->expectException(\Exception::class);
-    $this->expectExceptionMessage('\Drupal\layout_builder\SectionStorageInterface::setSectionList() must no longer be called. The section list should be derived from context. See https://www.drupal.org/node/3016262.');
-    $this->plugin->setSectionList($section_list->reveal());
-  }
-
   /**
    * @covers ::getTempstoreKey
    */
diff --git a/core/modules/layout_builder/tests/src/Kernel/LayoutBuilderEntityViewDisplayTest.php b/core/modules/layout_builder/tests/src/Kernel/LayoutBuilderEntityViewDisplayTest.php
index 0e1639f8e2e0..81e4f8abbc3e 100644
--- a/core/modules/layout_builder/tests/src/Kernel/LayoutBuilderEntityViewDisplayTest.php
+++ b/core/modules/layout_builder/tests/src/Kernel/LayoutBuilderEntityViewDisplayTest.php
@@ -3,7 +3,6 @@
 namespace Drupal\Tests\layout_builder\Kernel;
 
 use Drupal\Core\Config\Schema\SchemaIncompleteException;
-use Drupal\entity_test\Entity\EntityTest;
 use Drupal\layout_builder\Entity\LayoutBuilderEntityViewDisplay;
 
 /**
@@ -42,25 +41,6 @@ public function testInvalidConfiguration() {
     $this->sectionStorage->save();
   }
 
-  /**
-   * @covers ::getRuntimeSections
-   * @group legacy
-   * @expectedDeprecation \Drupal\layout_builder\Entity\LayoutBuilderEntityViewDisplay::getRuntimeSections() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. \Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface::findByContext() should be used instead. See https://www.drupal.org/node/3022574.
-   */
-  public function testGetRuntimeSections() {
-    $this->container->get('current_user')->setAccount($this->createUser());
-
-    $entity = EntityTest::create();
-    $entity->save();
-
-    $reflection = new \ReflectionMethod($this->sectionStorage, 'getRuntimeSections');
-    $reflection->setAccessible(TRUE);
-
-    $result = $reflection->invoke($this->sectionStorage, $entity);
-
-    $this->assertEquals($this->sectionStorage->getSections(), $result);
-  }
-
   /**
    * @dataProvider providerTestIsLayoutBuilderEnabled
    */
diff --git a/core/modules/layout_builder/tests/src/Kernel/OverridesSectionStorageTest.php b/core/modules/layout_builder/tests/src/Kernel/OverridesSectionStorageTest.php
index 532a406adb6b..30f3ed16750d 100644
--- a/core/modules/layout_builder/tests/src/Kernel/OverridesSectionStorageTest.php
+++ b/core/modules/layout_builder/tests/src/Kernel/OverridesSectionStorageTest.php
@@ -13,7 +13,6 @@
 use Drupal\layout_builder\Plugin\SectionStorage\OverridesSectionStorage;
 use Drupal\layout_builder\Section;
 use Drupal\layout_builder\SectionComponent;
-use Drupal\layout_builder\SectionListInterface;
 use Drupal\Tests\user\Traits\UserCreationTrait;
 
 /**
@@ -208,19 +207,6 @@ public function testGetContextsDuringPreview() {
     $this->assertSame($context, $result['layout_builder.entity']);
   }
 
-  /**
-   * @covers ::setSectionList
-   *
-   * @expectedDeprecation \Drupal\layout_builder\SectionStorageInterface::setSectionList() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. This method should no longer be used. The section list should be derived from context. See https://www.drupal.org/node/3016262.
-   * @group legacy
-   */
-  public function testSetSectionList() {
-    $section_list = $this->prophesize(SectionListInterface::class);
-    $this->expectException(\Exception::class);
-    $this->expectExceptionMessage('\Drupal\layout_builder\SectionStorageInterface::setSectionList() must no longer be called. The section list should be derived from context. See https://www.drupal.org/node/3016262.');
-    $this->plugin->setSectionList($section_list->reveal());
-  }
-
   /**
    * @covers ::getDefaultSectionStorage
    */
diff --git a/core/modules/layout_builder/tests/src/Unit/DefaultsSectionStorageTest.php b/core/modules/layout_builder/tests/src/Unit/DefaultsSectionStorageTest.php
index 87580ad495b6..fcf84fdb1b8e 100644
--- a/core/modules/layout_builder/tests/src/Unit/DefaultsSectionStorageTest.php
+++ b/core/modules/layout_builder/tests/src/Unit/DefaultsSectionStorageTest.php
@@ -105,134 +105,6 @@ public function testThirdPartySettings() {
     $this->assertSame('value 2', $this->plugin->getThirdPartySetting('the_module', 'the_key'));
   }
 
-  /**
-   * @covers ::extractIdFromRoute
-   *
-   * @dataProvider providerTestExtractIdFromRoute
-   *
-   * @expectedDeprecation \Drupal\layout_builder\SectionStorageInterface::extractIdFromRoute() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. \Drupal\layout_builder\SectionStorageInterface::deriveContextsFromRoute() should be used instead. See https://www.drupal.org/node/3016262.
-   *
-   * @group legacy
-   */
-  public function testExtractIdFromRoute($expected, $value, array $defaults) {
-    $result = $this->plugin->extractIdFromRoute($value, [], 'the_parameter_name', $defaults);
-    $this->assertSame($expected, $result);
-  }
-
-  /**
-   * Provides data for ::testExtractIdFromRoute().
-   */
-  public function providerTestExtractIdFromRoute() {
-    $data = [];
-    $data['with value'] = [
-      'foo.bar.baz',
-      'foo.bar.baz',
-      [],
-    ];
-    $data['empty value, without bundle'] = [
-      'my_entity_type.bundle_name.default',
-      '',
-      [
-        'entity_type_id' => 'my_entity_type',
-        'view_mode_name' => 'default',
-        'bundle_key' => 'my_bundle',
-        'my_bundle' => 'bundle_name',
-      ],
-    ];
-    $data['empty value, with bundle'] = [
-      'my_entity_type.bundle_name.default',
-      '',
-      [
-        'entity_type_id' => 'my_entity_type',
-        'view_mode_name' => 'default',
-        'bundle' => 'bundle_name',
-      ],
-    ];
-    $data['without value, empty defaults'] = [
-      NULL,
-      '',
-      [],
-    ];
-    return $data;
-  }
-
-  /**
-   * @covers ::getSectionListFromId
-   *
-   * @dataProvider providerTestGetSectionListFromId
-   *
-   * @expectedDeprecation \Drupal\layout_builder\SectionStorageInterface::getSectionListFromId() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. The section list should be derived from context. See https://www.drupal.org/node/3016262.
-   *
-   * @group legacy
-   */
-  public function testGetSectionListFromId($success, $expected_entity_id, $value) {
-    if ($expected_entity_id) {
-      $entity_storage = $this->prophesize(EntityStorageInterface::class);
-      $entity_storage->load($expected_entity_id)->willReturn('the_return_value');
-
-      $this->entityTypeManager->getDefinition('entity_view_display')->willReturn(new EntityType(['id' => 'entity_view_display']));
-      $this->entityTypeManager->getStorage('entity_view_display')->willReturn($entity_storage->reveal());
-    }
-    else {
-      $this->entityTypeManager->getDefinition('entity_view_display')->shouldNotBeCalled();
-      $this->entityTypeManager->getStorage('entity_view_display')->shouldNotBeCalled();
-    }
-
-    if (!$success) {
-      $this->expectException(\InvalidArgumentException::class);
-    }
-
-    $result = $this->plugin->getSectionListFromId($value);
-    if ($success) {
-      $this->assertEquals('the_return_value', $result);
-    }
-  }
-
-  /**
-   * Provides data for ::testGetSectionListFromId().
-   */
-  public function providerTestGetSectionListFromId() {
-    $data = [];
-    $data['with value'] = [
-      TRUE,
-      'foo.bar.baz',
-      'foo.bar.baz',
-    ];
-    $data['without value, empty defaults'] = [
-      FALSE,
-      NULL,
-      '',
-    ];
-    return $data;
-  }
-
-  /**
-   * @covers ::getSectionListFromId
-   *
-   * @expectedDeprecation \Drupal\layout_builder\SectionStorageInterface::getSectionListFromId() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. The section list should be derived from context. See https://www.drupal.org/node/3016262.
-   *
-   * @group legacy
-   */
-  public function testGetSectionListFromIdCreate() {
-    $expected = 'the_return_value';
-    $value = 'foo.bar.baz';
-    $expected_create_values = [
-      'targetEntityType' => 'foo',
-      'bundle' => 'bar',
-      'mode' => 'baz',
-      'status' => TRUE,
-    ];
-    $entity_storage = $this->prophesize(EntityStorageInterface::class);
-    $entity_storage->load($value)->willReturn(NULL);
-    $entity_storage->create($expected_create_values)->willReturn($expected);
-
-    $this->entityTypeManager->getDefinition('entity_view_display')->willReturn(new EntityType(['id' => 'entity_view_display']));
-    $this->entityTypeManager->getStorage('entity_view_display')->willReturn($entity_storage->reveal());
-
-    $result = $this->plugin->getSectionListFromId($value);
-    $this->assertSame($expected, $result);
-  }
-
   /**
    * @covers ::extractEntityFromRoute
    *
diff --git a/core/modules/layout_builder/tests/src/Unit/LayoutEntityHelperTraitTest.php b/core/modules/layout_builder/tests/src/Unit/LayoutEntityHelperTraitTest.php
index 3f7e97b03a7d..71900e3dd8c0 100644
--- a/core/modules/layout_builder/tests/src/Unit/LayoutEntityHelperTraitTest.php
+++ b/core/modules/layout_builder/tests/src/Unit/LayoutEntityHelperTraitTest.php
@@ -2,13 +2,10 @@
 
 namespace Drupal\Tests\layout_builder\Unit;
 
-use Drupal\Component\Plugin\ConfigurablePluginInterface;
+use Drupal\Component\Plugin\ConfigurableInterface;
 use Drupal\Component\Plugin\DerivativeInspectionInterface;
 use Drupal\Component\Plugin\PluginInspectionInterface;
-use Drupal\Core\Entity\EntityInterface;
-use Drupal\Core\Entity\FieldableEntityInterface;
 use Drupal\layout_builder\LayoutEntityHelperTrait;
-use Drupal\layout_builder\Plugin\SectionStorage\OverridesSectionStorage;
 use Drupal\layout_builder\Section;
 use Drupal\layout_builder\SectionComponent;
 use Drupal\Tests\UnitTestCase;
@@ -20,43 +17,6 @@
  */
 class LayoutEntityHelperTraitTest extends UnitTestCase {
 
-  /**
-   * @covers ::isEntityUsingFieldOverride
-   *
-   * @dataProvider providerTestIsEntityUsingFieldOverride
-   *
-   * @expectedDeprecation \Drupal\layout_builder\LayoutEntityHelperTrait::isEntityUsingFieldOverride() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. Internal storage of overrides may change so the existence of the field does not necessarily guarantee an overridable entity. See https://www.drupal.org/node/3030609.
-   *
-   * @group legacy
-   */
-  public function testIsEntityUsingFieldOverride(EntityInterface $entity, $expected) {
-    $test_class = new TestClass();
-    $this->assertSame($expected, $test_class->isEntityUsingFieldOverride($entity));
-  }
-
-  /**
-   * Dataprovider for testIsEntityUsingFieldOverride().
-   */
-  public function providerTestIsEntityUsingFieldOverride() {
-    $data['non fieldable entity'] = [
-      $this->prophesize(EntityInterface::class)->reveal(),
-      FALSE,
-    ];
-    $fieldable_entity = $this->prophesize(FieldableEntityInterface::class);
-    $fieldable_entity->hasField(OverridesSectionStorage::FIELD_NAME)->willReturn(FALSE);
-    $data['fieldable entity without layout field'] = [
-      $fieldable_entity->reveal(),
-      FALSE,
-    ];
-    $entity_using_field = $this->prophesize(FieldableEntityInterface::class);
-    $entity_using_field->hasField(OverridesSectionStorage::FIELD_NAME)->willReturn(TRUE);
-    $data['fieldable entity with layout field'] = [
-      $entity_using_field->reveal(),
-      TRUE,
-    ];
-    return $data;
-  }
-
   /**
    * Dataprovider method for tests that need sections with inline blocks.
    */
@@ -77,7 +37,7 @@ public function providerSectionsWithInlineComponents() {
 
     // Ensure that inline block component is returned.
     $inline_component = $this->prophesize(SectionComponent::class);
-    $inline_plugin = $this->prophesize(DerivativeInspectionInterface::class)->willImplement(ConfigurablePluginInterface::class);
+    $inline_plugin = $this->prophesize(DerivativeInspectionInterface::class)->willImplement(ConfigurableInterface::class);
     $inline_plugin->getBaseId()->willReturn('inline_block');
     $inline_plugin->getConfiguration()->willReturn(['block_revision_id' => 'the_revision_id']);
     $inline_component->getPlugin()->willReturn($inline_plugin->reveal());
@@ -86,7 +46,7 @@ public function providerSectionsWithInlineComponents() {
 
     // Ensure that inline block component without revision is returned.
     $inline_component_without_revision_id = $this->prophesize(SectionComponent::class);
-    $inline_plugin_without_revision_id = $this->prophesize(DerivativeInspectionInterface::class)->willImplement(ConfigurablePluginInterface::class);
+    $inline_plugin_without_revision_id = $this->prophesize(DerivativeInspectionInterface::class)->willImplement(ConfigurableInterface::class);
     $inline_plugin_without_revision_id->getBaseId()->willReturn('inline_block');
     $inline_plugin_without_revision_id->getConfiguration()->willReturn(['other_key' => 'other_value']);
     $inline_component_without_revision_id->getPlugin()->willReturn($inline_plugin_without_revision_id->reveal());
@@ -99,7 +59,7 @@ public function providerSectionsWithInlineComponents() {
     $components = [];
     // Ensure that inline block components in all sections are returned.
     $inline_component2 = $this->prophesize(SectionComponent::class);
-    $inline_plugin2 = $this->prophesize(DerivativeInspectionInterface::class)->willImplement(ConfigurablePluginInterface::class);
+    $inline_plugin2 = $this->prophesize(DerivativeInspectionInterface::class)->willImplement(ConfigurableInterface::class);
     $inline_plugin2->getBaseId()->willReturn('inline_block');
     $inline_plugin2->getConfiguration()->willReturn(['block_revision_id' => 'the_other_revision_id']);
     $inline_component2->getPlugin()->willReturn($inline_plugin2->reveal());
@@ -152,7 +112,6 @@ public function testGetInlineBlockRevisionIdsInSections($sections, $components,
  */
 class TestClass {
   use LayoutEntityHelperTrait {
-    isEntityUsingFieldOverride as public;
     getInlineBlockComponents as public;
     getInlineBlockRevisionIdsInSections as public;
   }
diff --git a/core/modules/layout_builder/tests/src/Unit/LayoutTempstoreParamConverterTest.php b/core/modules/layout_builder/tests/src/Unit/LayoutTempstoreParamConverterTest.php
index 40e202f52b10..0e7d76cfe437 100644
--- a/core/modules/layout_builder/tests/src/Unit/LayoutTempstoreParamConverterTest.php
+++ b/core/modules/layout_builder/tests/src/Unit/LayoutTempstoreParamConverterTest.php
@@ -56,7 +56,6 @@ public function testConvertNoType() {
     $defaults = ['section_storage_type' => NULL];
 
     $section_storage_manager->hasDefinition()->shouldNotBeCalled();
-    $section_storage_manager->loadFromRoute()->shouldNotBeCalled();
     $section_storage_manager->load()->shouldNotBeCalled();
     $layout_tempstore_repository->get()->shouldNotBeCalled();
 
@@ -78,7 +77,6 @@ public function testConvertInvalidConverter() {
     $defaults = ['section_storage_type' => 'invalid'];
 
     $section_storage_manager->hasDefinition('invalid')->willReturn(FALSE);
-    $section_storage_manager->loadFromRoute()->shouldNotBeCalled();
     $section_storage_manager->load()->shouldNotBeCalled();
     $layout_tempstore_repository->get()->shouldNotBeCalled();
 
diff --git a/core/modules/layout_builder/tests/src/Unit/OverridesSectionStorageTest.php b/core/modules/layout_builder/tests/src/Unit/OverridesSectionStorageTest.php
index eb03ae2e7678..8f10ba9ec091 100644
--- a/core/modules/layout_builder/tests/src/Unit/OverridesSectionStorageTest.php
+++ b/core/modules/layout_builder/tests/src/Unit/OverridesSectionStorageTest.php
@@ -72,115 +72,6 @@ protected function setUp() {
     $this->plugin = new OverridesSectionStorage([], 'overrides', $definition, $this->entityTypeManager->reveal(), $this->entityFieldManager->reveal(), $section_storage_manager->reveal(), $this->entityRepository->reveal(), $account->reveal());
   }
 
-  /**
-   * @covers ::extractIdFromRoute
-   *
-   * @dataProvider providerTestExtractIdFromRoute
-   *
-   * @expectedDeprecation \Drupal\layout_builder\SectionStorageInterface::extractIdFromRoute() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. \Drupal\layout_builder\SectionStorageInterface::deriveContextsFromRoute() should be used instead. See https://www.drupal.org/node/3016262.
-   *
-   * @group legacy
-   */
-  public function testExtractIdFromRoute($expected, $value, array $defaults) {
-    $result = $this->plugin->extractIdFromRoute($value, [], 'the_parameter_name', $defaults);
-    $this->assertSame($expected, $result);
-  }
-
-  /**
-   * Provides data for ::testExtractIdFromRoute().
-   */
-  public function providerTestExtractIdFromRoute() {
-    $data = [];
-    $data['with value, with layout'] = [
-      'my_entity_type.entity_with_layout',
-      'my_entity_type.entity_with_layout',
-      [],
-    ];
-    $data['with value, without layout'] = [
-      NULL,
-      'my_entity_type',
-      [],
-    ];
-    $data['empty value, populated defaults'] = [
-      'my_entity_type.entity_with_layout',
-      '',
-      [
-        'entity_type_id' => 'my_entity_type',
-        'my_entity_type' => 'entity_with_layout',
-      ],
-    ];
-    $data['empty value, empty defaults'] = [
-      NULL,
-      '',
-      [],
-    ];
-    return $data;
-  }
-
-  /**
-   * @covers ::getSectionListFromId
-   *
-   * @dataProvider providerTestGetSectionListFromId
-   *
-   * @expectedDeprecation \Drupal\layout_builder\SectionStorageInterface::getSectionListFromId() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. The section list should be derived from context. See https://www.drupal.org/node/3016262.
-   *
-   * @group legacy
-   */
-  public function testGetSectionListFromId($success, $expected_entity_type_id, $id) {
-    $defaults['the_parameter_name'] = $id;
-
-    if ($expected_entity_type_id) {
-      $entity_without_layout = $this->prophesize(FieldableEntityInterface::class);
-      $entity_without_layout->hasField(OverridesSectionStorage::FIELD_NAME)->willReturn(FALSE);
-      $entity_without_layout->get(OverridesSectionStorage::FIELD_NAME)->shouldNotBeCalled();
-      $this->entityRepository->getActive('my_entity_type', 'entity_without_layout')->willReturn($entity_without_layout->reveal());
-
-      $entity_with_layout = $this->prophesize(FieldableEntityInterface::class);
-      $entity_with_layout->hasField(OverridesSectionStorage::FIELD_NAME)->willReturn(TRUE);
-      $entity_with_layout->get(OverridesSectionStorage::FIELD_NAME)->willReturn('the_return_value');
-      $this->entityRepository->getActive('my_entity_type', 'entity_with_layout')->willReturn($entity_with_layout->reveal());
-
-      $entity_type = new EntityType(['id' => $expected_entity_type_id]);
-      $this->entityTypeManager->getDefinition($expected_entity_type_id)->willReturn($entity_type);
-    }
-    else {
-      $this->entityTypeManager->getStorage(Argument::any())->shouldNotBeCalled();
-      $this->entityTypeManager->getDefinition(Argument::any())->shouldNotBeCalled();
-    }
-
-    if (!$success) {
-      $this->expectException(\InvalidArgumentException::class);
-    }
-
-    $result = $this->plugin->getSectionListFromId($id);
-    if ($success) {
-      $this->assertEquals('the_return_value', $result);
-    }
-  }
-
-  /**
-   * Provides data for ::testGetSectionListFromId().
-   */
-  public function providerTestGetSectionListFromId() {
-    $data = [];
-    $data['with value, with layout'] = [
-      TRUE,
-      'my_entity_type',
-      'my_entity_type.entity_with_layout',
-    ];
-    $data['with value, without layout'] = [
-      FALSE,
-      'my_entity_type',
-      'my_entity_type.entity_without_layout',
-    ];
-    $data['empty value, empty defaults'] = [
-      FALSE,
-      NULL,
-      '',
-    ];
-    return $data;
-  }
-
   /**
    * @covers ::extractEntityFromRoute
    *
diff --git a/core/modules/layout_builder/tests/src/Unit/SectionStorageManagerTest.php b/core/modules/layout_builder/tests/src/Unit/SectionStorageManagerTest.php
index b3b99d1fcd5b..6a026413fb31 100644
--- a/core/modules/layout_builder/tests/src/Unit/SectionStorageManagerTest.php
+++ b/core/modules/layout_builder/tests/src/Unit/SectionStorageManagerTest.php
@@ -17,7 +17,6 @@
 use Drupal\layout_builder\SectionStorage\SectionStorageManager;
 use Drupal\layout_builder\SectionStorageInterface;
 use Drupal\Tests\UnitTestCase;
-use Symfony\Component\DependencyInjection\ContainerInterface;
 
 /**
  * @coversDefaultClass \Drupal\layout_builder\SectionStorage\SectionStorageManager
@@ -85,23 +84,6 @@ protected function setUp() {
     $reflection_property->setValue($this->manager, $this->factory->reveal());
   }
 
-  /**
-   * @covers ::__construct
-   *
-   * @expectedDeprecation The context.handler service must be passed to \Drupal\layout_builder\SectionStorage\SectionStorageManager::__construct(); it was added in Drupal 8.7.0 and will be required before Drupal 9.0.0.
-   *
-   * @group legacy
-   */
-  public function testConstructNoContextHandler() {
-    $cache = $this->prophesize(CacheBackendInterface::class);
-    $module_handler = $this->prophesize(ModuleHandlerInterface::class);
-
-    $container = $this->prophesize(ContainerInterface::class);
-    $container->get('context.handler')->shouldBeCalled();
-    \Drupal::setContainer($container->reveal());
-    new SectionStorageManager(new \ArrayObject(), $cache->reveal(), $module_handler->reveal());
-  }
-
   /**
    * @covers ::loadEmpty
    */
@@ -111,46 +93,6 @@ public function testLoadEmpty() {
     $this->assertSame($this->plugin->reveal(), $result);
   }
 
-  /**
-   * @covers ::loadFromStorageId
-   *
-   * @expectedDeprecation \Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface::loadFromStorageId() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. \Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface::load() should be used instead. See https://www.drupal.org/node/3012353.
-   *
-   * @group legacy
-   */
-  public function testLoadFromStorageId() {
-    $this->plugin->deriveContextsFromRoute('the_storage_id', [], '', [])->willReturn([]);
-
-    $result = $this->manager->loadFromStorageId('the_plugin_id', 'the_storage_id');
-    $this->assertInstanceOf(SectionStorageInterface::class, $result);
-  }
-
-  /**
-   * @covers ::loadFromRoute
-   *
-   * @expectedDeprecation \Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface::loadFromRoute() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. \Drupal\layout_builder\SectionStorageInterface::deriveContextsFromRoute() and \Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface::load() should be used instead. See https://www.drupal.org/node/3012353.
-   *
-   * @group legacy
-   */
-  public function testLoadFromRoute() {
-    $this->plugin->deriveContextsFromRoute('the_value', [], 'the_parameter_name', [])->willReturn([]);
-    $result = $this->manager->loadFromRoute('the_plugin_id', 'the_value', [], 'the_parameter_name', []);
-    $this->assertInstanceOf(SectionStorageInterface::class, $result);
-  }
-
-  /**
-   * @covers ::loadFromRoute
-   *
-   * @expectedDeprecation \Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface::loadFromRoute() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. \Drupal\layout_builder\SectionStorageInterface::deriveContextsFromRoute() and \Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface::load() should be used instead. See https://www.drupal.org/node/3012353.
-   *
-   * @group legacy
-   */
-  public function testLoadFromRouteNull() {
-    $this->plugin->deriveContextsFromRoute('the_value', [], 'the_parameter_name', ['_route' => 'the_route_name'])->willReturn([]);
-    $result = $this->manager->loadFromRoute('the_plugin_id', 'the_value', [], 'the_parameter_name', ['_route' => 'the_route_name']);
-    $this->assertInstanceOf(SectionStorageInterface::class, $result);
-  }
-
   /**
    * @covers ::load
    */
-- 
GitLab