From aeaf94a793bbb93358de217d1a9d729583bfee56 Mon Sep 17 00:00:00 2001
From: Medvediev <v.medvediev@atwix.com>
Date: Fri, 12 Feb 2021 12:27:07 +0200
Subject: [PATCH 01/11] 
 lib/internal/Magento/Framework/App/Action/HttpHeadActionInterface has been
 removed

---
 .../App/Action/HttpGetActionInterface.php     |  4 +++-
 .../App/Action/HttpHeadActionInterface.php    | 21 -------------------
 2 files changed, 3 insertions(+), 22 deletions(-)
 delete mode 100644 lib/internal/Magento/Framework/App/Action/HttpHeadActionInterface.php

diff --git a/lib/internal/Magento/Framework/App/Action/HttpGetActionInterface.php b/lib/internal/Magento/Framework/App/Action/HttpGetActionInterface.php
index c3d3d2d6fd5ec..308b77aa8dbcf 100644
--- a/lib/internal/Magento/Framework/App/Action/HttpGetActionInterface.php
+++ b/lib/internal/Magento/Framework/App/Action/HttpGetActionInterface.php
@@ -8,10 +8,12 @@
 
 namespace Magento\Framework\App\Action;
 
+use Magento\Framework\App\ActionInterface;
+
 /**
  * Marker for actions processing GET requests.
  */
-interface HttpGetActionInterface extends HttpHeadActionInterface
+interface HttpGetActionInterface extends ActionInterface
 {
 
 }
diff --git a/lib/internal/Magento/Framework/App/Action/HttpHeadActionInterface.php b/lib/internal/Magento/Framework/App/Action/HttpHeadActionInterface.php
deleted file mode 100644
index 6d85e0b80ee55..0000000000000
--- a/lib/internal/Magento/Framework/App/Action/HttpHeadActionInterface.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-/**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
-
-declare(strict_types=1);
-
-namespace Magento\Framework\App\Action;
-
-use Magento\Framework\App\ActionInterface;
-
-/**
- * Marker for actions processing HEAD requests.
- *
- * @deprecated 102.0.2 Both GET and HEAD requests map to HttpGetActionInterface
- */
-interface HttpHeadActionInterface extends ActionInterface
-{
-
-}

From 0ff1a037b1711ecdcfe570ab0bb00541bb6f8bad Mon Sep 17 00:00:00 2001
From: Medvediev <v.medvediev@atwix.com>
Date: Fri, 12 Feb 2021 12:39:45 +0200
Subject: [PATCH 02/11] 
 lib/internal/Magento/Framework/App/TemplateTypesInterface was moved to a
 lib/internal/Magento/Framework/Mail/TemplateTypesInterface namespase

---
 .../Email/Block/Adminhtml/Template/Grid/Filter/Type.php     | 6 ++++--
 .../Email/Block/Adminhtml/Template/Grid/Renderer/Type.php   | 6 ++++--
 .../Email/Controller/Adminhtml/Email/Template/Save.php      | 2 +-
 app/code/Magento/Email/Model/AbstractTemplate.php           | 4 ++--
 .../Block/Adminhtml/Template/Grid/Renderer/TypeTest.php     | 2 +-
 .../Magento/Email/Test/Unit/Model/AbstractTemplateTest.php  | 2 +-
 app/code/Magento/Email/Test/Unit/Model/TemplateTest.php     | 2 +-
 .../Email/view/adminhtml/templates/template/edit.phtml      | 2 +-
 .../Magento/Newsletter/Block/Adminhtml/Template/Edit.php    | 2 +-
 .../Magento/Newsletter/Block/Adminhtml/Template/Grid.php    | 2 +-
 .../Newsletter/Controller/Adminhtml/Template/Save.php       | 2 +-
 app/code/Magento/Newsletter/Model/Queue.php                 | 2 +-
 .../Test/Unit/Block/Adminhtml/Template/PreviewTest.php      | 2 +-
 .../Test/Unit/Model/Queue/TransportBuilderTest.php          | 2 +-
 .../Magento/Newsletter/Test/Unit/Model/TemplateTest.php     | 2 +-
 .../Newsletter/view/adminhtml/templates/template/edit.phtml | 2 +-
 .../Email/Block/Adminhtml/Template/Edit/FormTest.php        | 2 +-
 .../testsuite/Magento/Email/Model/Template/FilterTest.php   | 2 +-
 .../testsuite/Magento/Email/Model/TemplateTest.php          | 2 +-
 .../Magento/Framework/Mail/TransportBuilderTest.php         | 2 +-
 .../testsuite/Magento/Newsletter/Model/TemplateTest.php     | 2 +-
 .../Magento/Newsletter/_files/newsletter_sample.php         | 2 +-
 .../Magento/Framework/Mail/Template/TransportBuilder.php    | 2 +-
 lib/internal/Magento/Framework/Mail/TemplateInterface.php   | 2 +-
 .../Framework/{App => Mail}/TemplateTypesInterface.php      | 4 +---
 .../Mail/Test/Unit/Template/TransportBuilderTest.php        | 2 +-
 26 files changed, 33 insertions(+), 31 deletions(-)
 rename lib/internal/Magento/Framework/{App => Mail}/TemplateTypesInterface.php (84%)

diff --git a/app/code/Magento/Email/Block/Adminhtml/Template/Grid/Filter/Type.php b/app/code/Magento/Email/Block/Adminhtml/Template/Grid/Filter/Type.php
index 08ad4655261a3..bc5b8540ed3a1 100644
--- a/app/code/Magento/Email/Block/Adminhtml/Template/Grid/Filter/Type.php
+++ b/app/code/Magento/Email/Block/Adminhtml/Template/Grid/Filter/Type.php
@@ -5,6 +5,8 @@
  */
 namespace Magento\Email\Block\Adminhtml\Template\Grid\Filter;
 
+use Magento\Framework\Mail\TemplateTypesInterface;
+
 /**
  * Adminhtml system template grid type filter
  *
@@ -19,8 +21,8 @@ class Type extends \Magento\Backend\Block\Widget\Grid\Column\Filter\Select
      */
     protected static $_types = [
         null => null,
-        \Magento\Framework\App\TemplateTypesInterface::TYPE_HTML => 'HTML',
-        \Magento\Framework\App\TemplateTypesInterface::TYPE_TEXT => 'Text',
+        TemplateTypesInterface::TYPE_HTML => 'HTML',
+        TemplateTypesInterface::TYPE_TEXT => 'Text',
     ];
 
     /**
diff --git a/app/code/Magento/Email/Block/Adminhtml/Template/Grid/Renderer/Type.php b/app/code/Magento/Email/Block/Adminhtml/Template/Grid/Renderer/Type.php
index 4fa069410f285..b8375c176f29b 100644
--- a/app/code/Magento/Email/Block/Adminhtml/Template/Grid/Renderer/Type.php
+++ b/app/code/Magento/Email/Block/Adminhtml/Template/Grid/Renderer/Type.php
@@ -5,6 +5,8 @@
  */
 namespace Magento\Email\Block\Adminhtml\Template\Grid\Renderer;
 
+use Magento\Framework\Mail\TemplateTypesInterface;
+
 /**
  * Adminhtml system templates grid block type item renderer
  *
@@ -18,8 +20,8 @@ class Type extends \Magento\Backend\Block\Widget\Grid\Column\Renderer\AbstractRe
      * @var array
      */
     protected static $_types = [
-        \Magento\Framework\App\TemplateTypesInterface::TYPE_HTML => 'HTML',
-        \Magento\Framework\App\TemplateTypesInterface::TYPE_TEXT => 'Text',
+        TemplateTypesInterface::TYPE_HTML => 'HTML',
+        TemplateTypesInterface::TYPE_TEXT => 'Text',
     ];
 
     /**
diff --git a/app/code/Magento/Email/Controller/Adminhtml/Email/Template/Save.php b/app/code/Magento/Email/Controller/Adminhtml/Email/Template/Save.php
index 8e0b4d30ec511..9ace4b1f36775 100644
--- a/app/code/Magento/Email/Controller/Adminhtml/Email/Template/Save.php
+++ b/app/code/Magento/Email/Controller/Adminhtml/Email/Template/Save.php
@@ -12,7 +12,7 @@
 use Magento\Email\Model\ResourceModel\Template as TemplateResource;
 use Magento\Framework\App\Action\HttpPostActionInterface;
 use Magento\Framework\App\ObjectManager;
-use Magento\Framework\App\TemplateTypesInterface;
+use Magento\Framework\Mail\TemplateTypesInterface;
 use Magento\Framework\Registry;
 use Magento\Framework\Stdlib\DateTime\DateTime;
 
diff --git a/app/code/Magento/Email/Model/AbstractTemplate.php b/app/code/Magento/Email/Model/AbstractTemplate.php
index 1a05f88d8fa8f..2db9fb29359fb 100644
--- a/app/code/Magento/Email/Model/AbstractTemplate.php
+++ b/app/code/Magento/Email/Model/AbstractTemplate.php
@@ -7,14 +7,14 @@
 namespace Magento\Email\Model;
 
 use Magento\Framework\App\Filesystem\DirectoryList;
-use Magento\Framework\App\TemplateTypesInterface;
 use Magento\Framework\DataObject;
 use Magento\Framework\Exception\LocalizedException;
+use Magento\Framework\Mail\TemplateTypesInterface;
 use Magento\Framework\Model\AbstractModel;
+use Magento\MediaStorage\Helper\File\Storage\Database;
 use Magento\Store\Model\Information as StoreInformation;
 use Magento\Store\Model\ScopeInterface;
 use Magento\Store\Model\Store;
-use Magento\MediaStorage\Helper\File\Storage\Database;
 
 /**
  * Template model class.
diff --git a/app/code/Magento/Email/Test/Unit/Block/Adminhtml/Template/Grid/Renderer/TypeTest.php b/app/code/Magento/Email/Test/Unit/Block/Adminhtml/Template/Grid/Renderer/TypeTest.php
index f4b009c46c988..ffc011db743bc 100644
--- a/app/code/Magento/Email/Test/Unit/Block/Adminhtml/Template/Grid/Renderer/TypeTest.php
+++ b/app/code/Magento/Email/Test/Unit/Block/Adminhtml/Template/Grid/Renderer/TypeTest.php
@@ -8,8 +8,8 @@
 namespace Magento\Email\Test\Unit\Block\Adminhtml\Template\Grid\Renderer;
 
 use Magento\Email\Block\Adminhtml\Template\Grid\Renderer\Type;
-use Magento\Framework\App\TemplateTypesInterface;
 use Magento\Framework\DataObject;
+use Magento\Framework\Mail\TemplateTypesInterface;
 use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
 use PHPUnit\Framework\TestCase;
 
diff --git a/app/code/Magento/Email/Test/Unit/Model/AbstractTemplateTest.php b/app/code/Magento/Email/Test/Unit/Model/AbstractTemplateTest.php
index e211ece480045..0b4d7770f9df1 100644
--- a/app/code/Magento/Email/Test/Unit/Model/AbstractTemplateTest.php
+++ b/app/code/Magento/Email/Test/Unit/Model/AbstractTemplateTest.php
@@ -18,8 +18,8 @@
 use Magento\Email\Model\TemplateFactory;
 use Magento\Framework\App\Area;
 use Magento\Framework\App\Config\ScopeConfigInterface;
-use Magento\Framework\App\TemplateTypesInterface;
 use Magento\Framework\Filesystem;
+use Magento\Framework\Mail\TemplateTypesInterface;
 use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
 use Magento\Framework\View\Asset\Repository;
 use Magento\Framework\View\DesignInterface;
diff --git a/app/code/Magento/Email/Test/Unit/Model/TemplateTest.php b/app/code/Magento/Email/Test/Unit/Model/TemplateTest.php
index 21a5ff8204ec5..f9deaee51d041 100644
--- a/app/code/Magento/Email/Test/Unit/Model/TemplateTest.php
+++ b/app/code/Magento/Email/Test/Unit/Model/TemplateTest.php
@@ -15,11 +15,11 @@
 use Magento\Framework\App\Area;
 use Magento\Framework\App\Config\ScopeConfigInterface;
 use Magento\Framework\App\Filesystem\DirectoryList;
-use Magento\Framework\App\TemplateTypesInterface;
 use Magento\Framework\DataObject;
 use Magento\Framework\Filesystem;
 use Magento\Framework\Filesystem\Directory\ReadInterface;
 use Magento\Framework\Filter\FilterManager;
+use Magento\Framework\Mail\TemplateTypesInterface;
 use Magento\Framework\Model\Context;
 use Magento\Framework\Registry;
 use Magento\Framework\Serialize\Serializer\Json;
diff --git a/app/code/Magento/Email/view/adminhtml/templates/template/edit.phtml b/app/code/Magento/Email/view/adminhtml/templates/template/edit.phtml
index a377cd8ae6722..9b1e1c5f10aaf 100644
--- a/app/code/Magento/Email/view/adminhtml/templates/template/edit.phtml
+++ b/app/code/Magento/Email/view/adminhtml/templates/template/edit.phtml
@@ -4,7 +4,7 @@
  * See COPYING.txt for license details.
  */
 
-use Magento\Framework\App\TemplateTypesInterface;
+use Magento\Framework\Mail\TemplateTypesInterface;
 
 // phpcs:disable Generic.Files.LineLength.TooLong
 
diff --git a/app/code/Magento/Newsletter/Block/Adminhtml/Template/Edit.php b/app/code/Magento/Newsletter/Block/Adminhtml/Template/Edit.php
index 236101745b98e..56246d716821f 100644
--- a/app/code/Magento/Newsletter/Block/Adminhtml/Template/Edit.php
+++ b/app/code/Magento/Newsletter/Block/Adminhtml/Template/Edit.php
@@ -12,7 +12,7 @@
 namespace Magento\Newsletter\Block\Adminhtml\Template;
 
 use Magento\Backend\Block\Widget;
-use Magento\Framework\App\TemplateTypesInterface;
+use Magento\Framework\Mail\TemplateTypesInterface;
 
 /**
  * @api
diff --git a/app/code/Magento/Newsletter/Block/Adminhtml/Template/Grid.php b/app/code/Magento/Newsletter/Block/Adminhtml/Template/Grid.php
index 2d51a3f87cb04..89c3eeaf2f4b5 100644
--- a/app/code/Magento/Newsletter/Block/Adminhtml/Template/Grid.php
+++ b/app/code/Magento/Newsletter/Block/Adminhtml/Template/Grid.php
@@ -12,7 +12,7 @@
 namespace Magento\Newsletter\Block\Adminhtml\Template;
 
 use Magento\Backend\Block\Widget\Grid as WidgetGrid;
-use Magento\Framework\App\TemplateTypesInterface;
+use Magento\Framework\Mail\TemplateTypesInterface;
 
 class Grid extends \Magento\Backend\Block\Widget\Grid\Extended
 {
diff --git a/app/code/Magento/Newsletter/Controller/Adminhtml/Template/Save.php b/app/code/Magento/Newsletter/Controller/Adminhtml/Template/Save.php
index cf4aad2059a01..4d9f4daa74747 100644
--- a/app/code/Magento/Newsletter/Controller/Adminhtml/Template/Save.php
+++ b/app/code/Magento/Newsletter/Controller/Adminhtml/Template/Save.php
@@ -6,7 +6,7 @@
 namespace Magento\Newsletter\Controller\Adminhtml\Template;
 
 use Magento\Framework\App\Action\HttpPostActionInterface as HttpPostActionInterface;
-use Magento\Framework\App\TemplateTypesInterface;
+use Magento\Framework\Mail\TemplateTypesInterface;
 use Magento\Framework\Exception\LocalizedException;
 
 /**
diff --git a/app/code/Magento/Newsletter/Model/Queue.php b/app/code/Magento/Newsletter/Model/Queue.php
index a3279f8c83699..a113ad43e502d 100644
--- a/app/code/Magento/Newsletter/Model/Queue.php
+++ b/app/code/Magento/Newsletter/Model/Queue.php
@@ -5,7 +5,7 @@
  */
 namespace Magento\Newsletter\Model;
 
-use Magento\Framework\App\TemplateTypesInterface;
+use Magento\Framework\Mail\TemplateTypesInterface;
 use Magento\Framework\Stdlib\DateTime\TimezoneInterface;
 use Magento\Framework\Stdlib\DateTime\Timezone\LocalizedDateToUtcConverterInterface;
 
diff --git a/app/code/Magento/Newsletter/Test/Unit/Block/Adminhtml/Template/PreviewTest.php b/app/code/Magento/Newsletter/Test/Unit/Block/Adminhtml/Template/PreviewTest.php
index db02fce3696af..2c102a130dee5 100644
--- a/app/code/Magento/Newsletter/Test/Unit/Block/Adminhtml/Template/PreviewTest.php
+++ b/app/code/Magento/Newsletter/Test/Unit/Block/Adminhtml/Template/PreviewTest.php
@@ -9,7 +9,7 @@
 
 use Magento\Framework\App\RequestInterface;
 use Magento\Framework\App\State;
-use Magento\Framework\App\TemplateTypesInterface;
+use Magento\Framework\Mail\TemplateTypesInterface;
 use Magento\Framework\Escaper;
 use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
 use Magento\Newsletter\Block\Adminhtml\Template\Preview;
diff --git a/app/code/Magento/Newsletter/Test/Unit/Model/Queue/TransportBuilderTest.php b/app/code/Magento/Newsletter/Test/Unit/Model/Queue/TransportBuilderTest.php
index 9bcc21b6a024f..91587ebd484be 100644
--- a/app/code/Magento/Newsletter/Test/Unit/Model/Queue/TransportBuilderTest.php
+++ b/app/code/Magento/Newsletter/Test/Unit/Model/Queue/TransportBuilderTest.php
@@ -10,7 +10,6 @@
 
 use Magento\Email\Model\Template;
 use Magento\Email\Model\Template\Filter;
-use Magento\Framework\App\TemplateTypesInterface;
 use Magento\Framework\Exception\LocalizedException;
 use Magento\Framework\Mail\EmailMessageInterface;
 use Magento\Framework\Mail\EmailMessageInterfaceFactory;
@@ -19,6 +18,7 @@
 use Magento\Framework\Mail\MessageInterfaceFactory;
 use Magento\Framework\Mail\MimePartInterface;
 use Magento\Framework\Mail\MimePartInterfaceFactory;
+use Magento\Framework\Mail\TemplateTypesInterface;
 use Magento\Framework\Mail\Template\FactoryInterface;
 use Magento\Framework\Mail\Template\SenderResolverInterface;
 use Magento\Framework\Mail\TransportInterfaceFactory;
diff --git a/app/code/Magento/Newsletter/Test/Unit/Model/TemplateTest.php b/app/code/Magento/Newsletter/Test/Unit/Model/TemplateTest.php
index 6032336bb2bc5..9d9bfc882bc58 100644
--- a/app/code/Magento/Newsletter/Test/Unit/Model/TemplateTest.php
+++ b/app/code/Magento/Newsletter/Test/Unit/Model/TemplateTest.php
@@ -12,10 +12,10 @@
 use Magento\Framework\App\Area;
 use Magento\Framework\App\Config\ScopeConfigInterface;
 use Magento\Framework\App\RequestInterface;
-use Magento\Framework\App\TemplateTypesInterface;
 use Magento\Framework\Filesystem;
 use Magento\Framework\Filter\FilterManager;
 use Magento\Framework\Filter\Template;
+use Magento\Framework\Mail\TemplateTypesInterface;
 use Magento\Framework\Model\Context;
 use Magento\Framework\Registry;
 use Magento\Framework\Url;
diff --git a/app/code/Magento/Newsletter/view/adminhtml/templates/template/edit.phtml b/app/code/Magento/Newsletter/view/adminhtml/templates/template/edit.phtml
index 29555130de1ae..562622209ed95 100644
--- a/app/code/Magento/Newsletter/view/adminhtml/templates/template/edit.phtml
+++ b/app/code/Magento/Newsletter/view/adminhtml/templates/template/edit.phtml
@@ -4,7 +4,7 @@
  * See COPYING.txt for license details.
  */
 
-use Magento\Framework\App\TemplateTypesInterface;
+use Magento\Framework\Mail\TemplateTypesInterface;
 
 /* @var $block \Magento\Newsletter\Block\Adminhtml\Template\Edit */
 /** @var \Magento\Framework\View\Helper\SecureHtmlRenderer $secureRenderer */
diff --git a/dev/tests/integration/testsuite/Magento/Email/Block/Adminhtml/Template/Edit/FormTest.php b/dev/tests/integration/testsuite/Magento/Email/Block/Adminhtml/Template/Edit/FormTest.php
index 076d4c3e01533..ccb077ab663cb 100644
--- a/dev/tests/integration/testsuite/Magento/Email/Block/Adminhtml/Template/Edit/FormTest.php
+++ b/dev/tests/integration/testsuite/Magento/Email/Block/Adminhtml/Template/Edit/FormTest.php
@@ -6,7 +6,7 @@
 namespace Magento\Email\Block\Adminhtml\Template\Edit;
 
 use Magento\TestFramework\Helper\Bootstrap;
-use Magento\Framework\App\TemplateTypesInterface;
+use Magento\Framework\Mail\TemplateTypesInterface;
 
 /**
  * Test class for \Magento\Email\Block\Adminhtml\Template\Edit\Form
diff --git a/dev/tests/integration/testsuite/Magento/Email/Model/Template/FilterTest.php b/dev/tests/integration/testsuite/Magento/Email/Model/Template/FilterTest.php
index aa4d3f8c692f2..d73d06b15a313 100644
--- a/dev/tests/integration/testsuite/Magento/Email/Model/Template/FilterTest.php
+++ b/dev/tests/integration/testsuite/Magento/Email/Model/Template/FilterTest.php
@@ -7,7 +7,7 @@
 
 use Magento\Framework\App\Area;
 use Magento\Framework\App\State;
-use Magento\Framework\App\TemplateTypesInterface;
+use Magento\Framework\Mail\TemplateTypesInterface;
 use Magento\Framework\Phrase;
 use Magento\Framework\View\Asset\ContentProcessorInterface;
 use Magento\Setup\Module\I18n\Locale;
diff --git a/dev/tests/integration/testsuite/Magento/Email/Model/TemplateTest.php b/dev/tests/integration/testsuite/Magento/Email/Model/TemplateTest.php
index 3617c467da659..fb84e920be6aa 100644
--- a/dev/tests/integration/testsuite/Magento/Email/Model/TemplateTest.php
+++ b/dev/tests/integration/testsuite/Magento/Email/Model/TemplateTest.php
@@ -9,7 +9,7 @@
 use Magento\Framework\App\Area;
 use Magento\Framework\App\Filesystem\DirectoryList;
 use Magento\Framework\App\ObjectManager;
-use Magento\Framework\App\TemplateTypesInterface;
+use Magento\Framework\Mail\TemplateTypesInterface;
 use Magento\Framework\View\DesignInterface;
 use Magento\Store\Model\ScopeInterface;
 use Magento\Store\Model\Store;
diff --git a/dev/tests/integration/testsuite/Magento/Framework/Mail/TransportBuilderTest.php b/dev/tests/integration/testsuite/Magento/Framework/Mail/TransportBuilderTest.php
index 47c8da84902d4..c061af45fecee 100644
--- a/dev/tests/integration/testsuite/Magento/Framework/Mail/TransportBuilderTest.php
+++ b/dev/tests/integration/testsuite/Magento/Framework/Mail/TransportBuilderTest.php
@@ -9,7 +9,7 @@
 
 use Magento\Email\Model\BackendTemplate;
 use Magento\Email\Model\Template;
-use Magento\Framework\App\TemplateTypesInterface;
+use Magento\Framework\Mail\TemplateTypesInterface;
 use Magento\Framework\Exception\LocalizedException;
 use Magento\Framework\Mail\Template\TransportBuilder;
 use Magento\Framework\ObjectManagerInterface;
diff --git a/dev/tests/integration/testsuite/Magento/Newsletter/Model/TemplateTest.php b/dev/tests/integration/testsuite/Magento/Newsletter/Model/TemplateTest.php
index bd6f68fbfb704..a3f382d37f660 100644
--- a/dev/tests/integration/testsuite/Magento/Newsletter/Model/TemplateTest.php
+++ b/dev/tests/integration/testsuite/Magento/Newsletter/Model/TemplateTest.php
@@ -5,7 +5,7 @@
  */
 namespace Magento\Newsletter\Model;
 
-use Magento\Framework\App\TemplateTypesInterface;
+use Magento\Framework\Mail\TemplateTypesInterface;
 use Magento\Store\Model\ScopeInterface;
 use Magento\TestFramework\Helper\Bootstrap;
 
diff --git a/dev/tests/integration/testsuite/Magento/Newsletter/_files/newsletter_sample.php b/dev/tests/integration/testsuite/Magento/Newsletter/_files/newsletter_sample.php
index b4e549942a29c..9af94e1dae95c 100644
--- a/dev/tests/integration/testsuite/Magento/Newsletter/_files/newsletter_sample.php
+++ b/dev/tests/integration/testsuite/Magento/Newsletter/_files/newsletter_sample.php
@@ -3,7 +3,7 @@
  * Copyright © Magento, Inc. All rights reserved.
  * See COPYING.txt for license details.
  */
-use Magento\Framework\App\TemplateTypesInterface;
+use Magento\Framework\Mail\TemplateTypesInterface;
 
 /** @var \Magento\Newsletter\Model\Template $template */
 $template = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
diff --git a/lib/internal/Magento/Framework/Mail/Template/TransportBuilder.php b/lib/internal/Magento/Framework/Mail/Template/TransportBuilder.php
index 08560e1464fa3..1cdf725b5aa47 100644
--- a/lib/internal/Magento/Framework/Mail/Template/TransportBuilder.php
+++ b/lib/internal/Magento/Framework/Mail/Template/TransportBuilder.php
@@ -9,7 +9,6 @@
 
 namespace Magento\Framework\Mail\Template;
 
-use Magento\Framework\App\TemplateTypesInterface;
 use Magento\Framework\Exception\LocalizedException;
 use Magento\Framework\Exception\MailException;
 use Magento\Framework\Mail\AddressConverter;
@@ -21,6 +20,7 @@
 use Magento\Framework\Mail\MimeMessageInterfaceFactory;
 use Magento\Framework\Mail\MimePartInterfaceFactory;
 use Magento\Framework\Mail\TemplateInterface;
+use Magento\Framework\Mail\TemplateTypesInterface;
 use Magento\Framework\Mail\TransportInterface;
 use Magento\Framework\Mail\TransportInterfaceFactory;
 use Magento\Framework\ObjectManagerInterface;
diff --git a/lib/internal/Magento/Framework/Mail/TemplateInterface.php b/lib/internal/Magento/Framework/Mail/TemplateInterface.php
index b1062aec92bee..a6fe2612457f1 100644
--- a/lib/internal/Magento/Framework/Mail/TemplateInterface.php
+++ b/lib/internal/Magento/Framework/Mail/TemplateInterface.php
@@ -11,7 +11,7 @@
  * @api
  * @since 100.0.2
  */
-interface TemplateInterface extends \Magento\Framework\App\TemplateTypesInterface
+interface TemplateInterface extends TemplateTypesInterface
 {
     /**
      * Get processed template
diff --git a/lib/internal/Magento/Framework/App/TemplateTypesInterface.php b/lib/internal/Magento/Framework/Mail/TemplateTypesInterface.php
similarity index 84%
rename from lib/internal/Magento/Framework/App/TemplateTypesInterface.php
rename to lib/internal/Magento/Framework/Mail/TemplateTypesInterface.php
index 37ae5e5431b92..6d6334e02aa40 100644
--- a/lib/internal/Magento/Framework/App/TemplateTypesInterface.php
+++ b/lib/internal/Magento/Framework/Mail/TemplateTypesInterface.php
@@ -3,12 +3,10 @@
  * Copyright © Magento, Inc. All rights reserved.
  * See COPYING.txt for license details.
  */
-namespace Magento\Framework\App;
+namespace Magento\Framework\Mail;
 
 /**
  * Template Types interface
- *
- * @deprecated 101.0.0 because of incorrect location
  */
 interface TemplateTypesInterface
 {
diff --git a/lib/internal/Magento/Framework/Mail/Test/Unit/Template/TransportBuilderTest.php b/lib/internal/Magento/Framework/Mail/Test/Unit/Template/TransportBuilderTest.php
index ef912039116ee..9c7872428f9d5 100644
--- a/lib/internal/Magento/Framework/Mail/Test/Unit/Template/TransportBuilderTest.php
+++ b/lib/internal/Magento/Framework/Mail/Test/Unit/Template/TransportBuilderTest.php
@@ -7,7 +7,6 @@
 
 namespace Magento\Framework\Mail\Test\Unit\Template;
 
-use Magento\Framework\App\TemplateTypesInterface;
 use Magento\Framework\Mail\EmailMessageInterface;
 use Magento\Framework\Mail\EmailMessageInterfaceFactory;
 use Magento\Framework\Mail\Message;
@@ -18,6 +17,7 @@
 use Magento\Framework\Mail\Template\SenderResolverInterface;
 use Magento\Framework\Mail\Template\TransportBuilder;
 use Magento\Framework\Mail\TemplateInterface;
+use Magento\Framework\Mail\TemplateTypesInterface;
 use Magento\Framework\Mail\TransportInterface;
 use Magento\Framework\Mail\TransportInterfaceFactory;
 use Magento\Framework\ObjectManagerInterface;

From dc238bb2338fa4938f724e8032fe2468e6d8088e Mon Sep 17 00:00:00 2001
From: Medvediev <v.medvediev@atwix.com>
Date: Fri, 12 Feb 2021 12:47:06 +0200
Subject: [PATCH 03/11] 
 lib/internal/Magento/Framework/Filesystem/ExtendedDriverInterface.php was
 removed. getMetadata method was movet to
 lib/internal/Magento/Framework/Filesystem/DriverInterface

---
 .../Eav/Model/Attribute/Data/Image.php        |  4 +-
 .../Model/CreateAssetFromFile.php             |  2 +-
 .../Driver/RemoteDriverInterface.php          |  4 +-
 lib/internal/Magento/Framework/File/Mime.php  |  4 +-
 .../Framework/File/Test/Unit/MimeTest.php     |  2 +-
 .../Framework/Filesystem/DriverInterface.php  | 27 ++++++++++
 .../Filesystem/ExtendedDriverInterface.php    | 50 -------------------
 7 files changed, 35 insertions(+), 58 deletions(-)
 delete mode 100644 lib/internal/Magento/Framework/Filesystem/ExtendedDriverInterface.php

diff --git a/app/code/Magento/Eav/Model/Attribute/Data/Image.php b/app/code/Magento/Eav/Model/Attribute/Data/Image.php
index d61a8b5fda5b1..f3a5cb4493399 100644
--- a/app/code/Magento/Eav/Model/Attribute/Data/Image.php
+++ b/app/code/Magento/Eav/Model/Attribute/Data/Image.php
@@ -5,7 +5,7 @@
  */
 namespace Magento\Eav\Model\Attribute\Data;
 
-use Magento\Framework\Filesystem\ExtendedDriverInterface;
+use Magento\Framework\Filesystem\DriverInterface;
 
 /**
  * EAV Entity Attribute Image File Data Model
@@ -29,7 +29,7 @@ protected function _validateByRules($value)
     {
         $label = __($this->getAttribute()->getStoreLabel());
         $rules = $this->getAttribute()->getValidateRules();
-        $localStorage = !$this->_directory->getDriver() instanceof ExtendedDriverInterface;
+        $localStorage = !$this->_directory->getDriver() instanceof DriverInterface;
         $imageProp = $localStorage
             ? @getimagesize($value['tmp_name'])
             : $this->_directory->getDriver()->getMetadata($value['tmp_name']);
diff --git a/app/code/Magento/MediaGallerySynchronization/Model/CreateAssetFromFile.php b/app/code/Magento/MediaGallerySynchronization/Model/CreateAssetFromFile.php
index 19c2569695d56..3b5a9d08796e2 100644
--- a/app/code/Magento/MediaGallerySynchronization/Model/CreateAssetFromFile.php
+++ b/app/code/Magento/MediaGallerySynchronization/Model/CreateAssetFromFile.php
@@ -75,7 +75,7 @@ public function execute(string $path): AssetInterface
         $absolutePath = $this->getMediaDirectory()->getAbsolutePath($path);
         $driver = $this->getMediaDirectory()->getDriver();
 
-        if ($driver instanceof Filesystem\ExtendedDriverInterface) {
+        if ($driver instanceof Filesystem\DriverInterface) {
             $meta = $driver->getMetadata($absolutePath);
         } else {
             /**
diff --git a/app/code/Magento/RemoteStorage/Driver/RemoteDriverInterface.php b/app/code/Magento/RemoteStorage/Driver/RemoteDriverInterface.php
index fc108bb388cb5..11044ece9fad8 100644
--- a/app/code/Magento/RemoteStorage/Driver/RemoteDriverInterface.php
+++ b/app/code/Magento/RemoteStorage/Driver/RemoteDriverInterface.php
@@ -7,12 +7,12 @@
 
 namespace Magento\RemoteStorage\Driver;
 
-use Magento\Framework\Filesystem\ExtendedDriverInterface;
+use Magento\Framework\Filesystem\DriverInterface;
 
 /**
  * Remote storage driver.
  */
-interface RemoteDriverInterface extends ExtendedDriverInterface
+interface RemoteDriverInterface extends DriverInterface
 {
     /**
      * Test storage connection.
diff --git a/lib/internal/Magento/Framework/File/Mime.php b/lib/internal/Magento/Framework/File/Mime.php
index d61f5054990e8..905581059b026 100644
--- a/lib/internal/Magento/Framework/File/Mime.php
+++ b/lib/internal/Magento/Framework/File/Mime.php
@@ -15,7 +15,7 @@
  * Utility for mime type retrieval
  *
  * @deprecated
- * @see Filesystem\ExtendedDriverInterface::getMetadata()
+ * @see Filesystem\DriverInterface::getMetadata()
  */
 class Mime
 {
@@ -113,7 +113,7 @@ public function getMimeType($file)
             throw new FileSystemException(__("File '$file' doesn't exist"));
         }
 
-        if ($driver instanceof Filesystem\ExtendedDriverInterface) {
+        if ($driver instanceof Filesystem\DriverInterface) {
             return $driver->getMetadata($file)['mimetype'];
         }
 
diff --git a/lib/internal/Magento/Framework/File/Test/Unit/MimeTest.php b/lib/internal/Magento/Framework/File/Test/Unit/MimeTest.php
index db42e03363236..2576338bc52dd 100644
--- a/lib/internal/Magento/Framework/File/Test/Unit/MimeTest.php
+++ b/lib/internal/Magento/Framework/File/Test/Unit/MimeTest.php
@@ -56,7 +56,7 @@ class MimeTest extends TestCase
     protected function setUp(): void
     {
         $this->localDriverMock = $this->getMockForAbstractClass(Filesystem\DriverInterface::class);
-        $this->remoteDriverMock = $this->getMockForAbstractClass(Filesystem\ExtendedDriverInterface::class);
+        $this->remoteDriverMock = $this->getMockForAbstractClass(Filesystem\DriverInterface::class);
 
         $this->localDirectoryMock = $this->getMockForAbstractClass(Filesystem\Directory\WriteInterface::class);
         $this->localDirectoryMock->method('getDriver')
diff --git a/lib/internal/Magento/Framework/Filesystem/DriverInterface.php b/lib/internal/Magento/Framework/Filesystem/DriverInterface.php
index 706077522c675..986f9d24a4123 100644
--- a/lib/internal/Magento/Framework/Filesystem/DriverInterface.php
+++ b/lib/internal/Magento/Framework/Filesystem/DriverInterface.php
@@ -393,4 +393,31 @@ public function getRealPathSafety($path);
      * @return mixed
      */
     public function getRelativePath($basePath, $path = null);
+
+    /**
+     * Retrieve file metadata.
+     *
+     * Implementation must return associative array with next keys:
+     *
+     * ```
+     * [
+     *  'path',
+     *  'dirname',
+     *  'basename',
+     *  'extension',
+     *  'filename',
+     *  'timestamp',
+     *  'size',
+     *  'mimetype',
+     *  'extra' => [
+     *      'image-width',
+     *      'image-height'
+     *      ]
+     *  ];
+     *
+     * @param string $path Absolute path to file
+     * @return array
+     * @throws FileSystemException
+     */
+    public function getMetadata(string $path): array;
 }
diff --git a/lib/internal/Magento/Framework/Filesystem/ExtendedDriverInterface.php b/lib/internal/Magento/Framework/Filesystem/ExtendedDriverInterface.php
deleted file mode 100644
index c2643d7c54e79..0000000000000
--- a/lib/internal/Magento/Framework/Filesystem/ExtendedDriverInterface.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-/**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
-declare(strict_types=1);
-
-namespace Magento\Framework\Filesystem;
-
-use Magento\Framework\Exception\FileSystemException;
-
-/**
- * Provides extension for Driver interface.
- *
- * @see DriverInterface
- *
- * @deprecated Method will be moved to DriverInterface
- * @see DriverInterface
- */
-interface ExtendedDriverInterface extends DriverInterface
-{
-    /**
-     * Retrieve file metadata.
-     *
-     * Implementation must return associative array with next keys:
-     *
-     * ```
-     * [
-     *  'path',
-     *  'dirname',
-     *  'basename',
-     *  'extension',
-     *  'filename',
-     *  'timestamp',
-     *  'size',
-     *  'mimetype',
-     *  'extra' => [
-     *      'image-width',
-     *      'image-height'
-     *      ]
-     *  ];
-     *
-     * @param string $path Absolute path to file
-     * @return array
-     * @throws FileSystemException
-     *
-     * @deprecated Method will be moved to DriverInterface
-     */
-    public function getMetadata(string $path): array;
-}

From ed7263f8118e4886fde67251b6c65e3c81e91f40 Mon Sep 17 00:00:00 2001
From: Medvediev <v.medvediev@atwix.com>
Date: Fri, 12 Feb 2021 12:56:48 +0200
Subject: [PATCH 04/11] 
 lib/internal/Magento/Framework/Image/Adapter/UploadConfigInterface was
 removed

---
 .../Magento/Backend/Block/Media/Uploader.php  | 12 ------
 app/etc/di.xml                                |  1 -
 .../Magento/Framework/File/Uploader.php       |  4 +-
 .../Framework/Image/Adapter/Config.php        | 38 +------------------
 .../Image/Adapter/UploadConfigInterface.php   | 31 ---------------
 5 files changed, 3 insertions(+), 83 deletions(-)
 delete mode 100644 lib/internal/Magento/Framework/Image/Adapter/UploadConfigInterface.php

diff --git a/app/code/Magento/Backend/Block/Media/Uploader.php b/app/code/Magento/Backend/Block/Media/Uploader.php
index 40cc68e04bf51..ecd96343bb815 100644
--- a/app/code/Magento/Backend/Block/Media/Uploader.php
+++ b/app/code/Magento/Backend/Block/Media/Uploader.php
@@ -9,7 +9,6 @@
 
 use Magento\Framework\App\ObjectManager;
 use Magento\Framework\Serialize\Serializer\Json;
-use Magento\Framework\Image\Adapter\UploadConfigInterface;
 use Magento\Backend\Model\Image\UploadResizeConfigInterface;
 
 /**
@@ -44,19 +43,11 @@ class Uploader extends \Magento\Backend\Block\Widget
      */
     private $imageUploadConfig;
 
-    /**
-     * @var UploadConfigInterface
-     * @deprecated 101.0.1
-     * @see \Magento\Backend\Model\Image\UploadResizeConfigInterface
-     */
-    private $imageConfig;
-
     /**
      * @param \Magento\Backend\Block\Template\Context $context
      * @param \Magento\Framework\File\Size $fileSize
      * @param array $data
      * @param Json $jsonEncoder
-     * @param UploadConfigInterface $imageConfig
      * @param UploadResizeConfigInterface $imageUploadConfig
      */
     public function __construct(
@@ -64,13 +55,10 @@ public function __construct(
         \Magento\Framework\File\Size $fileSize,
         array $data = [],
         Json $jsonEncoder = null,
-        UploadConfigInterface $imageConfig = null,
         UploadResizeConfigInterface $imageUploadConfig = null
     ) {
         $this->_fileSizeService = $fileSize;
         $this->jsonEncoder = $jsonEncoder ?: ObjectManager::getInstance()->get(Json::class);
-        $this->imageConfig = $imageConfig
-            ?: ObjectManager::getInstance()->get(UploadConfigInterface::class);
         $this->imageUploadConfig = $imageUploadConfig
             ?: ObjectManager::getInstance()->get(UploadResizeConfigInterface::class);
         parent::__construct($context, $data);
diff --git a/app/etc/di.xml b/app/etc/di.xml
index f0f27ea0e7d83..46a927b366175 100644
--- a/app/etc/di.xml
+++ b/app/etc/di.xml
@@ -87,7 +87,6 @@
     <preference for="Magento\Framework\View\Design\Theme\CustomizationInterface" type="Magento\Framework\View\Design\Theme\Customization" />
     <preference for="Magento\Framework\View\Asset\ConfigInterface" type="Magento\Framework\View\Asset\Config" />
     <preference for="Magento\Framework\Image\Adapter\ConfigInterface" type="Magento\Framework\Image\Adapter\Config" />
-    <preference for="Magento\Framework\Image\Adapter\UploadConfigInterface" type="Magento\Framework\Image\Adapter\Config" />
     <preference for="Magento\Framework\View\Design\Theme\Image\PathInterface" type="Magento\Theme\Model\Theme\Image\Path" />
     <preference for="Magento\Framework\Session\Config\ConfigInterface" type="Magento\Framework\Session\Config" />
     <preference for="Magento\Framework\Session\SidResolverInterface" type="Magento\Framework\Session\SidResolver\Proxy" />
diff --git a/lib/internal/Magento/Framework/File/Uploader.php b/lib/internal/Magento/Framework/File/Uploader.php
index 5e0bf593fef49..ea1cd9d49e2fa 100644
--- a/lib/internal/Magento/Framework/File/Uploader.php
+++ b/lib/internal/Magento/Framework/File/Uploader.php
@@ -161,13 +161,13 @@ class Uploader
 
     /**
      * Maximum Image Width resolution in pixels. For image resizing on client side
-     * @deprecated @see \Magento\Framework\Image\Adapter\UploadConfigInterface::getMaxWidth()
+     * @deprecated @see \Magento\Backend\Model\Image\UploadResizeConfigInterface::getMaxWidth()
      */
     const MAX_IMAGE_WIDTH = 1920;
 
     /**
      * Maximum Image Height resolution in pixels. For image resizing on client side
-     * @deprecated @see \Magento\Framework\Image\Adapter\UploadConfigInterface::getMaxHeight()
+     * @deprecated @see \Magento\Backend\Model\Image\UploadResizeConfigInterface::getMaxHeight()
      */
     const MAX_IMAGE_HEIGHT = 1200;
 
diff --git a/lib/internal/Magento/Framework/Image/Adapter/Config.php b/lib/internal/Magento/Framework/Image/Adapter/Config.php
index 8926f5a0a9fa7..4213fb2b0b330 100644
--- a/lib/internal/Magento/Framework/Image/Adapter/Config.php
+++ b/lib/internal/Magento/Framework/Image/Adapter/Config.php
@@ -10,24 +10,12 @@
 /**
  * Image config provider.
  */
-class Config implements ConfigInterface, UploadConfigInterface
+class Config implements ConfigInterface
 {
     const XML_PATH_IMAGE_ADAPTER = 'dev/image/default_adapter';
 
     const XML_PATH_IMAGE_ADAPTERS = 'dev/image/adapters';
 
-    /**
-     * Config path for the maximal image width value
-     * @deprecated Used in a method that is deprecated
-     */
-    const XML_PATH_MAX_WIDTH_IMAGE = 'system/upload_configuration/max_width';
-
-    /**
-     * Config path for the maximal image height value
-     * @deprecated Used in a method that is deprecated
-     */
-    const XML_PATH_MAX_HEIGHT_IMAGE = 'system/upload_configuration/max_height';
-
     /**
      * @var \Magento\Framework\App\Config\ScopeConfigInterface
      */
@@ -60,28 +48,4 @@ public function getAdapters()
     {
         return $this->config->getValue(self::XML_PATH_IMAGE_ADAPTERS);
     }
-
-    /**
-     * Get Maximum Image Width resolution in pixels. For image resizing on client side.
-     *
-     * @return int
-     * @deprecated 102.0.1
-     * @see \Magento\Backend\Model\Image\UploadResizeConfigInterface::getMaxHeight()
-     */
-    public function getMaxWidth(): int
-    {
-        return (int)$this->config->getValue(self::XML_PATH_MAX_WIDTH_IMAGE);
-    }
-
-    /**
-     * Get Maximum Image Height resolution in pixels. For image resizing on client side.
-     *
-     * @return int
-     * @deprecated 102.0.1
-     * @see \Magento\Backend\Model\Image\UploadResizeConfigInterface::getMaxHeight()
-     */
-    public function getMaxHeight(): int
-    {
-        return (int)$this->config->getValue(self::XML_PATH_MAX_HEIGHT_IMAGE);
-    }
 }
diff --git a/lib/internal/Magento/Framework/Image/Adapter/UploadConfigInterface.php b/lib/internal/Magento/Framework/Image/Adapter/UploadConfigInterface.php
deleted file mode 100644
index 54fa7a57c7c7e..0000000000000
--- a/lib/internal/Magento/Framework/Image/Adapter/UploadConfigInterface.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-/**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
-declare(strict_types=1);
-
-namespace Magento\Framework\Image\Adapter;
-
-/**
- * Interface UploadConfigInterface
- *
- * @deprecated moved to proper namespace and extended
- * @see \Magento\Backend\Model\Image\UploadResizeConfigInterface;
- */
-interface UploadConfigInterface
-{
-    /**
-     * Get maximum image width.
-     *
-     * @return int
-     */
-    public function getMaxWidth(): int;
-
-    /**
-     * Get maximum image height.
-     *
-     * @return int
-     */
-    public function getMaxHeight(): int;
-}

From 0c1fb5276531f176f486d43d2a7acb6e69f41883 Mon Sep 17 00:00:00 2001
From: Medvediev <v.medvediev@atwix.com>
Date: Fri, 12 Feb 2021 13:43:12 +0200
Subject: [PATCH 05/11] 
 lib/internal/Magento/Framework/Module/Output/ConfigInterface has been
 removed. The behavior of the
 Magento\Framework\Module\Manager::isOutputEnabled has changed

---
 app/code/Magento/Store/etc/di.xml             |  5 --
 app/etc/di.xml                                |  1 -
 .../Magento/Framework/Module/Manager.php      | 39 +--------
 .../Framework/Module/Output/Config.php        | 80 -------------------
 .../Module/Output/ConfigInterface.php         | 39 ---------
 .../Module/Test/Unit/DbVersionInfoTest.php    |  8 --
 .../Module/Test/Unit/ManagerTest.php          | 60 +-------------
 7 files changed, 6 insertions(+), 226 deletions(-)
 delete mode 100644 lib/internal/Magento/Framework/Module/Output/Config.php
 delete mode 100644 lib/internal/Magento/Framework/Module/Output/ConfigInterface.php

diff --git a/app/code/Magento/Store/etc/di.xml b/app/code/Magento/Store/etc/di.xml
index ccfec562ba103..0a3465f9efecf 100644
--- a/app/code/Magento/Store/etc/di.xml
+++ b/app/code/Magento/Store/etc/di.xml
@@ -166,11 +166,6 @@
             <argument name="urlPlaceholder" xsi:type="string">{{base_url}}</argument>
         </arguments>
     </type>
-    <type name="Magento\Framework\Module\Output\Config">
-        <arguments>
-        <argument name="scopeType" xsi:type="const">Magento\Store\Model\ScopeInterface::SCOPE_STORE</argument>
-        </arguments>
-    </type>
     <type name="Magento\Framework\Session\Config">
         <arguments>
         <argument name="scopeType" xsi:type="const">Magento\Store\Model\ScopeInterface::SCOPE_STORE</argument>
diff --git a/app/etc/di.xml b/app/etc/di.xml
index 46a927b366175..f1ea8c9299420 100644
--- a/app/etc/di.xml
+++ b/app/etc/di.xml
@@ -83,7 +83,6 @@
     <preference for="Magento\Framework\Message\ManagerInterface" type="Magento\Framework\Message\Manager" />
     <preference for="Magento\Framework\App\Config\ValueInterface" type="Magento\Framework\App\Config\Value" />
     <preference for="Magento\Framework\Interception\ChainInterface" type="Magento\Framework\Interception\Chain\Chain" />
-    <preference for="Magento\Framework\Module\Output\ConfigInterface" type="Magento\Framework\Module\Output\Config" />
     <preference for="Magento\Framework\View\Design\Theme\CustomizationInterface" type="Magento\Framework\View\Design\Theme\Customization" />
     <preference for="Magento\Framework\View\Asset\ConfigInterface" type="Magento\Framework\View\Asset\Config" />
     <preference for="Magento\Framework\Image\Adapter\ConfigInterface" type="Magento\Framework\Image\Adapter\Config" />
diff --git a/lib/internal/Magento/Framework/Module/Manager.php b/lib/internal/Magento/Framework/Module/Manager.php
index 73ea68ac367c3..b98a2eba7e5e1 100644
--- a/lib/internal/Magento/Framework/Module/Manager.php
+++ b/lib/internal/Magento/Framework/Module/Manager.php
@@ -21,12 +21,6 @@
  */
 class Manager
 {
-    /**
-     * @var Output\ConfigInterface
-     * @deprecated 101.0.0
-     */
-    private $outputConfig;
-
     /**
      * @var ModuleListInterface
      */
@@ -39,16 +33,13 @@ class Manager
     private $outputConfigPaths;
 
     /**
-     * @param Output\ConfigInterface $outputConfig
      * @param ModuleListInterface $moduleList
      * @param array $outputConfigPaths
      */
     public function __construct(
-        Output\ConfigInterface $outputConfig,
         ModuleListInterface $moduleList,
         array $outputConfigPaths = []
     ) {
-        $this->outputConfig = $outputConfig;
         $this->moduleList = $moduleList;
         $this->outputConfigPaths = $outputConfigPaths;
     }
@@ -70,34 +61,12 @@ public function isEnabled($moduleName)
      * @param string $moduleName Fully-qualified module name
      * @return boolean
      * @deprecated 101.0.0 Magento does not support disabling/enabling modules output from the Admin Panel since 2.2.0
-     * version. Module output can still be enabled/disabled in configuration files. However, this functionality should
-     * not be used in future development. Module design should explicitly state dependencies to avoid requiring output
-     * disabling. This functionality will temporarily be kept in Magento core, as there are unresolved modularity
-     * issues that will be addressed in future releases.
+     * version. Magento does not support disabling/enabling modules output from the configuration files since 2.5.0.
+     * Module design should explicitly state dependencies to avoid requiring output disabling.
+     * @see \Magento\Framework\Module\Manager::isEnabled()
      */
     public function isOutputEnabled($moduleName)
     {
-        return $this->isEnabled($moduleName)
-            && $this->_isCustomOutputConfigEnabled($moduleName)
-            && !$this->outputConfig->isEnabled($moduleName);
-    }
-
-    /**
-     * Whether a configuration switch for a module output permits output or not
-     *
-     * @param string $moduleName Fully-qualified module name
-     * @return boolean
-     * @deprecated 101.0.0
-     */
-    protected function _isCustomOutputConfigEnabled($moduleName)
-    {
-        if (isset($this->outputConfigPaths[$moduleName])) {
-            $configPath = $this->outputConfigPaths[$moduleName];
-            if (defined($configPath)) {
-                $configPath = constant($configPath);
-            }
-            return $this->outputConfig->isSetFlag($configPath);
-        }
-        return true;
+        return $this->isEnabled($moduleName);
     }
 }
diff --git a/lib/internal/Magento/Framework/Module/Output/Config.php b/lib/internal/Magento/Framework/Module/Output/Config.php
deleted file mode 100644
index 765998fcdb568..0000000000000
--- a/lib/internal/Magento/Framework/Module/Output/Config.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-/**
- * Module Output Config Model
- *
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
-namespace Magento\Framework\Module\Output;
-
-/**
- * @deprecated 101.0.0 Magento does not support disabling/enabling modules output from the Admin Panel since 2.2.0
- * version. Module output can still be enabled/disabled in configuration files. However, this functionality should
- * not be used in future development. Module design should explicitly state dependencies to avoid requiring output
- * disabling. This functionality will temporarily be kept in Magento core, as there are unresolved modularity
- * issues that will be addressed in future releases.
- */
-class Config implements \Magento\Framework\Module\Output\ConfigInterface
-{
-    /**
-     * XPath in the configuration where module statuses are stored
-     * @deprecated 100.2.0
-     */
-    const XML_PATH_MODULE_OUTPUT_STATUS = 'advanced/modules_disable_output/%s';
-
-    /**
-     * @var \Magento\Framework\App\Config\ScopeConfigInterface
-     * @deprecated 101.0.0
-     */
-    protected $_scopeConfig;
-
-    /**
-     * @var string
-     * @deprecated 101.0.0
-     */
-    protected $_storeType;
-
-    /**
-     * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
-     * @param string $scopeType
-     */
-    public function __construct(
-        \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
-        $scopeType
-    ) {
-        $this->_scopeConfig = $scopeConfig;
-        $this->_storeType = $scopeType;
-    }
-
-    /**
-     * Whether a module is enabled in the configuration or not
-     *
-     * @param string $moduleName Fully-qualified module name
-     * @deprecated 101.0.0 Magento does not support disabling/enabling modules output from the Admin Panel since 2.2.0
-     * version. Module output can still be enabled/disabled in configuration files. However, this functionality should
-     * not be used in future development. Module design should explicitly state dependencies to avoid requiring output
-     * disabling. This functionality will temporarily be kept in Magento core, as there are unresolved modularity
-     * issues that will be addressed in future releases.
-     * @return boolean
-     */
-    public function isEnabled($moduleName)
-    {
-        return $this->isSetFlag(sprintf(self::XML_PATH_MODULE_OUTPUT_STATUS, $moduleName));
-    }
-
-    /**
-     * Retrieve module enabled specific path
-     *
-     * @param string $path Fully-qualified config path
-     * @deprecated 101.0.0 Magento does not support disabling/enabling modules output from the Admin Panel since 2.2.0
-     * version. Module output can still be enabled/disabled in configuration files. However, this functionality should
-     * not be used in future development. Module design should explicitly state dependencies to avoid requiring output
-     * disabling. This functionality will temporarily be kept in Magento core, as there are unresolved modularity
-     * issues that will be addressed in future releases.
-     * @return boolean
-     */
-    public function isSetFlag($path)
-    {
-        return $this->_scopeConfig->isSetFlag($path, $this->_storeType);
-    }
-}
diff --git a/lib/internal/Magento/Framework/Module/Output/ConfigInterface.php b/lib/internal/Magento/Framework/Module/Output/ConfigInterface.php
deleted file mode 100644
index b657e742ee2f0..0000000000000
--- a/lib/internal/Magento/Framework/Module/Output/ConfigInterface.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-/**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
-namespace Magento\Framework\Module\Output;
-
-/**
- * @deprecated 101.0.0 Magento does not support disabling/enabling modules output from the Admin Panel since 2.2.0
- * version. Module output can still be enabled/disabled in configuration files.
- */
-interface ConfigInterface
-{
-    /**
-     * Whether a module is enabled in the configuration or not
-     *
-     * @param string $moduleName Fully-qualified module name
-     * @deprecated 101.0.0 Magento does not support disabling/enabling modules output from the Admin Panel since 2.2.0
-     * version. Module output can still be enabled/disabled in configuration files. However, this functionality should
-     * not be used in future development. Module design should explicitly state dependencies to avoid requiring output
-     * disabling. This functionality will temporarily be kept in Magento core, as there are unresolved modularity
-     * issues that will be addressed in future releases.
-     * @return boolean
-     */
-    public function isEnabled($moduleName);
-
-    /**
-     * Retrieve module enabled specific path
-     *
-     * @param string $path Fully-qualified config path
-     * @deprecated 101.0.0 Magento does not support disabling/enabling modules output from the Admin Panel since 2.2.0
-     * version. Module output can still be enabled/disabled in configuration files. However, this functionality should
-     * not be used in future development. Module design should explicitly state dependencies to avoid requiring output
-     * disabling. This functionality will temporarily be kept in Magento core, as there are unresolved modularity
-     * issues that will be addressed in future releases.
-     * @return boolean
-     */
-    public function isSetFlag($path);
-}
diff --git a/lib/internal/Magento/Framework/Module/Test/Unit/DbVersionInfoTest.php b/lib/internal/Magento/Framework/Module/Test/Unit/DbVersionInfoTest.php
index e5f44afa10c8e..49cc33f90b65a 100644
--- a/lib/internal/Magento/Framework/Module/Test/Unit/DbVersionInfoTest.php
+++ b/lib/internal/Magento/Framework/Module/Test/Unit/DbVersionInfoTest.php
@@ -9,7 +9,6 @@
 
 use Magento\Framework\Module\DbVersionInfo;
 use Magento\Framework\Module\ModuleListInterface;
-use Magento\Framework\Module\Output\ConfigInterface;
 use Magento\Framework\Module\ResourceInterface;
 use PHPUnit\Framework\MockObject\MockObject;
 use PHPUnit\Framework\TestCase;
@@ -31,11 +30,6 @@ class DbVersionInfoTest extends TestCase
      */
     private $moduleResource;
 
-    /**
-     * @var ConfigInterface|MockObject
-     */
-    private $_outputConfig;
-
     protected function setUp(): void
     {
         $this->moduleList = $this->getMockForAbstractClass(ModuleListInterface::class);
@@ -49,8 +43,6 @@ protected function setUp(): void
         $this->moduleList->expects($this->any())
             ->method('getNames')
             ->willReturn(['Module_One', 'Module_Two']);
-
-        $this->_outputConfig = $this->getMockForAbstractClass(ConfigInterface::class);
         $this->moduleResource = $this->getMockForAbstractClass(ResourceInterface::class);
 
         $this->dbVersionInfo = new DbVersionInfo(
diff --git a/lib/internal/Magento/Framework/Module/Test/Unit/ManagerTest.php b/lib/internal/Magento/Framework/Module/Test/Unit/ManagerTest.php
index a619525704a70..3c3159b19913a 100644
--- a/lib/internal/Magento/Framework/Module/Test/Unit/ManagerTest.php
+++ b/lib/internal/Magento/Framework/Module/Test/Unit/ManagerTest.php
@@ -9,7 +9,6 @@
 
 use Magento\Framework\Module\Manager;
 use Magento\Framework\Module\ModuleListInterface;
-use Magento\Framework\Module\Output\ConfigInterface;
 use PHPUnit\Framework\MockObject\MockObject;
 use PHPUnit\Framework\TestCase;
 
@@ -30,11 +29,6 @@ class ManagerTest extends TestCase
      */
     private $_moduleList;
 
-    /**
-     * @var MockObject
-     */
-    private $_outputConfig;
-
     /**
      * @inheritdoc
      */
@@ -50,9 +44,8 @@ protected function setUp(): void
                     ['Module_Three', ['name' => 'Two_Three']],
                 ]
             );
-        $this->_outputConfig = $this->getMockForAbstractClass(ConfigInterface::class);
+
         $this->_model = new Manager(
-            $this->_outputConfig,
             $this->_moduleList,
             [
                 'Module_Two' => self::XML_PATH_OUTPUT_ENABLED,
@@ -74,56 +67,7 @@ public function testIsEnabled()
 
     public function testIsOutputEnabledReturnsFalseForDisabledModule()
     {
-        $this->_outputConfig->expects($this->any())->method('isSetFlag')->willReturn(true);
+        $this->_moduleList->expects($this->once())->method('has')->willReturn(false);
         $this->assertFalse($this->_model->isOutputEnabled('Disabled_Module'));
     }
-
-    /**
-     * @param bool $configValue
-     * @param bool $expectedResult
-     * @dataProvider isOutputEnabledGenericConfigPathDataProvider
-     */
-    public function testIsOutputEnabledGenericConfigPath($configValue, $expectedResult)
-    {
-        $this->_moduleList->expects($this->once())->method('has')->willReturn(true);
-        $this->_outputConfig->expects($this->once())
-            ->method('isEnabled')
-            ->with('Module_One')
-            ->willReturn($configValue);
-        $this->assertEquals($expectedResult, $this->_model->isOutputEnabled('Module_One'));
-    }
-
-    /**
-     * @return array
-     */
-    public function isOutputEnabledGenericConfigPathDataProvider()
-    {
-        return ['output disabled' => [true, false], 'output enabled' => [false, true]];
-    }
-
-    /**
-     * @param bool $configValue
-     * @param bool $expectedResult
-     * @dataProvider isOutputEnabledCustomConfigPathDataProvider
-     */
-    public function testIsOutputEnabledCustomConfigPath($configValue, $expectedResult)
-    {
-        $this->_moduleList->expects($this->once())->method('has')->willReturn(true);
-        $this->_outputConfig->expects($this->at(0))
-            ->method('isSetFlag')
-            ->with(self::XML_PATH_OUTPUT_ENABLED)
-            ->willReturn($configValue);
-        $this->assertEquals($expectedResult, $this->_model->isOutputEnabled('Module_Two'));
-    }
-
-    /**
-     * @return array
-     */
-    public function isOutputEnabledCustomConfigPathDataProvider()
-    {
-        return [
-            'path literal, output disabled' => [false, false],
-            'path literal, output enabled'  => [true, true],
-        ];
-    }
 }

From 1d16955455f1b37424a417e7de383a6bcc2257df Mon Sep 17 00:00:00 2001
From: Medvediev <v.medvediev@atwix.com>
Date: Fri, 12 Feb 2021 14:01:32 +0200
Subject: [PATCH 06/11] lib/internal/Magento/Framework/Option/ArrayInterface
 has been removed

---
 .../Model/Config/Source/Frequency.php            |  2 +-
 .../Model/Adminhtml/Search/Grid/Options.php      |  2 +-
 .../Analytics/Model/Config/Source/Vertical.php   |  2 +-
 .../Magento/Backup/Model/Config/Source/Type.php  |  2 +-
 app/code/Magento/Backup/Model/Grid/Options.php   |  2 +-
 .../Model/Source/Option/Selection/Price/Type.php |  2 +-
 .../Magento/Bundle/Model/Source/Option/Type.php  |  2 +-
 app/code/Magento/Captcha/Model/Config/Font.php   |  2 +-
 .../Captcha/Model/Config/Form/AbstractForm.php   |  2 +-
 app/code/Magento/Captcha/Model/Config/Mode.php   |  2 +-
 .../Catalog/Model/Config/Source/Category.php     |  2 +-
 .../Catalog/Model/Config/Source/GridPerPage.php  |  2 +-
 .../Catalog/Model/Config/Source/LayoutList.php   |  2 +-
 .../Catalog/Model/Config/Source/ListMode.php     |  2 +-
 .../Catalog/Model/Config/Source/ListPerPage.php  |  2 +-
 .../Catalog/Model/Config/Source/ListSort.php     |  2 +-
 .../Catalog/Model/Config/Source/Price/Scope.php  |  2 +-
 .../Catalog/Model/Config/Source/Price/Step.php   |  4 ++--
 .../Model/Config/Source/Product/Options/Type.php |  2 +-
 .../Model/Config/Source/Product/Thumbnail.php    |  2 +-
 .../Catalog/Model/Config/Source/TimeFormat.php   |  2 +-
 .../Model/Config/Source/Watermark/Position.php   |  2 +-
 .../CatalogInventory/Model/Source/Backorders.php |  2 +-
 .../Adminhtml/BillingAddressDisplayOptions.php   |  4 ++--
 .../Model/Config/Source/Cart/Summary.php         |  2 +-
 .../Magento/Cms/Model/Config/Source/Page.php     |  2 +-
 .../Cms/Model/Config/Source/Wysiwyg/Editor.php   |  2 +-
 .../Cms/Model/Config/Source/Wysiwyg/Enabled.php  |  2 +-
 .../Config/Model/Config/Source/Admin/Page.php    |  2 +-
 .../Config/Model/Config/Source/Date/Short.php    |  2 +-
 .../Config/Model/Config/Source/Design/Robots.php |  2 +-
 .../Config/Model/Config/Source/Dev/Dbautoup.php  |  2 +-
 .../Model/Config/Source/Email/Identity.php       |  2 +-
 .../Config/Model/Config/Source/Email/Method.php  |  2 +-
 .../Model/Config/Source/Email/Smtpauth.php       |  2 +-
 .../Model/Config/Source/Email/Template.php       |  2 +-
 .../Config/Model/Config/Source/Enabledisable.php |  2 +-
 .../Config/Model/Config/Source/Image/Adapter.php |  2 +-
 .../Config/Model/Config/Source/Locale.php        |  2 +-
 .../Model/Config/Source/Locale/Country.php       |  2 +-
 .../Model/Config/Source/Locale/Currency.php      |  2 +-
 .../Model/Config/Source/Locale/Currency/All.php  |  2 +-
 .../Model/Config/Source/Locale/Timezone.php      |  2 +-
 .../Model/Config/Source/Locale/Weekdaycodes.php  |  2 +-
 .../Model/Config/Source/Locale/Weekdays.php      |  2 +-
 .../Config/Model/Config/Source/Nooptreq.php      |  2 +-
 .../Config/Model/Config/Source/Reports/Scope.php |  2 +-
 .../Magento/Config/Model/Config/Source/Store.php |  2 +-
 .../Config/Model/Config/Source/Web/Protocol.php  |  2 +-
 .../Config/Model/Config/Source/Web/Redirect.php  |  2 +-
 .../Config/Model/Config/Source/Website.php       |  2 +-
 .../Model/Config/Source/Website/OptionHash.php   |  4 ++--
 .../Magento/Config/Model/Config/Source/Yesno.php |  2 +-
 .../Config/Model/Config/Source/Yesnocustom.php   |  2 +-
 .../Config/Model/Config/SourceFactory.php        |  2 +-
 .../Model/Config/Structure/Element/FieldTest.php |  4 ++--
 .../Cron/Model/Config/Source/Frequency.php       |  2 +-
 app/code/Magento/Customer/Model/Config/Share.php |  2 +-
 .../Model/Config/Source/Address/Type.php         |  2 +-
 .../Customer/Model/Config/Source/Group.php       |  2 +-
 .../Model/Config/Source/Group/Multiselect.php    |  2 +-
 .../Model/Config/Source/WorkflowType.php         |  4 ++--
 .../Model/Config/Source/WorkflowTypeTest.php     |  4 ++--
 .../Magento/Dhl/Model/Source/Contenttype.php     |  2 +-
 .../Directory/Model/Config/Source/Allregion.php  |  2 +-
 .../Directory/Model/Config/Source/Country.php    |  2 +-
 .../Model/Config/Source/Country/Full.php         |  2 +-
 .../Directory/Model/Config/Source/WeightUnit.php |  2 +-
 .../Model/Currency/Import/Source/Service.php     |  2 +-
 .../System/Config/Source/Contentdisposition.php  |  2 +-
 .../System/Config/Source/Orderitemstatus.php     |  2 +-
 .../Adminhtml/System/Config/Source/Inputtype.php |  2 +-
 .../Entity/Attribute/Source/AbstractSource.php   |  2 +-
 .../Model/Config/Source/Language.php             |  2 +-
 .../Model/Config/Source/ValueType.php            |  2 +-
 .../ImportExport/Model/Source/Export/Entity.php  |  2 +-
 .../ImportExport/Model/Source/Export/Format.php  |  2 +-
 .../Model/Source/Import/AbstractBehavior.php     |  2 +-
 .../ImportExport/Model/Source/Import/Entity.php  |  2 +-
 .../Model/Integration/Source/Status.php          |  2 +-
 .../Config/Source/Storage/Media/Database.php     |  2 +-
 .../Config/Source/Storage/Media/Storage.php      |  2 +-
 .../Subscribe/Grid/Options/GroupOptionHash.php   |  2 +-
 .../Subscribe/Grid/Options/StoreOptionHash.php   |  2 +-
 .../Newsletter/Model/Queue/Options/Status.php    |  2 +-
 .../Model/Config/Source/Flatrate.php             |  2 +-
 .../Model/Config/Source/Tablerate.php            |  2 +-
 .../Model/System/Config/Source/Application.php   |  4 ++--
 .../Payment/Model/Config/Source/Allmethods.php   |  2 +-
 .../Model/Config/Source/Allspecificcountries.php |  2 +-
 .../Payment/Model/Config/Source/Cctype.php       |  2 +-
 .../Model/ResourceModel/Grid/GroupList.php       |  2 +-
 .../Model/ResourceModel/Grid/TypeList.php        |  2 +-
 app/code/Magento/Payment/Model/Source/Cctype.php |  2 +-
 .../Magento/Payment/Model/Source/Invoice.php     |  2 +-
 .../Settlement/Options/TransactionEvents.php     |  2 +-
 .../Model/System/Config/Source/BuyerCountry.php  |  2 +-
 .../System/Config/Source/FetchingSchedule.php    |  2 +-
 .../Paypal/Model/System/Config/Source/Logo.php   |  2 +-
 .../System/Config/Source/MerchantCountry.php     |  2 +-
 .../System/Config/Source/PaymentActions.php      |  2 +-
 .../Config/Source/PaymentActions/Express.php     |  2 +-
 .../Config/Source/RequireBillingAddress.php      |  2 +-
 .../Model/System/Config/Source/UrlMethod.php     |  2 +-
 .../Model/System/Config/Source/Yesnoshortcut.php |  2 +-
 .../Sales/Model/Config/Source/Order/Status.php   |  2 +-
 .../Order/Creditmemo/Grid/StatusList.php         |  2 +-
 .../Order/Invoice/Grid/StatusList.php            |  2 +-
 .../ResourceModel/Transaction/Grid/TypeList.php  |  2 +-
 .../Model/System/Config/Source/Coupon/Format.php |  2 +-
 .../Adminhtml/System/Config/Source/Engine.php    |  2 +-
 .../Security/Model/Config/Source/ResetMethod.php |  2 +-
 .../SendFriend/Model/Source/Checktype.php        |  2 +-
 .../Shipping/Model/Config/Source/Allmethods.php  |  2 +-
 .../Model/Config/Source/Allspecificcountries.php |  2 +-
 .../Shipping/Model/Source/HandlingAction.php     |  2 +-
 .../Shipping/Model/Source/HandlingType.php       |  2 +-
 .../Sitemap/Model/Config/Source/Frequency.php    |  2 +-
 .../Model/Source/Product/Image/IncludeImage.php  |  2 +-
 .../Magento/Tax/Model/Config/Source/Apply/On.php |  2 +-
 .../Magento/Tax/Model/Config/Source/Basedon.php  |  2 +-
 .../Magento/Tax/Model/Config/Source/Catalog.php  |  2 +-
 .../Tax/Model/System/Config/Source/Algorithm.php |  2 +-
 .../Tax/Model/System/Config/Source/Apply.php     |  2 +-
 .../Tax/Model/System/Config/Source/PriceType.php |  2 +-
 .../System/Config/Source/Tax/Display/Type.php    |  2 +-
 .../Model/System/Config/Source/Tax/Region.php    |  2 +-
 .../Magento/Theme/Model/Layout/Source/Layout.php |  2 +-
 .../Model/Js/Config/Source/Strategy.php          |  2 +-
 .../User/Model/System/Config/Source/Password.php |  2 +-
 .../Magento/Variable/Model/Source/Variables.php  |  2 +-
 .../Magento/Weee/Model/Config/Source/Display.php |  2 +-
 .../Widget/Instance/Options/ThemeId.php          |  2 +-
 .../Widget/Instance/Options/Types.php            |  2 +-
 .../Model/Widget/Instance/OptionsFactory.php     |  2 +-
 .../Wishlist/Model/Config/Source/Summary.php     |  2 +-
 .../Test/Integrity/Library/DependencyTest.php    |  2 +-
 .../Magento/Framework/App/Scope/Source.php       |  4 ++--
 .../Magento/Framework/Data/Collection.php        |  6 +++---
 .../Magento/Framework/Option/ArrayInterface.php  | 16 ----------------
 lib/internal/Magento/Framework/Option/README.md  |  2 +-
 .../Framework/View/Design/Theme/Label.php        |  2 +-
 .../View/Design/Theme/Label/Options.php          |  4 ++--
 143 files changed, 153 insertions(+), 169 deletions(-)
 delete mode 100644 lib/internal/Magento/Framework/Option/ArrayInterface.php

diff --git a/app/code/Magento/AdminNotification/Model/Config/Source/Frequency.php b/app/code/Magento/AdminNotification/Model/Config/Source/Frequency.php
index 6defd92ea48cb..3f16c8e4d699a 100644
--- a/app/code/Magento/AdminNotification/Model/Config/Source/Frequency.php
+++ b/app/code/Magento/AdminNotification/Model/Config/Source/Frequency.php
@@ -12,7 +12,7 @@
  * @api
  * @since 100.0.2
  */
-class Frequency implements \Magento\Framework\Option\ArrayInterface
+class Frequency implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @return array
diff --git a/app/code/Magento/AdvancedSearch/Model/Adminhtml/Search/Grid/Options.php b/app/code/Magento/AdvancedSearch/Model/Adminhtml/Search/Grid/Options.php
index b139689dbc234..0821004a5409d 100644
--- a/app/code/Magento/AdvancedSearch/Model/Adminhtml/Search/Grid/Options.php
+++ b/app/code/Magento/AdvancedSearch/Model/Adminhtml/Search/Grid/Options.php
@@ -11,7 +11,7 @@
  * @api
  * @since 100.0.2
  */
-class Options implements \Magento\Framework\Option\ArrayInterface
+class Options implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var \Magento\Framework\App\RequestInterface
diff --git a/app/code/Magento/Analytics/Model/Config/Source/Vertical.php b/app/code/Magento/Analytics/Model/Config/Source/Vertical.php
index c9d9582ea7c7a..13291b2730f78 100644
--- a/app/code/Magento/Analytics/Model/Config/Source/Vertical.php
+++ b/app/code/Magento/Analytics/Model/Config/Source/Vertical.php
@@ -11,7 +11,7 @@
  * Prepares and provides options for a selector of verticals which is located
  * in the corresponding configuration menu of the Admin area.
  */
-class Vertical implements \Magento\Framework\Option\ArrayInterface
+class Vertical implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * The list of possible verticals.
diff --git a/app/code/Magento/Backup/Model/Config/Source/Type.php b/app/code/Magento/Backup/Model/Config/Source/Type.php
index d8a7f139a1710..60d00694d1bb9 100644
--- a/app/code/Magento/Backup/Model/Config/Source/Type.php
+++ b/app/code/Magento/Backup/Model/Config/Source/Type.php
@@ -12,7 +12,7 @@
  * @api
  * @since 100.0.2
  */
-class Type implements \Magento\Framework\Option\ArrayInterface
+class Type implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Backup data
diff --git a/app/code/Magento/Backup/Model/Grid/Options.php b/app/code/Magento/Backup/Model/Grid/Options.php
index 762b8ddc3e518..31807553eab87 100644
--- a/app/code/Magento/Backup/Model/Grid/Options.php
+++ b/app/code/Magento/Backup/Model/Grid/Options.php
@@ -15,7 +15,7 @@
  * @api
  * @since 100.0.2
  */
-class Options implements \Magento\Framework\Option\ArrayInterface
+class Options implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var \Magento\Backup\Helper\Data
diff --git a/app/code/Magento/Bundle/Model/Source/Option/Selection/Price/Type.php b/app/code/Magento/Bundle/Model/Source/Option/Selection/Price/Type.php
index 2f7182db84d8e..5f53532a1e179 100644
--- a/app/code/Magento/Bundle/Model/Source/Option/Selection/Price/Type.php
+++ b/app/code/Magento/Bundle/Model/Source/Option/Selection/Price/Type.php
@@ -13,7 +13,7 @@
  * @api
  * @since 100.0.2
  */
-class Type implements \Magento\Framework\Option\ArrayInterface
+class Type implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @return array
diff --git a/app/code/Magento/Bundle/Model/Source/Option/Type.php b/app/code/Magento/Bundle/Model/Source/Option/Type.php
index f129d24ade671..2b8bf029838ef 100644
--- a/app/code/Magento/Bundle/Model/Source/Option/Type.php
+++ b/app/code/Magento/Bundle/Model/Source/Option/Type.php
@@ -16,7 +16,7 @@
  *
  */
 class Type extends \Magento\Framework\Model\AbstractExtensibleModel implements
-    \Magento\Framework\Option\ArrayInterface,
+    \Magento\Framework\Data\OptionSourceInterface,
     \Magento\Bundle\Api\Data\OptionTypeInterface
 {
     /**#@+
diff --git a/app/code/Magento/Captcha/Model/Config/Font.php b/app/code/Magento/Captcha/Model/Config/Font.php
index cce57e6ced81a..c1aacc439b048 100644
--- a/app/code/Magento/Captcha/Model/Config/Font.php
+++ b/app/code/Magento/Captcha/Model/Config/Font.php
@@ -11,7 +11,7 @@
  */
 namespace Magento\Captcha\Model\Config;
 
-class Font implements \Magento\Framework\Option\ArrayInterface
+class Font implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Captcha data
diff --git a/app/code/Magento/Captcha/Model/Config/Form/AbstractForm.php b/app/code/Magento/Captcha/Model/Config/Form/AbstractForm.php
index 811e455af534a..e9d66f18b859f 100644
--- a/app/code/Magento/Captcha/Model/Config/Form/AbstractForm.php
+++ b/app/code/Magento/Captcha/Model/Config/Form/AbstractForm.php
@@ -13,7 +13,7 @@
 
 use Magento\Framework\App\Config\Value;
 
-abstract class AbstractForm extends Value implements \Magento\Framework\Option\ArrayInterface
+abstract class AbstractForm extends Value implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var string
diff --git a/app/code/Magento/Captcha/Model/Config/Mode.php b/app/code/Magento/Captcha/Model/Config/Mode.php
index b1f0239e73537..eba42d45197a6 100644
--- a/app/code/Magento/Captcha/Model/Config/Mode.php
+++ b/app/code/Magento/Captcha/Model/Config/Mode.php
@@ -11,7 +11,7 @@
  */
 namespace Magento\Captcha\Model\Config;
 
-class Mode implements \Magento\Framework\Option\ArrayInterface
+class Mode implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Get options for captcha mode selection field
diff --git a/app/code/Magento/Catalog/Model/Config/Source/Category.php b/app/code/Magento/Catalog/Model/Config/Source/Category.php
index 24d7cc0b67378..2c1af2fa63447 100644
--- a/app/code/Magento/Catalog/Model/Config/Source/Category.php
+++ b/app/code/Magento/Catalog/Model/Config/Source/Category.php
@@ -10,7 +10,7 @@
  *
  * @SuppressWarnings(PHPMD.LongVariable)
  */
-class Category implements \Magento\Framework\Option\ArrayInterface
+class Category implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Category collection factory
diff --git a/app/code/Magento/Catalog/Model/Config/Source/GridPerPage.php b/app/code/Magento/Catalog/Model/Config/Source/GridPerPage.php
index c3311b7399db3..58b0dea749ac4 100644
--- a/app/code/Magento/Catalog/Model/Config/Source/GridPerPage.php
+++ b/app/code/Magento/Catalog/Model/Config/Source/GridPerPage.php
@@ -10,7 +10,7 @@
  *
  * @author      Magento Core Team <core@magentocommerce.com>
  */
-class GridPerPage implements \Magento\Framework\Option\ArrayInterface
+class GridPerPage implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Options
diff --git a/app/code/Magento/Catalog/Model/Config/Source/LayoutList.php b/app/code/Magento/Catalog/Model/Config/Source/LayoutList.php
index f7b7d6b9e48b9..46ff1d3bb0914 100644
--- a/app/code/Magento/Catalog/Model/Config/Source/LayoutList.php
+++ b/app/code/Magento/Catalog/Model/Config/Source/LayoutList.php
@@ -13,7 +13,7 @@
 /**
  * Returns layout list for Web>Default Layouts>Default Product Layout/Default Category Layout
  */
-class LayoutList implements \Magento\Framework\Option\ArrayInterface
+class LayoutList implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var array
diff --git a/app/code/Magento/Catalog/Model/Config/Source/ListMode.php b/app/code/Magento/Catalog/Model/Config/Source/ListMode.php
index 4b32e2d45e5f4..50daceb9c204a 100644
--- a/app/code/Magento/Catalog/Model/Config/Source/ListMode.php
+++ b/app/code/Magento/Catalog/Model/Config/Source/ListMode.php
@@ -5,7 +5,7 @@
  */
 namespace Magento\Catalog\Model\Config\Source;
 
-class ListMode implements \Magento\Framework\Option\ArrayInterface
+class ListMode implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * {@inheritdoc}
diff --git a/app/code/Magento/Catalog/Model/Config/Source/ListPerPage.php b/app/code/Magento/Catalog/Model/Config/Source/ListPerPage.php
index ae6cc555a6955..74a928100aec4 100644
--- a/app/code/Magento/Catalog/Model/Config/Source/ListPerPage.php
+++ b/app/code/Magento/Catalog/Model/Config/Source/ListPerPage.php
@@ -10,7 +10,7 @@
  *
  * @author      Magento Core Team <core@magentocommerce.com>
  */
-class ListPerPage implements \Magento\Framework\Option\ArrayInterface
+class ListPerPage implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Pager Options
diff --git a/app/code/Magento/Catalog/Model/Config/Source/ListSort.php b/app/code/Magento/Catalog/Model/Config/Source/ListSort.php
index 5cd2297fd7cbc..8c2654186898b 100644
--- a/app/code/Magento/Catalog/Model/Config/Source/ListSort.php
+++ b/app/code/Magento/Catalog/Model/Config/Source/ListSort.php
@@ -11,7 +11,7 @@
  */
 namespace Magento\Catalog\Model\Config\Source;
 
-class ListSort implements \Magento\Framework\Option\ArrayInterface
+class ListSort implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Catalog config
diff --git a/app/code/Magento/Catalog/Model/Config/Source/Price/Scope.php b/app/code/Magento/Catalog/Model/Config/Source/Price/Scope.php
index 173788aa34e66..0057bc2948f19 100644
--- a/app/code/Magento/Catalog/Model/Config/Source/Price/Scope.php
+++ b/app/code/Magento/Catalog/Model/Config/Source/Price/Scope.php
@@ -5,7 +5,7 @@
  */
 namespace Magento\Catalog\Model\Config\Source\Price;
 
-class Scope implements \Magento\Framework\Option\ArrayInterface
+class Scope implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * {@inheritdoc}
diff --git a/app/code/Magento/Catalog/Model/Config/Source/Price/Step.php b/app/code/Magento/Catalog/Model/Config/Source/Price/Step.php
index fbb0ddb91186d..db172626393b3 100644
--- a/app/code/Magento/Catalog/Model/Config/Source/Price/Step.php
+++ b/app/code/Magento/Catalog/Model/Config/Source/Price/Step.php
@@ -6,9 +6,9 @@
 namespace Magento\Catalog\Model\Config\Source\Price;
 
 use Magento\Catalog\Model\Layer\Filter\Dynamic\AlgorithmFactory;
-use Magento\Framework\Option\ArrayInterface;
+use Magento\Framework\Data\OptionSourceInterface;
 
-class Step implements ArrayInterface
+class Step implements OptionSourceInterface
 {
     /**
      * {@inheritdoc}
diff --git a/app/code/Magento/Catalog/Model/Config/Source/Product/Options/Type.php b/app/code/Magento/Catalog/Model/Config/Source/Product/Options/Type.php
index 8f6e34ca81e3a..9f1e333b04f38 100644
--- a/app/code/Magento/Catalog/Model/Config/Source/Product/Options/Type.php
+++ b/app/code/Magento/Catalog/Model/Config/Source/Product/Options/Type.php
@@ -8,7 +8,7 @@
 /**
  * Product option types mode source
  */
-class Type implements \Magento\Framework\Option\ArrayInterface
+class Type implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Product Option Config
diff --git a/app/code/Magento/Catalog/Model/Config/Source/Product/Thumbnail.php b/app/code/Magento/Catalog/Model/Config/Source/Product/Thumbnail.php
index 4424baf350fa6..3dcbc2ba2a5b4 100644
--- a/app/code/Magento/Catalog/Model/Config/Source/Product/Thumbnail.php
+++ b/app/code/Magento/Catalog/Model/Config/Source/Product/Thumbnail.php
@@ -9,7 +9,7 @@
  * Catalog products per page on Grid mode source
  *
  */
-class Thumbnail implements \Magento\Framework\Option\ArrayInterface
+class Thumbnail implements \Magento\Framework\Data\OptionSourceInterface
 {
     const OPTION_USE_PARENT_IMAGE = 'parent';
 
diff --git a/app/code/Magento/Catalog/Model/Config/Source/TimeFormat.php b/app/code/Magento/Catalog/Model/Config/Source/TimeFormat.php
index e601028ffaf0d..b8eda56b5a181 100644
--- a/app/code/Magento/Catalog/Model/Config/Source/TimeFormat.php
+++ b/app/code/Magento/Catalog/Model/Config/Source/TimeFormat.php
@@ -5,7 +5,7 @@
  */
 namespace Magento\Catalog\Model\Config\Source;
 
-class TimeFormat implements \Magento\Framework\Option\ArrayInterface
+class TimeFormat implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * {@inheritdoc}
diff --git a/app/code/Magento/Catalog/Model/Config/Source/Watermark/Position.php b/app/code/Magento/Catalog/Model/Config/Source/Watermark/Position.php
index 83f4313724694..8f89fec9ab8e1 100644
--- a/app/code/Magento/Catalog/Model/Config/Source/Watermark/Position.php
+++ b/app/code/Magento/Catalog/Model/Config/Source/Watermark/Position.php
@@ -11,7 +11,7 @@
  */
 namespace Magento\Catalog\Model\Config\Source\Watermark;
 
-class Position implements \Magento\Framework\Option\ArrayInterface
+class Position implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Get available options
diff --git a/app/code/Magento/CatalogInventory/Model/Source/Backorders.php b/app/code/Magento/CatalogInventory/Model/Source/Backorders.php
index 59d359433c268..cbf1fce76ebdd 100644
--- a/app/code/Magento/CatalogInventory/Model/Source/Backorders.php
+++ b/app/code/Magento/CatalogInventory/Model/Source/Backorders.php
@@ -14,7 +14,7 @@
  * @link https://devdocs.magento.com/guides/v2.4/inventory/index.html
  * @link https://devdocs.magento.com/guides/v2.4/inventory/inventory-api-reference.html
  */
-class Backorders implements \Magento\Framework\Option\ArrayInterface
+class Backorders implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @return array
diff --git a/app/code/Magento/Checkout/Model/Adminhtml/BillingAddressDisplayOptions.php b/app/code/Magento/Checkout/Model/Adminhtml/BillingAddressDisplayOptions.php
index 7352177528515..b6e7f5f501b6c 100644
--- a/app/code/Magento/Checkout/Model/Adminhtml/BillingAddressDisplayOptions.php
+++ b/app/code/Magento/Checkout/Model/Adminhtml/BillingAddressDisplayOptions.php
@@ -5,13 +5,13 @@
  */
 namespace Magento\Checkout\Model\Adminhtml;
 
-use Magento\Framework\Option\ArrayInterface;
+use Magento\Framework\Data\OptionSourceInterface;
 
 /**
  * BillingAddressDisplayOptions gets list of configuration options for billing address displaying on
  * the Payment step on checkout
  */
-class BillingAddressDisplayOptions implements ArrayInterface
+class BillingAddressDisplayOptions implements OptionSourceInterface
 {
     /**
      * Return array of options for billing address displaying on checkout payment step
diff --git a/app/code/Magento/Checkout/Model/Config/Source/Cart/Summary.php b/app/code/Magento/Checkout/Model/Config/Source/Cart/Summary.php
index 1cb6056b521a9..96c1b3af8ab25 100644
--- a/app/code/Magento/Checkout/Model/Config/Source/Cart/Summary.php
+++ b/app/code/Magento/Checkout/Model/Config/Source/Cart/Summary.php
@@ -5,7 +5,7 @@
  */
 namespace Magento\Checkout\Model\Config\Source\Cart;
 
-class Summary implements \Magento\Framework\Option\ArrayInterface
+class Summary implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @return array
diff --git a/app/code/Magento/Cms/Model/Config/Source/Page.php b/app/code/Magento/Cms/Model/Config/Source/Page.php
index 9ac1208308126..7971884eeff32 100644
--- a/app/code/Magento/Cms/Model/Config/Source/Page.php
+++ b/app/code/Magento/Cms/Model/Config/Source/Page.php
@@ -10,7 +10,7 @@
 /**
  * Class Page
  */
-class Page implements \Magento\Framework\Option\ArrayInterface
+class Page implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var array
diff --git a/app/code/Magento/Cms/Model/Config/Source/Wysiwyg/Editor.php b/app/code/Magento/Cms/Model/Config/Source/Wysiwyg/Editor.php
index 2997a624a6c10..e7b961da79c28 100644
--- a/app/code/Magento/Cms/Model/Config/Source/Wysiwyg/Editor.php
+++ b/app/code/Magento/Cms/Model/Config/Source/Wysiwyg/Editor.php
@@ -8,7 +8,7 @@
 /**
  * Configuration source model for Wysiwyg toggling
  */
-class Editor implements \Magento\Framework\Option\ArrayInterface
+class Editor implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var array
diff --git a/app/code/Magento/Cms/Model/Config/Source/Wysiwyg/Enabled.php b/app/code/Magento/Cms/Model/Config/Source/Wysiwyg/Enabled.php
index 763b93f520527..3215d0c735674 100644
--- a/app/code/Magento/Cms/Model/Config/Source/Wysiwyg/Enabled.php
+++ b/app/code/Magento/Cms/Model/Config/Source/Wysiwyg/Enabled.php
@@ -8,7 +8,7 @@
 /**
  * Configuration source model for Wysiwyg toggling
  */
-class Enabled implements \Magento\Framework\Option\ArrayInterface
+class Enabled implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * {@inheritdoc}
diff --git a/app/code/Magento/Config/Model/Config/Source/Admin/Page.php b/app/code/Magento/Config/Model/Config/Source/Admin/Page.php
index a4ede7e8d1468..9d94ac6d06c1e 100644
--- a/app/code/Magento/Config/Model/Config/Source/Admin/Page.php
+++ b/app/code/Magento/Config/Model/Config/Source/Admin/Page.php
@@ -11,7 +11,7 @@
  * @api
  * @since 100.0.2
  */
-class Page implements \Magento\Framework\Option\ArrayInterface
+class Page implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Menu model
diff --git a/app/code/Magento/Config/Model/Config/Source/Date/Short.php b/app/code/Magento/Config/Model/Config/Source/Date/Short.php
index 90ac0d3d5fb35..677dc23b588fb 100644
--- a/app/code/Magento/Config/Model/Config/Source/Date/Short.php
+++ b/app/code/Magento/Config/Model/Config/Source/Date/Short.php
@@ -9,7 +9,7 @@
  * @api
  * @since 100.0.2
  */
-class Short implements \Magento\Framework\Option\ArrayInterface
+class Short implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @return array
diff --git a/app/code/Magento/Config/Model/Config/Source/Design/Robots.php b/app/code/Magento/Config/Model/Config/Source/Design/Robots.php
index 415e3389b3b4f..6d0c459f8eccb 100644
--- a/app/code/Magento/Config/Model/Config/Source/Design/Robots.php
+++ b/app/code/Magento/Config/Model/Config/Source/Design/Robots.php
@@ -9,7 +9,7 @@
  * @api
  * @since 100.0.2
  */
-class Robots implements \Magento\Framework\Option\ArrayInterface
+class Robots implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @return array
diff --git a/app/code/Magento/Config/Model/Config/Source/Dev/Dbautoup.php b/app/code/Magento/Config/Model/Config/Source/Dev/Dbautoup.php
index 868623b73ccbf..3649b9466fa4a 100644
--- a/app/code/Magento/Config/Model/Config/Source/Dev/Dbautoup.php
+++ b/app/code/Magento/Config/Model/Config/Source/Dev/Dbautoup.php
@@ -10,7 +10,7 @@
  * @api
  * @since 100.0.2
  */
-class Dbautoup implements \Magento\Framework\Option\ArrayInterface
+class Dbautoup implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @return array
diff --git a/app/code/Magento/Config/Model/Config/Source/Email/Identity.php b/app/code/Magento/Config/Model/Config/Source/Email/Identity.php
index 8cc7af6f619ac..ed393a7cbce3d 100644
--- a/app/code/Magento/Config/Model/Config/Source/Email/Identity.php
+++ b/app/code/Magento/Config/Model/Config/Source/Email/Identity.php
@@ -9,7 +9,7 @@
  * @api
  * @since 100.0.2
  */
-class Identity implements \Magento\Framework\Option\ArrayInterface
+class Identity implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Email Identity options
diff --git a/app/code/Magento/Config/Model/Config/Source/Email/Method.php b/app/code/Magento/Config/Model/Config/Source/Email/Method.php
index 4ce575b64d21b..6861d0c9e7898 100644
--- a/app/code/Magento/Config/Model/Config/Source/Email/Method.php
+++ b/app/code/Magento/Config/Model/Config/Source/Email/Method.php
@@ -15,7 +15,7 @@
  * @api
  * @since 100.0.2
  */
-class Method implements \Magento\Framework\Option\ArrayInterface
+class Method implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @return array
diff --git a/app/code/Magento/Config/Model/Config/Source/Email/Smtpauth.php b/app/code/Magento/Config/Model/Config/Source/Email/Smtpauth.php
index 1742d16e79c2e..3d2d09efe4508 100644
--- a/app/code/Magento/Config/Model/Config/Source/Email/Smtpauth.php
+++ b/app/code/Magento/Config/Model/Config/Source/Email/Smtpauth.php
@@ -9,7 +9,7 @@
  * @api
  * @since 100.0.2
  */
-class Smtpauth implements \Magento\Framework\Option\ArrayInterface
+class Smtpauth implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @return array
diff --git a/app/code/Magento/Config/Model/Config/Source/Email/Template.php b/app/code/Magento/Config/Model/Config/Source/Email/Template.php
index 182faa53e5288..dbb70b6e48697 100644
--- a/app/code/Magento/Config/Model/Config/Source/Email/Template.php
+++ b/app/code/Magento/Config/Model/Config/Source/Email/Template.php
@@ -11,7 +11,7 @@
  * @api
  * @since 100.0.2
  */
-class Template extends \Magento\Framework\DataObject implements \Magento\Framework\Option\ArrayInterface
+class Template extends \Magento\Framework\DataObject implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var \Magento\Framework\Registry
diff --git a/app/code/Magento/Config/Model/Config/Source/Enabledisable.php b/app/code/Magento/Config/Model/Config/Source/Enabledisable.php
index c015f41a659d9..7e784ecb7b8cf 100644
--- a/app/code/Magento/Config/Model/Config/Source/Enabledisable.php
+++ b/app/code/Magento/Config/Model/Config/Source/Enabledisable.php
@@ -10,7 +10,7 @@
  * @api
  * @since 100.0.2
  */
-class Enabledisable implements \Magento\Framework\Option\ArrayInterface
+class Enabledisable implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Value which equal Enable for Enabledisable dropdown.
diff --git a/app/code/Magento/Config/Model/Config/Source/Image/Adapter.php b/app/code/Magento/Config/Model/Config/Source/Image/Adapter.php
index cfd86c9e75fe1..7cc7a051c6f21 100644
--- a/app/code/Magento/Config/Model/Config/Source/Image/Adapter.php
+++ b/app/code/Magento/Config/Model/Config/Source/Image/Adapter.php
@@ -9,7 +9,7 @@
  * @api
  * @since 100.0.2
  */
-class Adapter implements \Magento\Framework\Option\ArrayInterface
+class Adapter implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var \Magento\Framework\Image\Adapter\ConfigInterface
diff --git a/app/code/Magento/Config/Model/Config/Source/Locale.php b/app/code/Magento/Config/Model/Config/Source/Locale.php
index 62357aa159fe2..b4f25dce87ba4 100644
--- a/app/code/Magento/Config/Model/Config/Source/Locale.php
+++ b/app/code/Magento/Config/Model/Config/Source/Locale.php
@@ -13,7 +13,7 @@
  * @api
  * @since 100.0.2
  */
-class Locale implements \Magento\Framework\Option\ArrayInterface
+class Locale implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var \Magento\Framework\Locale\ListsInterface
diff --git a/app/code/Magento/Config/Model/Config/Source/Locale/Country.php b/app/code/Magento/Config/Model/Config/Source/Locale/Country.php
index 0724352d11bd5..a9bba501616a7 100644
--- a/app/code/Magento/Config/Model/Config/Source/Locale/Country.php
+++ b/app/code/Magento/Config/Model/Config/Source/Locale/Country.php
@@ -13,7 +13,7 @@
  * @api
  * @since 100.0.2
  */
-class Country implements \Magento\Framework\Option\ArrayInterface
+class Country implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var \Magento\Framework\Locale\ListsInterface
diff --git a/app/code/Magento/Config/Model/Config/Source/Locale/Currency.php b/app/code/Magento/Config/Model/Config/Source/Locale/Currency.php
index 5beff0d043ade..639bc4ce7c06a 100644
--- a/app/code/Magento/Config/Model/Config/Source/Locale/Currency.php
+++ b/app/code/Magento/Config/Model/Config/Source/Locale/Currency.php
@@ -16,7 +16,7 @@
  * @api
  * @since 100.0.2
  */
-class Currency implements \Magento\Framework\Option\ArrayInterface
+class Currency implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var array
diff --git a/app/code/Magento/Config/Model/Config/Source/Locale/Currency/All.php b/app/code/Magento/Config/Model/Config/Source/Locale/Currency/All.php
index bac1064cc2d1e..b0723e1026585 100644
--- a/app/code/Magento/Config/Model/Config/Source/Locale/Currency/All.php
+++ b/app/code/Magento/Config/Model/Config/Source/Locale/Currency/All.php
@@ -9,7 +9,7 @@
  * @api
  * @since 100.0.2
  */
-class All implements \Magento\Framework\Option\ArrayInterface
+class All implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var array
diff --git a/app/code/Magento/Config/Model/Config/Source/Locale/Timezone.php b/app/code/Magento/Config/Model/Config/Source/Locale/Timezone.php
index 4813fd370e279..2d5abf3d37ed8 100644
--- a/app/code/Magento/Config/Model/Config/Source/Locale/Timezone.php
+++ b/app/code/Magento/Config/Model/Config/Source/Locale/Timezone.php
@@ -13,7 +13,7 @@
  * @api
  * @since 100.0.2
  */
-class Timezone implements \Magento\Framework\Option\ArrayInterface
+class Timezone implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Timezones that works incorrect with php_intl extension
diff --git a/app/code/Magento/Config/Model/Config/Source/Locale/Weekdaycodes.php b/app/code/Magento/Config/Model/Config/Source/Locale/Weekdaycodes.php
index 93375eaf1b67f..262cca1326301 100644
--- a/app/code/Magento/Config/Model/Config/Source/Locale/Weekdaycodes.php
+++ b/app/code/Magento/Config/Model/Config/Source/Locale/Weekdaycodes.php
@@ -13,7 +13,7 @@
  * @api
  * @since 100.0.2
  */
-class Weekdaycodes implements \Magento\Framework\Option\ArrayInterface
+class Weekdaycodes implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var \Magento\Framework\Locale\ListsInterface
diff --git a/app/code/Magento/Config/Model/Config/Source/Locale/Weekdays.php b/app/code/Magento/Config/Model/Config/Source/Locale/Weekdays.php
index 7e4507336d899..429086e064308 100644
--- a/app/code/Magento/Config/Model/Config/Source/Locale/Weekdays.php
+++ b/app/code/Magento/Config/Model/Config/Source/Locale/Weekdays.php
@@ -13,7 +13,7 @@
  * @api
  * @since 100.0.2
  */
-class Weekdays implements \Magento\Framework\Option\ArrayInterface
+class Weekdays implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var \Magento\Framework\Locale\ListsInterface
diff --git a/app/code/Magento/Config/Model/Config/Source/Nooptreq.php b/app/code/Magento/Config/Model/Config/Source/Nooptreq.php
index 1c9eb801dfec7..6a2f4937ad123 100644
--- a/app/code/Magento/Config/Model/Config/Source/Nooptreq.php
+++ b/app/code/Magento/Config/Model/Config/Source/Nooptreq.php
@@ -9,7 +9,7 @@
  * @api
  * @since 100.0.2
  */
-class Nooptreq implements \Magento\Framework\Option\ArrayInterface
+class Nooptreq implements \Magento\Framework\Data\OptionSourceInterface
 {
     const VALUE_NO = '';
     const VALUE_OPTIONAL = 'opt';
diff --git a/app/code/Magento/Config/Model/Config/Source/Reports/Scope.php b/app/code/Magento/Config/Model/Config/Source/Reports/Scope.php
index f52a1cb5d3f6b..d9738c3e42315 100644
--- a/app/code/Magento/Config/Model/Config/Source/Reports/Scope.php
+++ b/app/code/Magento/Config/Model/Config/Source/Reports/Scope.php
@@ -15,7 +15,7 @@
  * @api
  * @since 100.0.2
  */
-class Scope implements \Magento\Framework\Option\ArrayInterface
+class Scope implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Scope filter
diff --git a/app/code/Magento/Config/Model/Config/Source/Store.php b/app/code/Magento/Config/Model/Config/Source/Store.php
index 7ba46677a08c7..0874f6a91074f 100644
--- a/app/code/Magento/Config/Model/Config/Source/Store.php
+++ b/app/code/Magento/Config/Model/Config/Source/Store.php
@@ -9,7 +9,7 @@
  * @api
  * @since 100.0.2
  */
-class Store implements \Magento\Framework\Option\ArrayInterface
+class Store implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var array
diff --git a/app/code/Magento/Config/Model/Config/Source/Web/Protocol.php b/app/code/Magento/Config/Model/Config/Source/Web/Protocol.php
index d42d78e6417c4..68baf9447d670 100644
--- a/app/code/Magento/Config/Model/Config/Source/Web/Protocol.php
+++ b/app/code/Magento/Config/Model/Config/Source/Web/Protocol.php
@@ -9,7 +9,7 @@
  * @api
  * @since 100.0.2
  */
-class Protocol implements \Magento\Framework\Option\ArrayInterface
+class Protocol implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @return array
diff --git a/app/code/Magento/Config/Model/Config/Source/Web/Redirect.php b/app/code/Magento/Config/Model/Config/Source/Web/Redirect.php
index 100e9a12d15b6..d09c4413a006a 100644
--- a/app/code/Magento/Config/Model/Config/Source/Web/Redirect.php
+++ b/app/code/Magento/Config/Model/Config/Source/Web/Redirect.php
@@ -9,7 +9,7 @@
  * @api
  * @since 100.0.2
  */
-class Redirect implements \Magento\Framework\Option\ArrayInterface
+class Redirect implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @return array
diff --git a/app/code/Magento/Config/Model/Config/Source/Website.php b/app/code/Magento/Config/Model/Config/Source/Website.php
index 40583d93187e2..e65ca7af751ef 100644
--- a/app/code/Magento/Config/Model/Config/Source/Website.php
+++ b/app/code/Magento/Config/Model/Config/Source/Website.php
@@ -9,7 +9,7 @@
  * @api
  * @since 100.0.2
  */
-class Website implements \Magento\Framework\Option\ArrayInterface
+class Website implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var array
diff --git a/app/code/Magento/Config/Model/Config/Source/Website/OptionHash.php b/app/code/Magento/Config/Model/Config/Source/Website/OptionHash.php
index d9b2783cad84c..e101e67e17fa6 100644
--- a/app/code/Magento/Config/Model/Config/Source/Website/OptionHash.php
+++ b/app/code/Magento/Config/Model/Config/Source/Website/OptionHash.php
@@ -5,14 +5,14 @@
  */
 namespace Magento\Config\Model\Config\Source\Website;
 
-use Magento\Framework\Option\ArrayInterface;
+use Magento\Framework\Data\OptionSourceInterface;
 use Magento\Store\Model\System\Store;
 
 /**
  * @api
  * @since 100.0.2
  */
-class OptionHash implements ArrayInterface
+class OptionHash implements OptionSourceInterface
 {
     /**
      * System Store Model
diff --git a/app/code/Magento/Config/Model/Config/Source/Yesno.php b/app/code/Magento/Config/Model/Config/Source/Yesno.php
index bdc39ee3a6f20..8ae47a3d14ce7 100644
--- a/app/code/Magento/Config/Model/Config/Source/Yesno.php
+++ b/app/code/Magento/Config/Model/Config/Source/Yesno.php
@@ -9,7 +9,7 @@
  * @api
  * @since 100.0.2
  */
-class Yesno implements \Magento\Framework\Option\ArrayInterface
+class Yesno implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Options getter
diff --git a/app/code/Magento/Config/Model/Config/Source/Yesnocustom.php b/app/code/Magento/Config/Model/Config/Source/Yesnocustom.php
index 939d512f72f20..51a2ac48b6110 100644
--- a/app/code/Magento/Config/Model/Config/Source/Yesnocustom.php
+++ b/app/code/Magento/Config/Model/Config/Source/Yesnocustom.php
@@ -14,7 +14,7 @@
  * @api
  * @since 100.0.2
  */
-class Yesnocustom implements \Magento\Framework\Option\ArrayInterface
+class Yesnocustom implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Options getter
diff --git a/app/code/Magento/Config/Model/Config/SourceFactory.php b/app/code/Magento/Config/Model/Config/SourceFactory.php
index 52a136f697dc0..8d947750dfb5c 100644
--- a/app/code/Magento/Config/Model/Config/SourceFactory.php
+++ b/app/code/Magento/Config/Model/Config/SourceFactory.php
@@ -30,7 +30,7 @@ public function __construct(\Magento\Framework\ObjectManagerInterface $objectMan
      * Create backend model by name
      *
      * @param string $modelName
-     * @return \Magento\Framework\Option\ArrayInterface
+     * @return \Magento\Framework\Data\OptionSourceInterface
      */
     public function create($modelName)
     {
diff --git a/app/code/Magento/Config/Test/Unit/Model/Config/Structure/Element/FieldTest.php b/app/code/Magento/Config/Test/Unit/Model/Config/Structure/Element/FieldTest.php
index 6debd8b3a8a3e..efc8273c513dc 100644
--- a/app/code/Magento/Config/Test/Unit/Model/Config/Structure/Element/FieldTest.php
+++ b/app/code/Magento/Config/Test/Unit/Model/Config/Structure/Element/FieldTest.php
@@ -16,7 +16,7 @@
 use Magento\Config\Model\Config\Structure\Element\Field;
 use Magento\Framework\Data\Form\Element\Text;
 use Magento\Framework\DataObject;
-use Magento\Framework\Option\ArrayInterface;
+use Magento\Framework\Data\OptionSourceInterface;
 use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
 use Magento\Framework\View\Element\BlockFactory;
 use PHPUnit\Framework\MockObject\MockObject;
@@ -296,7 +296,7 @@ public function testGetOptionsWithConstantValOptions()
     public function testGetOptionsUsesOptionsInterfaceIfNoMethodIsProvided()
     {
         $this->_model->setData(['source_model' => 'Source_Model_Name'], 'scope');
-        $sourceModelMock = $this->getMockForAbstractClass(ArrayInterface::class);
+        $sourceModelMock = $this->getMockForAbstractClass(OptionSourceInterface::class);
         $this->_sourceFactoryMock->expects(
             $this->once()
         )->method(
diff --git a/app/code/Magento/Cron/Model/Config/Source/Frequency.php b/app/code/Magento/Cron/Model/Config/Source/Frequency.php
index 5b205a2690799..79020167c164e 100644
--- a/app/code/Magento/Cron/Model/Config/Source/Frequency.php
+++ b/app/code/Magento/Cron/Model/Config/Source/Frequency.php
@@ -5,7 +5,7 @@
  */
 namespace Magento\Cron\Model\Config\Source;
 
-class Frequency implements \Magento\Framework\Option\ArrayInterface
+class Frequency implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var array
diff --git a/app/code/Magento/Customer/Model/Config/Share.php b/app/code/Magento/Customer/Model/Config/Share.php
index e5dda28afa095..73d615c0ea029 100644
--- a/app/code/Magento/Customer/Model/Config/Share.php
+++ b/app/code/Magento/Customer/Model/Config/Share.php
@@ -10,7 +10,7 @@
  *
  * @author      Magento Core Team <core@magentocommerce.com>
  */
-class Share extends \Magento\Framework\App\Config\Value implements \Magento\Framework\Option\ArrayInterface
+class Share extends \Magento\Framework\App\Config\Value implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Xml config path to customers sharing scope value
diff --git a/app/code/Magento/Customer/Model/Config/Source/Address/Type.php b/app/code/Magento/Customer/Model/Config/Source/Address/Type.php
index 76ab43755ce86..5f61651ff28fd 100644
--- a/app/code/Magento/Customer/Model/Config/Source/Address/Type.php
+++ b/app/code/Magento/Customer/Model/Config/Source/Address/Type.php
@@ -11,7 +11,7 @@
  */
 namespace Magento\Customer\Model\Config\Source\Address;
 
-class Type implements \Magento\Framework\Option\ArrayInterface
+class Type implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Retrieve possible customer address types
diff --git a/app/code/Magento/Customer/Model/Config/Source/Group.php b/app/code/Magento/Customer/Model/Config/Source/Group.php
index 65b2e14019c40..052e2bbe5db01 100644
--- a/app/code/Magento/Customer/Model/Config/Source/Group.php
+++ b/app/code/Magento/Customer/Model/Config/Source/Group.php
@@ -9,7 +9,7 @@
 use Magento\Customer\Model\Customer\Attribute\Source\GroupSourceLoggedInOnlyInterface;
 use Magento\Framework\App\ObjectManager;
 
-class Group implements \Magento\Framework\Option\ArrayInterface
+class Group implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var array
diff --git a/app/code/Magento/Customer/Model/Config/Source/Group/Multiselect.php b/app/code/Magento/Customer/Model/Config/Source/Group/Multiselect.php
index 38f717b82ea35..b42f654454b4a 100644
--- a/app/code/Magento/Customer/Model/Config/Source/Group/Multiselect.php
+++ b/app/code/Magento/Customer/Model/Config/Source/Group/Multiselect.php
@@ -9,7 +9,7 @@
 use Magento\Customer\Api\GroupManagementInterface;
 use Magento\Framework\App\ObjectManager;
 
-class Multiselect implements \Magento\Framework\Option\ArrayInterface
+class Multiselect implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Customer groups options array
diff --git a/app/code/Magento/Developer/Model/Config/Source/WorkflowType.php b/app/code/Magento/Developer/Model/Config/Source/WorkflowType.php
index 813312b9ee807..439f1fc979818 100644
--- a/app/code/Magento/Developer/Model/Config/Source/WorkflowType.php
+++ b/app/code/Magento/Developer/Model/Config/Source/WorkflowType.php
@@ -5,7 +5,7 @@
  */
 namespace Magento\Developer\Model\Config\Source;
 
-use Magento\Framework\Option\ArrayInterface;
+use Magento\Framework\Data\OptionSourceInterface;
 
 /**
  * Class WorkflowType
@@ -13,7 +13,7 @@
  * @api
  * @since 100.0.2
  */
-class WorkflowType implements ArrayInterface
+class WorkflowType implements OptionSourceInterface
 {
     /**
      * Constant for
diff --git a/app/code/Magento/Developer/Test/Unit/Model/Config/Source/WorkflowTypeTest.php b/app/code/Magento/Developer/Test/Unit/Model/Config/Source/WorkflowTypeTest.php
index dd529119172ea..820b3c26876a6 100644
--- a/app/code/Magento/Developer/Test/Unit/Model/Config/Source/WorkflowTypeTest.php
+++ b/app/code/Magento/Developer/Test/Unit/Model/Config/Source/WorkflowTypeTest.php
@@ -6,7 +6,7 @@
 namespace Magento\Developer\Test\Unit\Model\Config\Source;
 
 use Magento\Developer\Model\Config\Source\WorkflowType;
-use Magento\Framework\Option\ArrayInterface;
+use Magento\Framework\Data\OptionSourceInterface;
 use Magento\Framework\Phrase;
 use PHPUnit\Framework\TestCase;
 
@@ -24,7 +24,7 @@ protected function setUp(): void
 
     public function testToOptionArray()
     {
-        $this->assertInstanceOf(ArrayInterface::class, $this->model);
+        $this->assertInstanceOf(OptionSourceInterface::class, $this->model);
         $this->assertCount(2, $this->model->toOptionArray());
         $option = current($this->model->toOptionArray());
 
diff --git a/app/code/Magento/Dhl/Model/Source/Contenttype.php b/app/code/Magento/Dhl/Model/Source/Contenttype.php
index 9c36ef1d54872..9a416c8a55d25 100644
--- a/app/code/Magento/Dhl/Model/Source/Contenttype.php
+++ b/app/code/Magento/Dhl/Model/Source/Contenttype.php
@@ -8,7 +8,7 @@
 /**
  * Source model for DHL Content Type
  */
-class Contenttype implements \Magento\Framework\Option\ArrayInterface
+class Contenttype implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * {@inheritdoc}
diff --git a/app/code/Magento/Directory/Model/Config/Source/Allregion.php b/app/code/Magento/Directory/Model/Config/Source/Allregion.php
index c86cfed33e92c..7fb4a70646f18 100644
--- a/app/code/Magento/Directory/Model/Config/Source/Allregion.php
+++ b/app/code/Magento/Directory/Model/Config/Source/Allregion.php
@@ -11,7 +11,7 @@
  * @api
  * @since 100.0.2
  */
-class Allregion implements \Magento\Framework\Option\ArrayInterface
+class Allregion implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var array
diff --git a/app/code/Magento/Directory/Model/Config/Source/Country.php b/app/code/Magento/Directory/Model/Config/Source/Country.php
index a38ac4b62e1ee..fdf91baec131f 100644
--- a/app/code/Magento/Directory/Model/Config/Source/Country.php
+++ b/app/code/Magento/Directory/Model/Config/Source/Country.php
@@ -11,7 +11,7 @@
  * @api
  * @since 100.0.2
  */
-class Country implements \Magento\Framework\Option\ArrayInterface
+class Country implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Countries
diff --git a/app/code/Magento/Directory/Model/Config/Source/Country/Full.php b/app/code/Magento/Directory/Model/Config/Source/Country/Full.php
index e3c4e17c4bd75..0b6b0be6b9c4a 100644
--- a/app/code/Magento/Directory/Model/Config/Source/Country/Full.php
+++ b/app/code/Magento/Directory/Model/Config/Source/Country/Full.php
@@ -13,7 +13,7 @@
  * @codeCoverageIgnore
  * @since 100.0.2
  */
-class Full extends \Magento\Directory\Model\Config\Source\Country implements \Magento\Framework\Option\ArrayInterface
+class Full extends \Magento\Directory\Model\Config\Source\Country implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @inheritdoc
diff --git a/app/code/Magento/Directory/Model/Config/Source/WeightUnit.php b/app/code/Magento/Directory/Model/Config/Source/WeightUnit.php
index c8c42b952042e..56a818daadde7 100644
--- a/app/code/Magento/Directory/Model/Config/Source/WeightUnit.php
+++ b/app/code/Magento/Directory/Model/Config/Source/WeightUnit.php
@@ -12,7 +12,7 @@
  * @api
  * @since 100.0.2
  */
-class WeightUnit implements \Magento\Framework\Option\ArrayInterface
+class WeightUnit implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @inheritdoc
diff --git a/app/code/Magento/Directory/Model/Currency/Import/Source/Service.php b/app/code/Magento/Directory/Model/Currency/Import/Source/Service.php
index 1babaeba3bf18..25bc21b4862b6 100644
--- a/app/code/Magento/Directory/Model/Currency/Import/Source/Service.php
+++ b/app/code/Magento/Directory/Model/Currency/Import/Source/Service.php
@@ -5,7 +5,7 @@
  */
 namespace Magento\Directory\Model\Currency\Import\Source;
 
-class Service implements \Magento\Framework\Option\ArrayInterface
+class Service implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var \Magento\Directory\Model\Currency\Import\Config
diff --git a/app/code/Magento/Downloadable/Model/System/Config/Source/Contentdisposition.php b/app/code/Magento/Downloadable/Model/System/Config/Source/Contentdisposition.php
index 10354f6df10ab..7a28c0157ccd3 100644
--- a/app/code/Magento/Downloadable/Model/System/Config/Source/Contentdisposition.php
+++ b/app/code/Magento/Downloadable/Model/System/Config/Source/Contentdisposition.php
@@ -10,7 +10,7 @@
  *
  * @author      Magento Core Team <core@magentocommerce.com>
  */
-class Contentdisposition implements \Magento\Framework\Option\ArrayInterface
+class Contentdisposition implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @return array
diff --git a/app/code/Magento/Downloadable/Model/System/Config/Source/Orderitemstatus.php b/app/code/Magento/Downloadable/Model/System/Config/Source/Orderitemstatus.php
index 176c4337d0ce9..f481c7a4c6be3 100644
--- a/app/code/Magento/Downloadable/Model/System/Config/Source/Orderitemstatus.php
+++ b/app/code/Magento/Downloadable/Model/System/Config/Source/Orderitemstatus.php
@@ -10,7 +10,7 @@
  *
  * @author      Magento Core Team <core@magentocommerce.com>
  */
-class Orderitemstatus implements \Magento\Framework\Option\ArrayInterface
+class Orderitemstatus implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @return array
diff --git a/app/code/Magento/Eav/Model/Adminhtml/System/Config/Source/Inputtype.php b/app/code/Magento/Eav/Model/Adminhtml/System/Config/Source/Inputtype.php
index aa3b00126eee1..3f377a48df7e3 100644
--- a/app/code/Magento/Eav/Model/Adminhtml/System/Config/Source/Inputtype.php
+++ b/app/code/Magento/Eav/Model/Adminhtml/System/Config/Source/Inputtype.php
@@ -5,7 +5,7 @@
  */
 namespace Magento\Eav\Model\Adminhtml\System\Config\Source;
 
-class Inputtype implements \Magento\Framework\Option\ArrayInterface
+class Inputtype implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var array
diff --git a/app/code/Magento/Eav/Model/Entity/Attribute/Source/AbstractSource.php b/app/code/Magento/Eav/Model/Entity/Attribute/Source/AbstractSource.php
index 23b6e8792100c..2249aee9459cd 100644
--- a/app/code/Magento/Eav/Model/Entity/Attribute/Source/AbstractSource.php
+++ b/app/code/Magento/Eav/Model/Entity/Attribute/Source/AbstractSource.php
@@ -16,7 +16,7 @@
  */
 abstract class AbstractSource implements
     \Magento\Eav\Model\Entity\Attribute\Source\SourceInterface,
-    \Magento\Framework\Option\ArrayInterface
+    \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Reference to the attribute instance
diff --git a/app/code/Magento/GoogleAdwords/Model/Config/Source/Language.php b/app/code/Magento/GoogleAdwords/Model/Config/Source/Language.php
index 34544229cdbf2..d5a8b1f18df96 100644
--- a/app/code/Magento/GoogleAdwords/Model/Config/Source/Language.php
+++ b/app/code/Magento/GoogleAdwords/Model/Config/Source/Language.php
@@ -12,7 +12,7 @@
  * @api
  * @since 100.0.2
  */
-class Language implements \Magento\Framework\Option\ArrayInterface
+class Language implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var \Magento\GoogleAdwords\Helper\Data
diff --git a/app/code/Magento/GoogleAdwords/Model/Config/Source/ValueType.php b/app/code/Magento/GoogleAdwords/Model/Config/Source/ValueType.php
index 22749b0002e45..e8fb6c892ef29 100644
--- a/app/code/Magento/GoogleAdwords/Model/Config/Source/ValueType.php
+++ b/app/code/Magento/GoogleAdwords/Model/Config/Source/ValueType.php
@@ -11,7 +11,7 @@
  * @api
  * @since 100.0.2
  */
-class ValueType implements \Magento\Framework\Option\ArrayInterface
+class ValueType implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Get conversation value type option
diff --git a/app/code/Magento/ImportExport/Model/Source/Export/Entity.php b/app/code/Magento/ImportExport/Model/Source/Export/Entity.php
index 2dacd658e1562..253bd1f3a34df 100644
--- a/app/code/Magento/ImportExport/Model/Source/Export/Entity.php
+++ b/app/code/Magento/ImportExport/Model/Source/Export/Entity.php
@@ -11,7 +11,7 @@
  * @api
  * @since 100.0.2
  */
-class Entity implements \Magento\Framework\Option\ArrayInterface
+class Entity implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var \Magento\ImportExport\Model\Export\ConfigInterface
diff --git a/app/code/Magento/ImportExport/Model/Source/Export/Format.php b/app/code/Magento/ImportExport/Model/Source/Export/Format.php
index 6888cdc8289fb..031b8eeac358e 100644
--- a/app/code/Magento/ImportExport/Model/Source/Export/Format.php
+++ b/app/code/Magento/ImportExport/Model/Source/Export/Format.php
@@ -11,7 +11,7 @@
  * @api
  * @since 100.0.2
  */
-class Format implements \Magento\Framework\Option\ArrayInterface
+class Format implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var \Magento\ImportExport\Model\Export\ConfigInterface
diff --git a/app/code/Magento/ImportExport/Model/Source/Import/AbstractBehavior.php b/app/code/Magento/ImportExport/Model/Source/Import/AbstractBehavior.php
index 9f83f10ad4d53..26188cfe649c7 100644
--- a/app/code/Magento/ImportExport/Model/Source/Import/AbstractBehavior.php
+++ b/app/code/Magento/ImportExport/Model/Source/Import/AbstractBehavior.php
@@ -11,7 +11,7 @@
  * @api
  * @since 100.0.2
  */
-abstract class AbstractBehavior implements \Magento\Framework\Option\ArrayInterface
+abstract class AbstractBehavior implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Get array of possible values
diff --git a/app/code/Magento/ImportExport/Model/Source/Import/Entity.php b/app/code/Magento/ImportExport/Model/Source/Import/Entity.php
index 8a85ec54c3870..9214b25f2eab9 100644
--- a/app/code/Magento/ImportExport/Model/Source/Import/Entity.php
+++ b/app/code/Magento/ImportExport/Model/Source/Import/Entity.php
@@ -11,7 +11,7 @@
  * @api
  * @since 100.0.2
  */
-class Entity implements \Magento\Framework\Option\ArrayInterface
+class Entity implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var \Magento\ImportExport\Model\Import\ConfigInterface
diff --git a/app/code/Magento/Integration/Model/Integration/Source/Status.php b/app/code/Magento/Integration/Model/Integration/Source/Status.php
index e762db23c6de7..4f9067637b2e5 100644
--- a/app/code/Magento/Integration/Model/Integration/Source/Status.php
+++ b/app/code/Magento/Integration/Model/Integration/Source/Status.php
@@ -8,7 +8,7 @@
 /**
  * Integration status options.
  */
-class Status implements \Magento\Framework\Option\ArrayInterface
+class Status implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Retrieve status options array.
diff --git a/app/code/Magento/MediaStorage/Model/Config/Source/Storage/Media/Database.php b/app/code/Magento/MediaStorage/Model/Config/Source/Storage/Media/Database.php
index 83134c2ac00ef..4c2acd0f67f7a 100644
--- a/app/code/Magento/MediaStorage/Model/Config/Source/Storage/Media/Database.php
+++ b/app/code/Magento/MediaStorage/Model/Config/Source/Storage/Media/Database.php
@@ -12,7 +12,7 @@
 use Magento\Framework\App\DeploymentConfig;
 use Magento\Framework\Config\ConfigOptionsListConstants;
 
-class Database implements \Magento\Framework\Option\ArrayInterface
+class Database implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var DeploymentConfig
diff --git a/app/code/Magento/MediaStorage/Model/Config/Source/Storage/Media/Storage.php b/app/code/Magento/MediaStorage/Model/Config/Source/Storage/Media/Storage.php
index fb171831407e2..2b5aff93b440d 100644
--- a/app/code/Magento/MediaStorage/Model/Config/Source/Storage/Media/Storage.php
+++ b/app/code/Magento/MediaStorage/Model/Config/Source/Storage/Media/Storage.php
@@ -9,7 +9,7 @@
  */
 namespace Magento\MediaStorage\Model\Config\Source\Storage\Media;
 
-class Storage implements \Magento\Framework\Option\ArrayInterface
+class Storage implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Options getter
diff --git a/app/code/Magento/Newsletter/Block/Subscribe/Grid/Options/GroupOptionHash.php b/app/code/Magento/Newsletter/Block/Subscribe/Grid/Options/GroupOptionHash.php
index 0ff52313f4efd..89ee5543d4b41 100644
--- a/app/code/Magento/Newsletter/Block/Subscribe/Grid/Options/GroupOptionHash.php
+++ b/app/code/Magento/Newsletter/Block/Subscribe/Grid/Options/GroupOptionHash.php
@@ -7,7 +7,7 @@
  */
 namespace Magento\Newsletter\Block\Subscribe\Grid\Options;
 
-class GroupOptionHash implements \Magento\Framework\Option\ArrayInterface
+class GroupOptionHash implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * System Store Model
diff --git a/app/code/Magento/Newsletter/Block/Subscribe/Grid/Options/StoreOptionHash.php b/app/code/Magento/Newsletter/Block/Subscribe/Grid/Options/StoreOptionHash.php
index a713a049a0e7d..c6d3cd38b7e6d 100644
--- a/app/code/Magento/Newsletter/Block/Subscribe/Grid/Options/StoreOptionHash.php
+++ b/app/code/Magento/Newsletter/Block/Subscribe/Grid/Options/StoreOptionHash.php
@@ -7,7 +7,7 @@
  */
 namespace Magento\Newsletter\Block\Subscribe\Grid\Options;
 
-class StoreOptionHash implements \Magento\Framework\Option\ArrayInterface
+class StoreOptionHash implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * System Store Model
diff --git a/app/code/Magento/Newsletter/Model/Queue/Options/Status.php b/app/code/Magento/Newsletter/Model/Queue/Options/Status.php
index 72a7986b6ae8f..8e64c97d26d23 100644
--- a/app/code/Magento/Newsletter/Model/Queue/Options/Status.php
+++ b/app/code/Magento/Newsletter/Model/Queue/Options/Status.php
@@ -11,7 +11,7 @@
  */
 namespace Magento\Newsletter\Model\Queue\Options;
 
-class Status implements \Magento\Framework\Option\ArrayInterface
+class Status implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Return statuses option array
diff --git a/app/code/Magento/OfflineShipping/Model/Config/Source/Flatrate.php b/app/code/Magento/OfflineShipping/Model/Config/Source/Flatrate.php
index ad549cb398cf7..318ed7b9275f4 100644
--- a/app/code/Magento/OfflineShipping/Model/Config/Source/Flatrate.php
+++ b/app/code/Magento/OfflineShipping/Model/Config/Source/Flatrate.php
@@ -9,7 +9,7 @@
  * @api
  * @since 100.0.2
  */
-class Flatrate implements \Magento\Framework\Option\ArrayInterface
+class Flatrate implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * {@inheritdoc}
diff --git a/app/code/Magento/OfflineShipping/Model/Config/Source/Tablerate.php b/app/code/Magento/OfflineShipping/Model/Config/Source/Tablerate.php
index 4771596fb06d9..094489edf4729 100644
--- a/app/code/Magento/OfflineShipping/Model/Config/Source/Tablerate.php
+++ b/app/code/Magento/OfflineShipping/Model/Config/Source/Tablerate.php
@@ -9,7 +9,7 @@
  * @api
  * @since 100.0.2
  */
-class Tablerate implements \Magento\Framework\Option\ArrayInterface
+class Tablerate implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var \Magento\OfflineShipping\Model\Carrier\Tablerate
diff --git a/app/code/Magento/PageCache/Model/System/Config/Source/Application.php b/app/code/Magento/PageCache/Model/System/Config/Source/Application.php
index d44daa7dec95d..247b86f313d30 100644
--- a/app/code/Magento/PageCache/Model/System/Config/Source/Application.php
+++ b/app/code/Magento/PageCache/Model/System/Config/Source/Application.php
@@ -9,13 +9,13 @@
  */
 namespace Magento\PageCache\Model\System\Config\Source;
 
-use Magento\Framework\Option\ArrayInterface;
+use Magento\Framework\Data\OptionSourceInterface;
 use Magento\PageCache\Model\Config;
 
 /**
  * Class Application
  */
-class Application implements ArrayInterface
+class Application implements OptionSourceInterface
 {
     /**
      * Options getter
diff --git a/app/code/Magento/Payment/Model/Config/Source/Allmethods.php b/app/code/Magento/Payment/Model/Config/Source/Allmethods.php
index 4dbf7acd158e2..07a459fbd1391 100644
--- a/app/code/Magento/Payment/Model/Config/Source/Allmethods.php
+++ b/app/code/Magento/Payment/Model/Config/Source/Allmethods.php
@@ -5,7 +5,7 @@
  */
 namespace Magento\Payment\Model\Config\Source;
 
-class Allmethods implements \Magento\Framework\Option\ArrayInterface
+class Allmethods implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Payment data
diff --git a/app/code/Magento/Payment/Model/Config/Source/Allspecificcountries.php b/app/code/Magento/Payment/Model/Config/Source/Allspecificcountries.php
index 0a3850745d3aa..1e69d3a696fb7 100644
--- a/app/code/Magento/Payment/Model/Config/Source/Allspecificcountries.php
+++ b/app/code/Magento/Payment/Model/Config/Source/Allspecificcountries.php
@@ -9,7 +9,7 @@
  * @api
  * @since 100.0.2
  */
-class Allspecificcountries implements \Magento\Framework\Option\ArrayInterface
+class Allspecificcountries implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * {@inheritdoc}
diff --git a/app/code/Magento/Payment/Model/Config/Source/Cctype.php b/app/code/Magento/Payment/Model/Config/Source/Cctype.php
index d97f549984fdf..6a41b51f783be 100644
--- a/app/code/Magento/Payment/Model/Config/Source/Cctype.php
+++ b/app/code/Magento/Payment/Model/Config/Source/Cctype.php
@@ -5,7 +5,7 @@
  */
 namespace Magento\Payment\Model\Config\Source;
 
-class Cctype implements \Magento\Framework\Option\ArrayInterface
+class Cctype implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Payment config model
diff --git a/app/code/Magento/Payment/Model/ResourceModel/Grid/GroupList.php b/app/code/Magento/Payment/Model/ResourceModel/Grid/GroupList.php
index 7505643badf98..30e870671c974 100644
--- a/app/code/Magento/Payment/Model/ResourceModel/Grid/GroupList.php
+++ b/app/code/Magento/Payment/Model/ResourceModel/Grid/GroupList.php
@@ -8,7 +8,7 @@
 /**
  * Sales transaction types option array
  */
-class GroupList implements \Magento\Framework\Option\ArrayInterface
+class GroupList implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Payment data
diff --git a/app/code/Magento/Payment/Model/ResourceModel/Grid/TypeList.php b/app/code/Magento/Payment/Model/ResourceModel/Grid/TypeList.php
index 170db877a47b1..2cb812bab035b 100644
--- a/app/code/Magento/Payment/Model/ResourceModel/Grid/TypeList.php
+++ b/app/code/Magento/Payment/Model/ResourceModel/Grid/TypeList.php
@@ -8,7 +8,7 @@
 /**
  * Sales transaction payment method types option array
  */
-class TypeList implements \Magento\Framework\Option\ArrayInterface
+class TypeList implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Payment data
diff --git a/app/code/Magento/Payment/Model/Source/Cctype.php b/app/code/Magento/Payment/Model/Source/Cctype.php
index 7929e147e05b9..f75da4c7747b8 100644
--- a/app/code/Magento/Payment/Model/Source/Cctype.php
+++ b/app/code/Magento/Payment/Model/Source/Cctype.php
@@ -13,7 +13,7 @@
  * @api
  * @since 100.0.2
  */
-class Cctype implements \Magento\Framework\Option\ArrayInterface
+class Cctype implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Allowed CC types
diff --git a/app/code/Magento/Payment/Model/Source/Invoice.php b/app/code/Magento/Payment/Model/Source/Invoice.php
index 1c8551aace312..cabdbc54c1a30 100644
--- a/app/code/Magento/Payment/Model/Source/Invoice.php
+++ b/app/code/Magento/Payment/Model/Source/Invoice.php
@@ -13,7 +13,7 @@
  * @api
  * @since 100.0.2
  */
-class Invoice implements \Magento\Framework\Option\ArrayInterface
+class Invoice implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * {@inheritdoc}
diff --git a/app/code/Magento/Paypal/Model/ResourceModel/Report/Settlement/Options/TransactionEvents.php b/app/code/Magento/Paypal/Model/ResourceModel/Report/Settlement/Options/TransactionEvents.php
index ad47e7b84fe20..7cf9520cd5417 100644
--- a/app/code/Magento/Paypal/Model/ResourceModel/Report/Settlement/Options/TransactionEvents.php
+++ b/app/code/Magento/Paypal/Model/ResourceModel/Report/Settlement/Options/TransactionEvents.php
@@ -10,7 +10,7 @@
  *
  * @author      Magento Core Team <core@magentocommerce.com>
  */
-class TransactionEvents implements \Magento\Framework\Option\ArrayInterface
+class TransactionEvents implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var \Magento\Paypal\Model\Report\Settlement\Row
diff --git a/app/code/Magento/Paypal/Model/System/Config/Source/BuyerCountry.php b/app/code/Magento/Paypal/Model/System/Config/Source/BuyerCountry.php
index dc0c1183bc25f..15edbb749ae6f 100644
--- a/app/code/Magento/Paypal/Model/System/Config/Source/BuyerCountry.php
+++ b/app/code/Magento/Paypal/Model/System/Config/Source/BuyerCountry.php
@@ -8,7 +8,7 @@
 /**
  * Source model for buyer countries supported by PayPal
  */
-class BuyerCountry implements \Magento\Framework\Option\ArrayInterface
+class BuyerCountry implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var \Magento\Paypal\Model\ConfigFactory
diff --git a/app/code/Magento/Paypal/Model/System/Config/Source/FetchingSchedule.php b/app/code/Magento/Paypal/Model/System/Config/Source/FetchingSchedule.php
index b9f66926a8459..40ccfe66c00d1 100644
--- a/app/code/Magento/Paypal/Model/System/Config/Source/FetchingSchedule.php
+++ b/app/code/Magento/Paypal/Model/System/Config/Source/FetchingSchedule.php
@@ -8,7 +8,7 @@
 /**
  * Source model for available settlement report fetching intervals
  */
-class FetchingSchedule implements \Magento\Framework\Option\ArrayInterface
+class FetchingSchedule implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * {@inheritdoc}
diff --git a/app/code/Magento/Paypal/Model/System/Config/Source/Logo.php b/app/code/Magento/Paypal/Model/System/Config/Source/Logo.php
index 2377a8bf3fde4..86ebff600f298 100644
--- a/app/code/Magento/Paypal/Model/System/Config/Source/Logo.php
+++ b/app/code/Magento/Paypal/Model/System/Config/Source/Logo.php
@@ -8,7 +8,7 @@
 /**
  * Source model for available logo types
  */
-class Logo implements \Magento\Framework\Option\ArrayInterface
+class Logo implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var \Magento\Paypal\Model\ConfigFactory
diff --git a/app/code/Magento/Paypal/Model/System/Config/Source/MerchantCountry.php b/app/code/Magento/Paypal/Model/System/Config/Source/MerchantCountry.php
index b4efcd14a81c8..8dfa6ecf47491 100644
--- a/app/code/Magento/Paypal/Model/System/Config/Source/MerchantCountry.php
+++ b/app/code/Magento/Paypal/Model/System/Config/Source/MerchantCountry.php
@@ -8,7 +8,7 @@
 /**
  * Source model for merchant countries supported by PayPal
  */
-class MerchantCountry implements \Magento\Framework\Option\ArrayInterface
+class MerchantCountry implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var \Magento\Paypal\Model\ConfigFactory
diff --git a/app/code/Magento/Paypal/Model/System/Config/Source/PaymentActions.php b/app/code/Magento/Paypal/Model/System/Config/Source/PaymentActions.php
index 1111612a6cc9b..24d51695d1d15 100644
--- a/app/code/Magento/Paypal/Model/System/Config/Source/PaymentActions.php
+++ b/app/code/Magento/Paypal/Model/System/Config/Source/PaymentActions.php
@@ -8,7 +8,7 @@
 /**
  * Source model for available payment actions
  */
-class PaymentActions implements \Magento\Framework\Option\ArrayInterface
+class PaymentActions implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var \Magento\Paypal\Model\ConfigFactory
diff --git a/app/code/Magento/Paypal/Model/System/Config/Source/PaymentActions/Express.php b/app/code/Magento/Paypal/Model/System/Config/Source/PaymentActions/Express.php
index 47cfaf74af2ed..00cbc66017bb6 100644
--- a/app/code/Magento/Paypal/Model/System/Config/Source/PaymentActions/Express.php
+++ b/app/code/Magento/Paypal/Model/System/Config/Source/PaymentActions/Express.php
@@ -8,7 +8,7 @@
 /**
  * Source model for available paypal express payment actions
  */
-class Express implements \Magento\Framework\Option\ArrayInterface
+class Express implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var \Magento\Paypal\Model\ConfigFactory
diff --git a/app/code/Magento/Paypal/Model/System/Config/Source/RequireBillingAddress.php b/app/code/Magento/Paypal/Model/System/Config/Source/RequireBillingAddress.php
index 2fc86f8e6ef58..093a6f97bbbe4 100644
--- a/app/code/Magento/Paypal/Model/System/Config/Source/RequireBillingAddress.php
+++ b/app/code/Magento/Paypal/Model/System/Config/Source/RequireBillingAddress.php
@@ -8,7 +8,7 @@
 /**
  * Source model for Require Billing Address
  */
-class RequireBillingAddress implements \Magento\Framework\Option\ArrayInterface
+class RequireBillingAddress implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var \Magento\Paypal\Model\ConfigFactory
diff --git a/app/code/Magento/Paypal/Model/System/Config/Source/UrlMethod.php b/app/code/Magento/Paypal/Model/System/Config/Source/UrlMethod.php
index 9769b9b1bce21..7842a8d5fbc67 100644
--- a/app/code/Magento/Paypal/Model/System/Config/Source/UrlMethod.php
+++ b/app/code/Magento/Paypal/Model/System/Config/Source/UrlMethod.php
@@ -8,7 +8,7 @@
 /**
  * Source model for url method: GET/POST
  */
-class UrlMethod implements \Magento\Framework\Option\ArrayInterface
+class UrlMethod implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * {@inheritdoc}
diff --git a/app/code/Magento/Paypal/Model/System/Config/Source/Yesnoshortcut.php b/app/code/Magento/Paypal/Model/System/Config/Source/Yesnoshortcut.php
index 638f3d05ab114..10f07f1f4dccd 100644
--- a/app/code/Magento/Paypal/Model/System/Config/Source/Yesnoshortcut.php
+++ b/app/code/Magento/Paypal/Model/System/Config/Source/Yesnoshortcut.php
@@ -8,7 +8,7 @@
 /**
  * Used in creating options for Yes|No config value selection
  */
-class Yesnoshortcut implements \Magento\Framework\Option\ArrayInterface
+class Yesnoshortcut implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Options getter
diff --git a/app/code/Magento/Sales/Model/Config/Source/Order/Status.php b/app/code/Magento/Sales/Model/Config/Source/Order/Status.php
index 80daf4707279b..145dbd4965fb8 100644
--- a/app/code/Magento/Sales/Model/Config/Source/Order/Status.php
+++ b/app/code/Magento/Sales/Model/Config/Source/Order/Status.php
@@ -14,7 +14,7 @@
  * @api
  * @since 100.0.2
  */
-class Status implements \Magento\Framework\Option\ArrayInterface
+class Status implements \Magento\Framework\Data\OptionSourceInterface
 {
     const UNDEFINED_OPTION_LABEL = '-- Please Select --';
 
diff --git a/app/code/Magento/Sales/Model/ResourceModel/Order/Creditmemo/Grid/StatusList.php b/app/code/Magento/Sales/Model/ResourceModel/Order/Creditmemo/Grid/StatusList.php
index 858a0d52b44a7..2bbe701f7a84b 100644
--- a/app/code/Magento/Sales/Model/ResourceModel/Order/Creditmemo/Grid/StatusList.php
+++ b/app/code/Magento/Sales/Model/ResourceModel/Order/Creditmemo/Grid/StatusList.php
@@ -8,7 +8,7 @@
 /**
  * Sales creditmemo statuses option array
  */
-class StatusList implements \Magento\Framework\Option\ArrayInterface
+class StatusList implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var \Magento\Sales\Api\CreditmemoRepositoryInterface
diff --git a/app/code/Magento/Sales/Model/ResourceModel/Order/Invoice/Grid/StatusList.php b/app/code/Magento/Sales/Model/ResourceModel/Order/Invoice/Grid/StatusList.php
index f6160bd243326..2ebc8762cb8a4 100644
--- a/app/code/Magento/Sales/Model/ResourceModel/Order/Invoice/Grid/StatusList.php
+++ b/app/code/Magento/Sales/Model/ResourceModel/Order/Invoice/Grid/StatusList.php
@@ -8,7 +8,7 @@
 /**
  * Sales invoices statuses option array
  */
-class StatusList implements \Magento\Framework\Option\ArrayInterface
+class StatusList implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var \Magento\Sales\Api\InvoiceRepositoryInterface
diff --git a/app/code/Magento/Sales/Model/ResourceModel/Transaction/Grid/TypeList.php b/app/code/Magento/Sales/Model/ResourceModel/Transaction/Grid/TypeList.php
index f9dc1d023f5a2..43ba073f382ec 100644
--- a/app/code/Magento/Sales/Model/ResourceModel/Transaction/Grid/TypeList.php
+++ b/app/code/Magento/Sales/Model/ResourceModel/Transaction/Grid/TypeList.php
@@ -10,7 +10,7 @@
 /**
  * Sales transaction types option array
  */
-class TypeList implements \Magento\Framework\Option\ArrayInterface
+class TypeList implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var TransactionRepositoryInterface
diff --git a/app/code/Magento/SalesRule/Model/System/Config/Source/Coupon/Format.php b/app/code/Magento/SalesRule/Model/System/Config/Source/Coupon/Format.php
index 04e9b525f5274..9d50481d81471 100644
--- a/app/code/Magento/SalesRule/Model/System/Config/Source/Coupon/Format.php
+++ b/app/code/Magento/SalesRule/Model/System/Config/Source/Coupon/Format.php
@@ -10,7 +10,7 @@
  *
  * @author      Magento Core Team <core@magentocommerce.com>
  */
-class Format implements \Magento\Framework\Option\ArrayInterface
+class Format implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Sales rule coupon
diff --git a/app/code/Magento/Search/Model/Adminhtml/System/Config/Source/Engine.php b/app/code/Magento/Search/Model/Adminhtml/System/Config/Source/Engine.php
index a57e99ae1b8de..a707986af3ae9 100644
--- a/app/code/Magento/Search/Model/Adminhtml/System/Config/Source/Engine.php
+++ b/app/code/Magento/Search/Model/Adminhtml/System/Config/Source/Engine.php
@@ -11,7 +11,7 @@
  * @api
  * @since 100.0.2
  */
-class Engine implements \Magento\Framework\Option\ArrayInterface
+class Engine implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Engines list
diff --git a/app/code/Magento/Security/Model/Config/Source/ResetMethod.php b/app/code/Magento/Security/Model/Config/Source/ResetMethod.php
index b925262747fd0..f7c35f81e67c0 100644
--- a/app/code/Magento/Security/Model/Config/Source/ResetMethod.php
+++ b/app/code/Magento/Security/Model/Config/Source/ResetMethod.php
@@ -10,7 +10,7 @@
  * Source model for setting "Limit Password Reset Requests Method"
  *
  */
-class ResetMethod implements \Magento\Framework\Option\ArrayInterface
+class ResetMethod implements \Magento\Framework\Data\OptionSourceInterface
 {
     const OPTION_BY_IP_AND_EMAIL = 1;
     const OPTION_BY_IP = 2;
diff --git a/app/code/Magento/SendFriend/Model/Source/Checktype.php b/app/code/Magento/SendFriend/Model/Source/Checktype.php
index 231e5944beb9a..e152ade135bd0 100644
--- a/app/code/Magento/SendFriend/Model/Source/Checktype.php
+++ b/app/code/Magento/SendFriend/Model/Source/Checktype.php
@@ -11,7 +11,7 @@
  */
 namespace Magento\SendFriend\Model\Source;
 
-class Checktype implements \Magento\Framework\Option\ArrayInterface
+class Checktype implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Retrieve Check Type Option array
diff --git a/app/code/Magento/Shipping/Model/Config/Source/Allmethods.php b/app/code/Magento/Shipping/Model/Config/Source/Allmethods.php
index f64c24856eba5..397f03ce67843 100644
--- a/app/code/Magento/Shipping/Model/Config/Source/Allmethods.php
+++ b/app/code/Magento/Shipping/Model/Config/Source/Allmethods.php
@@ -8,7 +8,7 @@
 /**
  * @inheritdoc
  */
-class Allmethods implements \Magento\Framework\Option\ArrayInterface
+class Allmethods implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Core store config
diff --git a/app/code/Magento/Shipping/Model/Config/Source/Allspecificcountries.php b/app/code/Magento/Shipping/Model/Config/Source/Allspecificcountries.php
index ebd84c51e0ee5..f5957576ec824 100644
--- a/app/code/Magento/Shipping/Model/Config/Source/Allspecificcountries.php
+++ b/app/code/Magento/Shipping/Model/Config/Source/Allspecificcountries.php
@@ -5,7 +5,7 @@
  */
 namespace Magento\Shipping\Model\Config\Source;
 
-class Allspecificcountries implements \Magento\Framework\Option\ArrayInterface
+class Allspecificcountries implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * {@inheritdoc}
diff --git a/app/code/Magento/Shipping/Model/Source/HandlingAction.php b/app/code/Magento/Shipping/Model/Source/HandlingAction.php
index f56cce631b0ef..845d924706c14 100644
--- a/app/code/Magento/Shipping/Model/Source/HandlingAction.php
+++ b/app/code/Magento/Shipping/Model/Source/HandlingAction.php
@@ -5,7 +5,7 @@
  */
 namespace Magento\Shipping\Model\Source;
 
-class HandlingAction implements \Magento\Framework\Option\ArrayInterface
+class HandlingAction implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * {@inheritdoc}
diff --git a/app/code/Magento/Shipping/Model/Source/HandlingType.php b/app/code/Magento/Shipping/Model/Source/HandlingType.php
index 8d876338654fd..eb78c1dac8a4e 100644
--- a/app/code/Magento/Shipping/Model/Source/HandlingType.php
+++ b/app/code/Magento/Shipping/Model/Source/HandlingType.php
@@ -5,7 +5,7 @@
  */
 namespace Magento\Shipping\Model\Source;
 
-class HandlingType implements \Magento\Framework\Option\ArrayInterface
+class HandlingType implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * {@inheritdoc}
diff --git a/app/code/Magento/Sitemap/Model/Config/Source/Frequency.php b/app/code/Magento/Sitemap/Model/Config/Source/Frequency.php
index 87ce87189229c..4ad99448f386b 100644
--- a/app/code/Magento/Sitemap/Model/Config/Source/Frequency.php
+++ b/app/code/Magento/Sitemap/Model/Config/Source/Frequency.php
@@ -5,7 +5,7 @@
  */
 namespace Magento\Sitemap\Model\Config\Source;
 
-class Frequency implements \Magento\Framework\Option\ArrayInterface
+class Frequency implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * {@inheritdoc}
diff --git a/app/code/Magento/Sitemap/Model/Source/Product/Image/IncludeImage.php b/app/code/Magento/Sitemap/Model/Source/Product/Image/IncludeImage.php
index 9dd905d63d9e2..e8f5bee10e0dd 100644
--- a/app/code/Magento/Sitemap/Model/Source/Product/Image/IncludeImage.php
+++ b/app/code/Magento/Sitemap/Model/Source/Product/Image/IncludeImage.php
@@ -14,7 +14,7 @@
  * @api
  * @since 100.0.2
  */
-class IncludeImage implements \Magento\Framework\Option\ArrayInterface
+class IncludeImage implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**#@+
      * Add Images into Sitemap possible values
diff --git a/app/code/Magento/Tax/Model/Config/Source/Apply/On.php b/app/code/Magento/Tax/Model/Config/Source/Apply/On.php
index 3068574dbc899..f1c8d6b9d0291 100644
--- a/app/code/Magento/Tax/Model/Config/Source/Apply/On.php
+++ b/app/code/Magento/Tax/Model/Config/Source/Apply/On.php
@@ -5,7 +5,7 @@
  */
 namespace Magento\Tax\Model\Config\Source\Apply;
 
-class On implements \Magento\Framework\Option\ArrayInterface
+class On implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @return array
diff --git a/app/code/Magento/Tax/Model/Config/Source/Basedon.php b/app/code/Magento/Tax/Model/Config/Source/Basedon.php
index 0db022775448d..dbb1c410b1f8d 100644
--- a/app/code/Magento/Tax/Model/Config/Source/Basedon.php
+++ b/app/code/Magento/Tax/Model/Config/Source/Basedon.php
@@ -5,7 +5,7 @@
  */
 namespace Magento\Tax\Model\Config\Source;
 
-class Basedon implements \Magento\Framework\Option\ArrayInterface
+class Basedon implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @return array
diff --git a/app/code/Magento/Tax/Model/Config/Source/Catalog.php b/app/code/Magento/Tax/Model/Config/Source/Catalog.php
index f46089646579b..6867554cdb632 100644
--- a/app/code/Magento/Tax/Model/Config/Source/Catalog.php
+++ b/app/code/Magento/Tax/Model/Config/Source/Catalog.php
@@ -5,7 +5,7 @@
  */
 namespace Magento\Tax\Model\Config\Source;
 
-class Catalog implements \Magento\Framework\Option\ArrayInterface
+class Catalog implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @return array
diff --git a/app/code/Magento/Tax/Model/System/Config/Source/Algorithm.php b/app/code/Magento/Tax/Model/System/Config/Source/Algorithm.php
index 550823588a86b..bb9f92c77bdbf 100644
--- a/app/code/Magento/Tax/Model/System/Config/Source/Algorithm.php
+++ b/app/code/Magento/Tax/Model/System/Config/Source/Algorithm.php
@@ -5,7 +5,7 @@
  */
 namespace Magento\Tax\Model\System\Config\Source;
 
-class Algorithm implements \Magento\Framework\Option\ArrayInterface
+class Algorithm implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var array
diff --git a/app/code/Magento/Tax/Model/System/Config/Source/Apply.php b/app/code/Magento/Tax/Model/System/Config/Source/Apply.php
index a82637a9da419..cafec1419dc30 100644
--- a/app/code/Magento/Tax/Model/System/Config/Source/Apply.php
+++ b/app/code/Magento/Tax/Model/System/Config/Source/Apply.php
@@ -5,7 +5,7 @@
  */
 namespace Magento\Tax\Model\System\Config\Source;
 
-class Apply implements \Magento\Framework\Option\ArrayInterface
+class Apply implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var array
diff --git a/app/code/Magento/Tax/Model/System/Config/Source/PriceType.php b/app/code/Magento/Tax/Model/System/Config/Source/PriceType.php
index 480a6d0a94e9b..6ffd004a49de6 100644
--- a/app/code/Magento/Tax/Model/System/Config/Source/PriceType.php
+++ b/app/code/Magento/Tax/Model/System/Config/Source/PriceType.php
@@ -5,7 +5,7 @@
  */
 namespace Magento\Tax\Model\System\Config\Source;
 
-class PriceType implements \Magento\Framework\Option\ArrayInterface
+class PriceType implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var array
diff --git a/app/code/Magento/Tax/Model/System/Config/Source/Tax/Display/Type.php b/app/code/Magento/Tax/Model/System/Config/Source/Tax/Display/Type.php
index 6897a7d9e75e3..7d53f8b29454c 100644
--- a/app/code/Magento/Tax/Model/System/Config/Source/Tax/Display/Type.php
+++ b/app/code/Magento/Tax/Model/System/Config/Source/Tax/Display/Type.php
@@ -11,7 +11,7 @@
  */
 namespace Magento\Tax\Model\System\Config\Source\Tax\Display;
 
-class Type implements \Magento\Framework\Option\ArrayInterface
+class Type implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var array
diff --git a/app/code/Magento/Tax/Model/System/Config/Source/Tax/Region.php b/app/code/Magento/Tax/Model/System/Config/Source/Tax/Region.php
index a3e105788cb31..233ad9ca46ec5 100644
--- a/app/code/Magento/Tax/Model/System/Config/Source/Tax/Region.php
+++ b/app/code/Magento/Tax/Model/System/Config/Source/Tax/Region.php
@@ -5,7 +5,7 @@
  */
 namespace Magento\Tax\Model\System\Config\Source\Tax;
 
-class Region implements \Magento\Framework\Option\ArrayInterface
+class Region implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var \Magento\Directory\Model\ResourceModel\Region\CollectionFactory
diff --git a/app/code/Magento/Theme/Model/Layout/Source/Layout.php b/app/code/Magento/Theme/Model/Layout/Source/Layout.php
index f39481b824758..b34752a403aa6 100644
--- a/app/code/Magento/Theme/Model/Layout/Source/Layout.php
+++ b/app/code/Magento/Theme/Model/Layout/Source/Layout.php
@@ -5,7 +5,7 @@
  */
 namespace Magento\Theme\Model\Layout\Source;
 
-class Layout implements \Magento\Framework\Option\ArrayInterface
+class Layout implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var \Magento\Theme\Model\Layout\Config
diff --git a/app/code/Magento/Translation/Model/Js/Config/Source/Strategy.php b/app/code/Magento/Translation/Model/Js/Config/Source/Strategy.php
index f3d3bb7606648..92b27bbb3d4dc 100644
--- a/app/code/Magento/Translation/Model/Js/Config/Source/Strategy.php
+++ b/app/code/Magento/Translation/Model/Js/Config/Source/Strategy.php
@@ -7,7 +7,7 @@
 
 use Magento\Translation\Model\Js\Config;
 
-class Strategy implements \Magento\Framework\Option\ArrayInterface
+class Strategy implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * {@inheritdoc}
diff --git a/app/code/Magento/User/Model/System/Config/Source/Password.php b/app/code/Magento/User/Model/System/Config/Source/Password.php
index 12535b82bad77..410145e3c5ba9 100644
--- a/app/code/Magento/User/Model/System/Config/Source/Password.php
+++ b/app/code/Magento/User/Model/System/Config/Source/Password.php
@@ -11,7 +11,7 @@
  */
 namespace Magento\User\Model\System\Config\Source;
 
-class Password extends \Magento\Framework\DataObject implements \Magento\Framework\Option\ArrayInterface
+class Password extends \Magento\Framework\DataObject implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Get options for select
diff --git a/app/code/Magento/Variable/Model/Source/Variables.php b/app/code/Magento/Variable/Model/Source/Variables.php
index e878a3172be4b..79d80a845e4e8 100644
--- a/app/code/Magento/Variable/Model/Source/Variables.php
+++ b/app/code/Magento/Variable/Model/Source/Variables.php
@@ -8,7 +8,7 @@
 /**
  * Store Contact Information source model.
  */
-class Variables implements \Magento\Framework\Option\ArrayInterface
+class Variables implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Variable types
diff --git a/app/code/Magento/Weee/Model/Config/Source/Display.php b/app/code/Magento/Weee/Model/Config/Source/Display.php
index 72432180f9b25..9cd55b7319965 100644
--- a/app/code/Magento/Weee/Model/Config/Source/Display.php
+++ b/app/code/Magento/Weee/Model/Config/Source/Display.php
@@ -5,7 +5,7 @@
  */
 namespace Magento\Weee\Model\Config\Source;
 
-class Display implements \Magento\Framework\Option\ArrayInterface
+class Display implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Retrieve list of available options to display FPT
diff --git a/app/code/Magento/Widget/Model/ResourceModel/Widget/Instance/Options/ThemeId.php b/app/code/Magento/Widget/Model/ResourceModel/Widget/Instance/Options/ThemeId.php
index 0532c57f0306d..088dcbd30d6f7 100644
--- a/app/code/Magento/Widget/Model/ResourceModel/Widget/Instance/Options/ThemeId.php
+++ b/app/code/Magento/Widget/Model/ResourceModel/Widget/Instance/Options/ThemeId.php
@@ -12,7 +12,7 @@
  * @deprecated 100.1.7 created new class that correctly loads theme options and whose name follows naming convention
  * @see \Magento\Widget\Model\ResourceModel\Widget\Instance\Options\Themes
  */
-class ThemeId implements \Magento\Framework\Option\ArrayInterface
+class ThemeId implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var \Magento\Widget\Model\Widget\Instance
diff --git a/app/code/Magento/Widget/Model/ResourceModel/Widget/Instance/Options/Types.php b/app/code/Magento/Widget/Model/ResourceModel/Widget/Instance/Options/Types.php
index 0db3362753a65..5ac79e8b7c332 100644
--- a/app/code/Magento/Widget/Model/ResourceModel/Widget/Instance/Options/Types.php
+++ b/app/code/Magento/Widget/Model/ResourceModel/Widget/Instance/Options/Types.php
@@ -9,7 +9,7 @@
 /**
  * Widget Instance Types Options
  */
-class Types implements \Magento\Framework\Option\ArrayInterface
+class Types implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @var \Magento\Widget\Model\Widget\Instance
diff --git a/app/code/Magento/Widget/Model/Widget/Instance/OptionsFactory.php b/app/code/Magento/Widget/Model/Widget/Instance/OptionsFactory.php
index 9067753804829..c4b5b20f3a40a 100644
--- a/app/code/Magento/Widget/Model/Widget/Instance/OptionsFactory.php
+++ b/app/code/Magento/Widget/Model/Widget/Instance/OptionsFactory.php
@@ -25,7 +25,7 @@ public function __construct(\Magento\Framework\ObjectManagerInterface $objectMan
      *
      * @param string $type
      * @param array $data
-     * @return \Magento\Framework\Option\ArrayInterface
+     * @return \Magento\Framework\Data\OptionSourceInterface
      */
     public function create($type, array $data = [])
     {
diff --git a/app/code/Magento/Wishlist/Model/Config/Source/Summary.php b/app/code/Magento/Wishlist/Model/Config/Source/Summary.php
index 9c6a2c9f2d22c..37d4c04c86b91 100644
--- a/app/code/Magento/Wishlist/Model/Config/Source/Summary.php
+++ b/app/code/Magento/Wishlist/Model/Config/Source/Summary.php
@@ -5,7 +5,7 @@
  */
 namespace Magento\Wishlist\Model\Config\Source;
 
-class Summary implements \Magento\Framework\Option\ArrayInterface
+class Summary implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * @return array
diff --git a/dev/tests/static/testsuite/Magento/Test/Integrity/Library/DependencyTest.php b/dev/tests/static/testsuite/Magento/Test/Integrity/Library/DependencyTest.php
index 66bdc8cd18f33..71e5c826c2954 100644
--- a/dev/tests/static/testsuite/Magento/Test/Integrity/Library/DependencyTest.php
+++ b/dev/tests/static/testsuite/Magento/Test/Integrity/Library/DependencyTest.php
@@ -132,7 +132,7 @@ public function libraryDataProvider()
         // @TODO: remove this code when class Magento\Framework\Data\Collection will fixed
         $componentRegistrar = new ComponentRegistrar();
         include_once $componentRegistrar->getPath(ComponentRegistrar::LIBRARY, 'magento/framework')
-            . '/Option/ArrayInterface.php';
+            . '/Data/OptionSourceInterface.php';
         $blackList = Files::init()->readLists(__DIR__ . '/_files/blacklist*.txt');
         $dataProvider = Files::init()->getPhpFiles(Files::INCLUDE_LIBS | Files::AS_DATA_SET);
 
diff --git a/lib/internal/Magento/Framework/App/Scope/Source.php b/lib/internal/Magento/Framework/App/Scope/Source.php
index 926edc5e0694e..49c6ac9876a01 100644
--- a/lib/internal/Magento/Framework/App/Scope/Source.php
+++ b/lib/internal/Magento/Framework/App/Scope/Source.php
@@ -6,9 +6,9 @@
 namespace Magento\Framework\App\Scope;
 
 use Magento\Framework\App\ScopeResolverPool;
-use Magento\Framework\Option\ArrayInterface;
+use Magento\Framework\Data\OptionSourceInterface;
 
-class Source implements ArrayInterface
+class Source implements OptionSourceInterface
 {
     /**
      * @var ScopeResolverPool
diff --git a/lib/internal/Magento/Framework/Data/Collection.php b/lib/internal/Magento/Framework/Data/Collection.php
index 51a066f2660dd..cb9e79d6b7f59 100644
--- a/lib/internal/Magento/Framework/Data/Collection.php
+++ b/lib/internal/Magento/Framework/Data/Collection.php
@@ -10,17 +10,17 @@
 use Magento\Framework\Data\Collection\EntityFactoryInterface;
 use Magento\Framework\DataObject;
 use Magento\Framework\Exception\AlreadyExistsException;
-use Magento\Framework\Option\ArrayInterface;
+use Magento\Framework\Data\OptionSourceInterface;
 
 /**
  * Data collection
  *
- * TODO: Refactor use of \Magento\Framework\Option\ArrayInterface in library.
+ * TODO: Refactor use of \Magento\Framework\Data\OptionSourceInterface in library.
  *
  * @api
  * @since 100.0.2
  */
-class Collection implements \IteratorAggregate, \Countable, ArrayInterface, CollectionDataSourceInterface
+class Collection implements \IteratorAggregate, \Countable, OptionSourceInterface, CollectionDataSourceInterface
 {
     const SORT_ORDER_ASC = 'ASC';
 
diff --git a/lib/internal/Magento/Framework/Option/ArrayInterface.php b/lib/internal/Magento/Framework/Option/ArrayInterface.php
deleted file mode 100644
index 3c813545bc2c5..0000000000000
--- a/lib/internal/Magento/Framework/Option/ArrayInterface.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-/**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
-namespace Magento\Framework\Option;
-
-/**
- * Array marker interface
- *
- * @deprecated 102.0.1 please use \Magento\Framework\Data\OptionSourceInterface instead.
- * @see \Magento\Framework\Data\OptionSourceInterface
- */
-interface ArrayInterface extends \Magento\Framework\Data\OptionSourceInterface
-{
-}
diff --git a/lib/internal/Magento/Framework/Option/README.md b/lib/internal/Magento/Framework/Option/README.md
index 689cc2023dede..f0a6427133355 100644
--- a/lib/internal/Magento/Framework/Option/README.md
+++ b/lib/internal/Magento/Framework/Option/README.md
@@ -1 +1 @@
-This module is used to create option values in models to value-label pairs that are used in forms. The model must implement Magento\Framework\Option\ArrayInterface or an exception will be thrown.
\ No newline at end of file
+This module is used to create option values in models to value-label pairs that are used in forms. The model must implement Magento\Framework\Data\OptionSourceInterface or an exception will be thrown.
diff --git a/lib/internal/Magento/Framework/View/Design/Theme/Label.php b/lib/internal/Magento/Framework/View/Design/Theme/Label.php
index ff7203603572f..3e22f6f73df64 100644
--- a/lib/internal/Magento/Framework/View/Design/Theme/Label.php
+++ b/lib/internal/Magento/Framework/View/Design/Theme/Label.php
@@ -9,7 +9,7 @@
  */
 namespace Magento\Framework\View\Design\Theme;
 
-class Label implements \Magento\Framework\Option\ArrayInterface
+class Label implements \Magento\Framework\Data\OptionSourceInterface
 {
     /**
      * Labels collection array
diff --git a/lib/internal/Magento/Framework/View/Design/Theme/Label/Options.php b/lib/internal/Magento/Framework/View/Design/Theme/Label/Options.php
index 323cc1a9b61c9..6e1a7c6183b88 100644
--- a/lib/internal/Magento/Framework/View/Design/Theme/Label/Options.php
+++ b/lib/internal/Magento/Framework/View/Design/Theme/Label/Options.php
@@ -5,9 +5,9 @@
  */
 namespace Magento\Framework\View\Design\Theme\Label;
 
-use Magento\Framework\Option\ArrayInterface;
+use Magento\Framework\Data\OptionSourceInterface;
 
-class Options implements ArrayInterface
+class Options implements OptionSourceInterface
 {
     /**
      * @var ListInterface

From 1d70a4d6e6d86389955aeaf71676acc0c0313d1c Mon Sep 17 00:00:00 2001
From: Medvediev <v.medvediev@atwix.com>
Date: Fri, 12 Feb 2021 14:08:53 +0200
Subject: [PATCH 07/11] 
 lib/internal/Magento/Framework/View/Asset/Bundle/ConfigInterface has been
 removed. List of deleted unused classes that depended on this interface
 lib/internal/Magento/Framework/View/Asset/Bundle,
 lib/internal/Magento/Framework/View/Asset/Bundle/Config,
 lib/internal/Magento/Framework/View/Asset/Bundle/Manager

---
 app/etc/di.xml                                |   1 -
 .../Magento/Framework/View/Asset/Bundle.php   | 301 ------------------
 .../Framework/View/Asset/Bundle/Config.php    | 121 -------
 .../View/Asset/Bundle/ConfigInterface.php     |  35 --
 .../Framework/View/Asset/Bundle/Manager.php   | 269 ----------------
 .../Test/Unit/Asset/Bundle/ManagerTest.php    | 239 --------------
 .../View/Test/Unit/Asset/BundleTest.php       | 144 ---------
 7 files changed, 1110 deletions(-)
 delete mode 100644 lib/internal/Magento/Framework/View/Asset/Bundle.php
 delete mode 100644 lib/internal/Magento/Framework/View/Asset/Bundle/Config.php
 delete mode 100644 lib/internal/Magento/Framework/View/Asset/Bundle/ConfigInterface.php
 delete mode 100644 lib/internal/Magento/Framework/View/Asset/Bundle/Manager.php
 delete mode 100644 lib/internal/Magento/Framework/View/Test/Unit/Asset/Bundle/ManagerTest.php
 delete mode 100644 lib/internal/Magento/Framework/View/Test/Unit/Asset/BundleTest.php

diff --git a/app/etc/di.xml b/app/etc/di.xml
index f1ea8c9299420..dee3611da0d71 100644
--- a/app/etc/di.xml
+++ b/app/etc/di.xml
@@ -31,7 +31,6 @@
     <preference for="Magento\Framework\View\Design\ThemeInterface" type="Magento\Theme\Model\Theme" />
     <preference for="Magento\Framework\View\Design\Theme\ResolverInterface" type="Magento\Theme\Model\Theme\Resolver" />
     <preference for="Magento\Framework\View\ConfigInterface" type="Magento\Framework\View\Config" />
-    <preference for="Magento\Framework\View\Asset\Bundle\ConfigInterface" type="Magento\Framework\View\Asset\Bundle\Config" />
     <preference for="Magento\Framework\Locale\ListsInterface" type="Magento\Framework\Locale\TranslatedLists" />
     <preference for="Magento\Framework\Locale\AvailableLocalesInterface" type="Magento\Framework\Locale\Deployed\Codes" />
     <preference for="Magento\Framework\Locale\OptionInterface" type="Magento\Framework\Locale\Deployed\Options" />
diff --git a/lib/internal/Magento/Framework/View/Asset/Bundle.php b/lib/internal/Magento/Framework/View/Asset/Bundle.php
deleted file mode 100644
index 5d918982412b7..0000000000000
--- a/lib/internal/Magento/Framework/View/Asset/Bundle.php
+++ /dev/null
@@ -1,301 +0,0 @@
-<?php
-/**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
-
-namespace Magento\Framework\View\Asset;
-
-use Magento\Framework\Filesystem;
-use Magento\Framework\View\Asset\Bundle\Manager;
-use Magento\Framework\App\Filesystem\DirectoryList;
-use Magento\Framework\View\Asset\File\FallbackContext;
-
-/**
- * Bundle model
- * @deprecated 101.0.0
- * @see \Magento\Deploy\Package\Bundle
- */
-class Bundle
-{
-    /**
-     * @var array
-     */
-    protected $assets = [];
-
-    /**
-     * @var array
-     */
-    protected $assetsContent = [];
-
-    /**
-     * @var \Magento\Framework\View\Asset\Bundle\ConfigInterface
-     */
-    protected $bundleConfig;
-
-    /**
-     * @var array
-     */
-    protected $bundleNames = [
-        Manager::ASSET_TYPE_JS => 'jsbuild',
-        Manager::ASSET_TYPE_HTML => 'text'
-    ];
-
-    /**
-     * @var array
-     */
-    protected $content = [];
-
-    /**
-     * @var Minification
-     */
-    protected $minification;
-
-    /**
-     * @param Filesystem $filesystem
-     * @param Bundle\ConfigInterface $bundleConfig
-     * @param Minification $minification
-     */
-    public function __construct(
-        Filesystem $filesystem,
-        Bundle\ConfigInterface $bundleConfig,
-        Minification $minification
-    ) {
-        $this->filesystem = $filesystem;
-        $this->bundleConfig = $bundleConfig;
-        $this->minification = $minification;
-    }
-
-    /**
-     * @param LocalInterface $asset
-     * @return void
-     */
-    public function addAsset(LocalInterface $asset)
-    {
-        $this->init($asset);
-        $this->add($asset);
-    }
-
-    /**
-     * Add asset into array
-     *
-     * @param LocalInterface $asset
-     * @return void
-     */
-    protected function add(LocalInterface $asset)
-    {
-        $partIndex = $this->getPartIndex($asset);
-        $parts = &$this->assets[$this->getContextCode($asset)][$asset->getContentType()];
-        if (!isset($parts[$partIndex])) {
-            $parts[$partIndex]['assets'] = [];
-        }
-        $parts[$partIndex]['assets'][$this->getAssetKey($asset)] = $asset;
-    }
-
-    /**
-     * @param LocalInterface $asset
-     * @return void
-     */
-    protected function init(LocalInterface $asset)
-    {
-        $contextCode = $this->getContextCode($asset);
-        $type = $asset->getContentType();
-
-        if (!isset($this->assets[$contextCode][$type])) {
-            $this->assets[$contextCode][$type] = [];
-        }
-    }
-
-    /**
-     * @param LocalInterface $asset
-     * @return string
-     */
-    protected function getContextCode(LocalInterface $asset)
-    {
-        /** @var FallbackContext $context */
-        $context = $asset->getContext();
-        return $context->getAreaCode() . ':' . $context->getThemePath() . ':' . $context->getLocale();
-    }
-
-    /**
-     * @param LocalInterface $asset
-     * @return int
-     */
-    protected function getPartIndex(LocalInterface $asset)
-    {
-        $parts = $this->assets[$this->getContextCode($asset)][$asset->getContentType()];
-
-        $maxPartSize = $this->getMaxPartSize($asset);
-        $minSpace = $maxPartSize;
-        $minIndex = -1;
-        if ($maxPartSize && count($parts)) {
-            foreach ($parts as $partIndex => $part) {
-                $space = $maxPartSize - $this->getSizePartWithNewAsset($asset, $part['assets']);
-                if ($space >= 0 && $space < $minSpace) {
-                    $minSpace = $space;
-                    $minIndex = $partIndex;
-                }
-            }
-        }
-
-        return ($maxPartSize != 0) ? ($minIndex >= 0) ? $minIndex : count($parts) : 0;
-    }
-
-    /**
-     * @param LocalInterface $asset
-     * @return int
-     */
-    protected function getMaxPartSize(LocalInterface $asset)
-    {
-        return $this->bundleConfig->getPartSize($asset->getContext());
-    }
-
-    /**
-     * Get part size after adding new asset
-     *
-     * @param LocalInterface $asset
-     * @param LocalInterface[] $assets
-     * @return float
-     */
-    protected function getSizePartWithNewAsset(LocalInterface $asset, $assets = [])
-    {
-        $assets[$this->getAssetKey($asset)] = $asset;
-        return mb_strlen($this->getPartContent($assets), 'utf-8') / 1024;
-    }
-
-    /**
-     * Build asset key
-     *
-     * @param LocalInterface $asset
-     * @return string
-     */
-    protected function getAssetKey(LocalInterface $asset)
-    {
-        $result = (($asset->getModule() == '') ? '' : $asset->getModule() . '/') . $asset->getFilePath();
-        $result = $this->minification->addMinifiedSign($result);
-        return $result;
-    }
-
-    /**
-     * Prepare bundle for executing in js
-     *
-     * @param LocalInterface[] $assets
-     * @return array
-     */
-    protected function getPartContent($assets)
-    {
-        $contents = [];
-        foreach ($assets as $key => $asset) {
-            $contents[$key] = $this->getAssetContent($asset);
-        }
-
-        $partType = reset($assets)->getContentType();
-        $content = json_encode($contents, JSON_UNESCAPED_SLASHES);
-        $content = "require.config({\n" .
-            "    config: {\n" .
-            "        '" . $this->bundleNames[$partType] . "':" . $content . "\n" .
-            "    }\n" .
-            "});\n";
-
-        return $content;
-    }
-
-    /**
-     * Get content of asset
-     *
-     * @param LocalInterface $asset
-     * @return string
-     */
-    protected function getAssetContent(LocalInterface $asset)
-    {
-        $assetContextCode = $this->getContextCode($asset);
-        $assetContentType = $asset->getContentType();
-        $assetKey = $this->getAssetKey($asset);
-        if (!isset($this->assetsContent[$assetContextCode][$assetContentType][$assetKey])) {
-            $content = $asset->getContent();
-            if (mb_detect_encoding($content) !== "UTF-8") {
-                $content = mb_convert_encoding($content, "UTF-8");
-            }
-            $this->assetsContent[$assetContextCode][$assetContentType][$assetKey] = $content;
-        }
-
-        return $this->assetsContent[$assetContextCode][$assetContentType][$assetKey];
-    }
-
-    /**
-     * @return string
-     */
-    protected function getInitJs()
-    {
-        return "require.config({\n" .
-                "    bundles: {\n" .
-                "        'mage/requirejs/static': [\n" .
-                "            'jsbuild',\n" .
-                "            'buildTools',\n" .
-                "            'text',\n" .
-                "            'statistician'\n" .
-                "        ]\n" .
-                "    },\n" .
-                "    deps: [\n" .
-                "        'jsbuild'\n" .
-                "    ]\n" .
-                "});\n";
-    }
-
-    /**
-     * @return void
-     */
-    public function flush()
-    {
-        foreach ($this->assets as $types) {
-            $this->save($types);
-        }
-        $this->assets = [];
-        $this->content = [];
-        $this->assetsContent = [];
-    }
-
-    /**
-     * @param array $types
-     * @return void
-     */
-    protected function save($types)
-    {
-        $dir = $this->filesystem->getDirectoryWrite(DirectoryList::STATIC_VIEW);
-
-        $bundlePath = '';
-        foreach ($types as $parts) {
-            /** @var FallbackContext $context */
-            $assetsParts = reset($parts);
-            $context = reset($assetsParts['assets'])->getContext();
-            $bundlePath = empty($bundlePath) ? $context->getPath() . Manager::BUNDLE_PATH : $bundlePath;
-            $dir->delete($context->getPath() . DIRECTORY_SEPARATOR . Manager::BUNDLE_JS_DIR);
-            $this->fillContent($parts, $context);
-        }
-
-        $this->content[max(0, count($this->content) - 1)] .= $this->getInitJs();
-
-        foreach ($this->content as $partIndex => $content) {
-            $dir->writeFile($this->minification->addMinifiedSign($bundlePath . $partIndex . '.js'), $content);
-        }
-    }
-
-    /**
-     * @param array $parts
-     * @param FallbackContext $context
-     * @return void
-     */
-    protected function fillContent($parts, $context)
-    {
-        $index = count($this->content) > 0 ? count($this->content) - 1 : 0 ;
-        foreach ($parts as $part) {
-            if (!isset($this->content[$index])) {
-                $this->content[$index] = '';
-            } elseif ($this->bundleConfig->isSplit($context)) {
-                ++$index;
-                $this->content[$index] = '';
-            }
-            $this->content[$index] .= $this->getPartContent($part['assets']);
-        }
-    }
-}
diff --git a/lib/internal/Magento/Framework/View/Asset/Bundle/Config.php b/lib/internal/Magento/Framework/View/Asset/Bundle/Config.php
deleted file mode 100644
index ede43c789416f..0000000000000
--- a/lib/internal/Magento/Framework/View/Asset/Bundle/Config.php
+++ /dev/null
@@ -1,121 +0,0 @@
-<?php
-/**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
-
-namespace Magento\Framework\View\Asset\Bundle;
-
-use Magento\Framework\App\ObjectManager;
-use Magento\Framework\View;
-use Magento\Framework\View\Asset\Bundle;
-use Magento\Framework\View\Design\Theme\ListInterface;
-use Magento\Framework\View\Asset\File\FallbackContext;
-use Magento\Framework\View\Design\Theme\ThemeProviderInterface;
-
-/**
- * Class Config
- * @deprecated 101.0.0
- * @see \Magento\Deploy\Config\BundleConfig
- */
-class Config implements Bundle\ConfigInterface
-{
-    /**#@+
-     * Bundle config info
-     */
-    const VIEW_CONFIG_MODULE = 'Js_Bundle';
-    const VIEW_CONFIG_BUNDLE_SIZE_NAME = 'bundle_size';
-    /**#@-*/
-
-    /**#@-*/
-    protected $themeList;
-
-    /**
-     * @var View\ConfigInterface
-     */
-    protected $viewConfig;
-
-    /**
-     * @var ThemeProviderInterface
-     */
-    private $themeProvider;
-
-    /**
-     * @var \Magento\Framework\Config\View[]
-     */
-    private $config = [];
-
-    /**
-     * @param View\ConfigInterface $viewConfig
-     * @param ListInterface $themeList
-     */
-    public function __construct(
-        View\ConfigInterface $viewConfig,
-        ListInterface $themeList
-    ) {
-        $this->viewConfig = $viewConfig;
-        $this->themeList = $themeList;
-    }
-
-    /**
-     * @param FallbackContext $assetContext
-     * @return bool
-     */
-    public function isSplit(FallbackContext $assetContext)
-    {
-        return (bool)$this->getPartSize($assetContext);
-    }
-
-    /**
-     * @param FallbackContext $assetContext
-     * @return \Magento\Framework\Config\View
-     */
-    public function getConfig(FallbackContext $assetContext)
-    {
-        $themePath = $assetContext->getAreaCode() . '/' . $assetContext->getThemePath();
-        if (!isset($this->config[$themePath])) {
-            $this->config[$themePath] = $this->viewConfig->getViewConfig([
-                'area' => $assetContext->getAreaCode(),
-                'themeModel' => $this->getThemeProvider()->getThemeByFullPath(
-                    $themePath
-                )
-            ]);
-        }
-
-        return $this->config[$themePath];
-    }
-
-    /**
-     * @param FallbackContext $assetContext
-     * @return int
-     */
-    public function getPartSize(FallbackContext $assetContext)
-    {
-        $size = $this->getConfig($assetContext)->getVarValue(
-            self::VIEW_CONFIG_MODULE,
-            self::VIEW_CONFIG_BUNDLE_SIZE_NAME
-        );
-        $unit = preg_replace('/[^a-zA-Z]+/', '', $size);
-        $unit = strtoupper($unit);
-        switch ($unit) {
-            case 'KB':
-                return (int)$size;
-            case 'MB':
-                return (int)$size * 1024;
-            default:
-                return (int)($size / 1024);
-        }
-    }
-
-    /**
-     * @return ThemeProviderInterface
-     */
-    private function getThemeProvider()
-    {
-        if (null === $this->themeProvider) {
-            $this->themeProvider = ObjectManager::getInstance()->get(ThemeProviderInterface::class);
-        }
-
-        return $this->themeProvider;
-    }
-}
diff --git a/lib/internal/Magento/Framework/View/Asset/Bundle/ConfigInterface.php b/lib/internal/Magento/Framework/View/Asset/Bundle/ConfigInterface.php
deleted file mode 100644
index 3acb49337a2e0..0000000000000
--- a/lib/internal/Magento/Framework/View/Asset/Bundle/ConfigInterface.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-/**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
-
-namespace Magento\Framework\View\Asset\Bundle;
-
-use Magento\Framework\View\Asset\File\FallbackContext;
-
-/**
- * Interface ConfigInterface
- * @deprecated 101.0.0
- * @see \Magento\Deploy\Config\BundleConfig
- */
-interface ConfigInterface
-{
-    /**
-     * @param FallbackContext $assetContext
-     * @return bool
-     */
-    public function isSplit(FallbackContext $assetContext);
-
-    /**
-     * @param FallbackContext $assetContext
-     * @return \Magento\Framework\Config\View
-     */
-    public function getConfig(FallbackContext $assetContext);
-
-    /**
-     * @param FallbackContext $assetContext
-     * @return false|float|int|string
-     */
-    public function getPartSize(FallbackContext $assetContext);
-}
diff --git a/lib/internal/Magento/Framework/View/Asset/Bundle/Manager.php b/lib/internal/Magento/Framework/View/Asset/Bundle/Manager.php
deleted file mode 100644
index 490c04004365d..0000000000000
--- a/lib/internal/Magento/Framework/View/Asset/Bundle/Manager.php
+++ /dev/null
@@ -1,269 +0,0 @@
-<?php
-/**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
-
-namespace Magento\Framework\View\Asset\Bundle;
-
-use Magento\Framework\View\Asset;
-use Magento\Framework\Filesystem;
-use Magento\Framework\View\Asset\Bundle;
-use Magento\Framework\View\Asset\LocalInterface;
-use Magento\Framework\App\Filesystem\DirectoryList;
-
-/**
- * BundleService model
- * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- * @deprecated 101.0.0
- * @see \Magento\Deploy\Service\Bundle
- */
-class Manager
-{
-    const BUNDLE_JS_DIR = 'js/bundle';
-
-    const BUNDLE_PATH = '/js/bundle/bundle';
-
-    const ASSET_TYPE_JS = 'js';
-
-    const ASSET_TYPE_HTML = 'html';
-
-    /**
-     * @var \Magento\Framework\Filesystem
-     */
-    protected $filesystem;
-
-    /**
-     * @var \Magento\Framework\View\Asset\Bundle
-     */
-    protected $bundle;
-
-    /**
-     * @var \Magento\Framework\View\Asset\Bundle\ConfigInterface
-     */
-    protected $bundleConfig;
-
-    /**
-     * @var \Magento\Framework\View\Asset\ConfigInterface
-     */
-    protected $assetConfig;
-
-    /**
-     * @var array
-     */
-    protected $excluded = [];
-
-    /**
-     * @var array
-     */
-    public static $availableTypes = [self::ASSET_TYPE_JS, self::ASSET_TYPE_HTML];
-
-    /**
-     * @var Asset\Minification
-     */
-    private $minification;
-
-    /**
-     * @param Filesystem $filesystem
-     * @param Bundle $bundle
-     * @param Bundle\ConfigInterface $bundleConfig
-     * @param Asset\ConfigInterface $assetConfig
-     * @param Asset\Minification $minification
-     */
-    public function __construct(
-        Filesystem $filesystem,
-        Bundle $bundle,
-        Bundle\ConfigInterface $bundleConfig,
-        Asset\ConfigInterface $assetConfig,
-        Asset\Minification $minification
-    ) {
-        $this->filesystem = $filesystem;
-        $this->assetConfig = $assetConfig;
-        $this->bundleConfig = $bundleConfig;
-        $this->bundle = $bundle;
-        $this->minification = $minification;
-    }
-
-    /**
-     * Check if asset in exclude list
-     *
-     * @param LocalInterface $asset
-     * @return bool
-     */
-    protected function isExcluded(LocalInterface $asset)
-    {
-        $excludedFiles = array_merge(
-            $this->bundleConfig->getConfig($asset->getContext())->getExcludedFiles(),
-            $this->excluded
-        );
-        foreach ($excludedFiles as $file) {
-            if ($this->isExcludedFile($file, $asset)) {
-                return true;
-            }
-        }
-
-        foreach ($this->bundleConfig->getConfig($asset->getContext())->getExcludedDir() as $directory) {
-            if ($this->isExcludedDirectory($directory, $asset)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Check if asset file in excluded directory
-     *
-     * @param string $directoryPath
-     * @param LocalInterface $asset
-     * @return bool
-     */
-    protected function isExcludedDirectory($directoryPath, $asset)
-    {
-        /** @var $asset LocalInterface */
-        $assetDirectory = dirname($asset->getFilePath());
-        $assetDirectory .= substr($assetDirectory, -1) != '/' ? '/' : '';
-        $directoryPath .= substr($directoryPath, -1) != '/' ? '/' : '';
-
-        /** @var $asset LocalInterface */
-        $directoryPathInfo = $this->splitPath($directoryPath);
-        if ($directoryPathInfo && $this->compareModules($directoryPathInfo, $asset)) {
-            return strpos($assetDirectory, $directoryPathInfo['excludedPath']) === 0;
-        }
-        return false;
-    }
-
-    /**
-     * Check if asset file is excluded
-     *
-     * @param string $filePath
-     * @param LocalInterface $asset
-     * @return bool
-     */
-    protected function isExcludedFile($filePath, $asset)
-    {
-        /** @var $asset LocalInterface */
-        $filePathInfo = $this->splitPath($filePath);
-        if ($filePathInfo && $this->compareModules($filePathInfo, $asset)) {
-            return $asset->getFilePath() == $filePathInfo['excludedPath'];
-        }
-        return false;
-    }
-
-    /**
-     * Compare asset module with excluded module
-     *
-     * @param array $filePathInfo
-     * @param LocalInterface $asset
-     * @return bool
-     */
-    protected function compareModules($filePathInfo, $asset)
-    {
-        /** @var $asset LocalInterface */
-        if (($filePathInfo['excludedModule'] == 'Lib' && $asset->getModule() == '')
-            || ($filePathInfo['excludedModule'] == $asset->getModule())
-        ) {
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * Get excluded module and path from complex string
-     *
-     * @param string $path
-     * @return array|bool
-     */
-    protected function splitPath($path)
-    {
-        if (strpos($path, '::') !== false) {
-            list($excludedModule, $excludedPath) = explode('::', $path);
-            return [
-                'excludedModule' => $excludedModule,
-                'excludedPath' => $excludedPath,
-            ];
-        }
-        return false;
-    }
-
-    /**
-     * Add asset to the bundle
-     *
-     * @param LocalInterface $asset
-     * @return bool
-     */
-    public function addAsset(LocalInterface $asset)
-    {
-        if (!$this->isValidAsset($asset)) {
-            return false;
-        }
-
-        $this->bundle->addAsset($asset);
-        return true;
-    }
-
-    /**
-     * @param LocalInterface $asset
-     * @return bool
-     */
-    protected function isAssetMinification(LocalInterface $asset)
-    {
-        $sourceFile = $asset->getSourceFile();
-        $extension = $asset->getContentType();
-        if (in_array($sourceFile, $this->excluded)) {
-            return false;
-        }
-
-        if (strpos($sourceFile, '.min.') === false) {
-            $info = pathinfo($asset->getPath());
-            $assetMinifiedPath = $info['dirname'] . '/' . $info['filename'] . '.min.' . $info['extension'];
-            if ($this->filesystem->getDirectoryRead(DirectoryList::APP)->isExist($assetMinifiedPath)) {
-                $this->excluded[] = $sourceFile;
-                return false;
-            }
-        } else {
-            $this->excluded[] = $this->filesystem->getDirectoryRead(DirectoryList::APP)
-                ->getAbsolutePath(str_replace(".min.$extension", ".$extension", $asset->getPath()));
-        }
-
-        return true;
-    }
-
-    /**
-     * @param LocalInterface $asset
-     * @return bool
-     */
-    protected function isValidAsset(LocalInterface $asset)
-    {
-        if ($this->isValidType($asset)
-            && $this->isAssetMinification($asset)
-            && !$this->isExcluded($asset)
-        ) {
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * @param LocalInterface $asset
-     * @return bool
-     */
-    protected function isValidType(LocalInterface $asset)
-    {
-        $type = $asset->getContentType();
-        if (!in_array($type, self::$availableTypes)) {
-            return false;
-        }
-
-        return true;
-    }
-
-    /**
-     * Flush bundle
-     *
-     * @return void
-     */
-    public function flush()
-    {
-        $this->bundle->flush();
-    }
-}
diff --git a/lib/internal/Magento/Framework/View/Test/Unit/Asset/Bundle/ManagerTest.php b/lib/internal/Magento/Framework/View/Test/Unit/Asset/Bundle/ManagerTest.php
deleted file mode 100644
index 045b6d600e284..0000000000000
--- a/lib/internal/Magento/Framework/View/Test/Unit/Asset/Bundle/ManagerTest.php
+++ /dev/null
@@ -1,239 +0,0 @@
-<?php
-/**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
-declare(strict_types=1);
-
-namespace Magento\Framework\View\Test\Unit\Asset\Bundle;
-
-use Magento\Framework\App\Filesystem\DirectoryList;
-use Magento\Framework\Config\View;
-use Magento\Framework\Filesystem;
-use Magento\Framework\Filesystem\Directory\ReadInterface;
-use Magento\Framework\View\Asset\Bundle;
-use Magento\Framework\View\Asset\Bundle\ConfigInterface;
-use Magento\Framework\View\Asset\Bundle\Manager;
-use Magento\Framework\View\Asset\File\FallbackContext;
-use Magento\Framework\View\Asset\LocalInterface;
-use Magento\Framework\View\Asset\Minification;
-use PHPUnit\Framework\MockObject\MockObject;
-use PHPUnit\Framework\TestCase;
-
-class ManagerTest extends TestCase
-{
-    /** @var  Manager|MockObject */
-    protected $manager;
-
-    /** @var  Filesystem|MockObject */
-    protected $filesystem;
-
-    /** @var  Bundle|MockObject */
-    protected $bundle;
-
-    /** @var  ConfigInterface|MockObject */
-    protected $bundleConfig;
-
-    /** @var  \Magento\Framework\View\Asset\ConfigInterface|MockObject */
-    protected $assetConfig;
-
-    /** @var  LocalInterface|MockObject */
-    protected $asset;
-
-    /** @var Minification|MockObject */
-    private $minificationMock;
-
-    protected function setUp(): void
-    {
-        $this->filesystem = $this->getMockBuilder(Filesystem::class)
-            ->disableOriginalConstructor()
-            ->getMock();
-        $this->bundle = $this->getMockBuilder(Bundle::class)
-            ->disableOriginalConstructor()
-            ->getMock();
-        $this->bundleConfig = $this->getMockBuilder(ConfigInterface::class)
-            ->disableOriginalConstructor()
-            ->getMockForAbstractClass();
-        $this->assetConfig = $this->getMockBuilder(\Magento\Framework\View\Asset\ConfigInterface::class)
-            ->disableOriginalConstructor()
-            ->getMock();
-
-        $this->asset = $this->getMockForAbstractClass(
-            LocalInterface::class,
-            [],
-            '',
-            false,
-            false,
-            true,
-            ['getContentType']
-        );
-
-        $this->minificationMock = $this->getMockBuilder(Minification::class)
-            ->disableOriginalConstructor()
-            ->getMock();
-
-        $this->manager = new Manager(
-            $this->filesystem,
-            $this->bundle,
-            $this->bundleConfig,
-            $this->assetConfig,
-            $this->minificationMock
-        );
-    }
-
-    public function testAddAssetWithInvalidType()
-    {
-        $this->asset->expects($this->once())
-            ->method('getContentType')
-            ->willReturn('testType');
-
-        $this->assertFalse($this->manager->addAsset($this->asset));
-    }
-
-    public function testAddAssetWithExcludedFile()
-    {
-        $dirRead = $this->getMockBuilder(ReadInterface::class)
-            ->disableOriginalConstructor()
-            ->getMockForAbstractClass();
-        $context = $this->getMockBuilder(FallbackContext::class)
-            ->disableOriginalConstructor()
-            ->getMock();
-        $configView = $this->getMockBuilder(View::class)
-            ->setMockClassName('configView')
-            ->disableOriginalConstructor()
-            ->getMock();
-
-        $this->asset->expects($this->atLeastOnce())
-            ->method('getContext')
-            ->willReturn($context);
-        $this->asset->expects($this->atLeastOnce())
-            ->method('getContentType')
-            ->willReturn('js');
-        $this->asset->expects($this->atLeastOnce())
-            ->method('getModule')
-            ->willReturn('Lib');
-        $this->asset->expects($this->atLeastOnce())
-            ->method('getSourceFile')
-            ->willReturn('source/file.min.js');
-        $this->asset->expects($this->atLeastOnce())
-            ->method('getFilePath')
-            ->willReturn('source/file.min.js');
-        $this->filesystem->expects($this->once())
-            ->method('getDirectoryRead')
-            ->with(DirectoryList::APP)
-            ->willReturn($dirRead);
-        $this->bundleConfig->expects($this->atLeastOnce())
-            ->method('getConfig')
-            ->with($context)
-            ->willReturn($configView);
-        $configView->expects($this->once())
-            ->method('getExcludedFiles')
-            ->willReturn(['Lib:' . ':source/file.min.js']);
-
-        $this->assertFalse($this->manager->addAsset($this->asset));
-    }
-
-    public function testAddAssetWithExcludedDirectory()
-    {
-        $dirRead = $this->getMockBuilder(ReadInterface::class)
-            ->disableOriginalConstructor()
-            ->getMockForAbstractClass();
-        $context = $this->getMockBuilder(FallbackContext::class)
-            ->disableOriginalConstructor()
-            ->getMock();
-        $configView = $this->getMockBuilder(View::class)
-            ->disableOriginalConstructor()
-            ->getMock();
-
-        $this->filesystem->expects($this->once())
-            ->method('getDirectoryRead')
-            ->with(DirectoryList::APP)
-            ->willReturn($dirRead);
-        $dirRead->expects($this->once())
-            ->method('getAbsolutePath')
-            ->with('/path/to/file.js')
-            ->willReturn(true);
-        $this->asset->expects($this->atLeastOnce())
-            ->method('getSourceFile')
-            ->willReturn('/path/to/source/file.min.js');
-        $this->asset->expects($this->atLeastOnce())
-            ->method('getContentType')
-            ->willReturn('js');
-        $this->asset->expects($this->once())
-            ->method('getPath')
-            ->willReturn('/path/to/file.js');
-        $this->asset->expects($this->atLeastOnce())
-            ->method('getModule')
-            ->willReturn('');
-        $this->asset->expects($this->atLeastOnce())
-            ->method('getFilePath')
-            ->willReturn('file/path.js');
-        $this->asset->expects($this->atLeastOnce())
-            ->method('getContext')
-            ->willReturn($context);
-        $this->bundleConfig->expects($this->atLeastOnce())
-            ->method('getConfig')
-            ->with($context)
-            ->willReturn($configView);
-        $configView->expects($this->once())
-            ->method('getExcludedFiles')
-            ->willReturn([]);
-        $configView->expects($this->once())
-            ->method('getExcludedDir')
-            ->willReturn(['Lib:' . ':file']);
-
-        $this->assertFalse($this->manager->addAsset($this->asset));
-    }
-
-    public function testAddAsset()
-    {
-        $dirRead = $this->getMockBuilder(ReadInterface::class)
-            ->disableOriginalConstructor()
-            ->getMockForAbstractClass();
-        $context = $this->getMockBuilder(FallbackContext::class)
-            ->disableOriginalConstructor()
-            ->getMock();
-        $configView = $this->getMockBuilder(View::class)
-            ->disableOriginalConstructor()
-            ->getMock();
-
-        $this->filesystem->expects($this->once())
-            ->method('getDirectoryRead')
-            ->with(DirectoryList::APP)
-            ->willReturn($dirRead);
-        $this->asset->expects($this->atLeastOnce())
-            ->method('getSourceFile')
-            ->willReturn('/path/to/source/file.min.js');
-        $this->asset->expects($this->atLeastOnce())
-            ->method('getContentType')
-            ->willReturn('js');
-        $this->asset->expects($this->once())
-            ->method('getPath')
-            ->willReturn('/path/to/file.js');
-        $this->asset->expects($this->atLeastOnce())
-            ->method('getContext')
-            ->willReturn($context);
-        $this->bundleConfig->expects($this->atLeastOnce())
-            ->method('getConfig')
-            ->with($context)
-            ->willReturn($configView);
-        $configView->expects($this->once())
-            ->method('getExcludedFiles')
-            ->willReturn([]);
-        $configView->expects($this->once())
-            ->method('getExcludedDir')
-            ->willReturn([]);
-        $this->bundle->expects($this->once())
-            ->method('addAsset')
-            ->with($this->asset);
-
-        $this->assertTrue($this->manager->addAsset($this->asset));
-    }
-
-    public function testFlush()
-    {
-        $this->bundle->expects($this->once())
-            ->method('flush');
-        $this->manager->flush();
-    }
-}
diff --git a/lib/internal/Magento/Framework/View/Test/Unit/Asset/BundleTest.php b/lib/internal/Magento/Framework/View/Test/Unit/Asset/BundleTest.php
deleted file mode 100644
index 9c344b61cf870..0000000000000
--- a/lib/internal/Magento/Framework/View/Test/Unit/Asset/BundleTest.php
+++ /dev/null
@@ -1,144 +0,0 @@
-<?php
-/**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
-declare(strict_types=1);
-
-namespace Magento\Framework\View\Test\Unit\Asset;
-
-use Magento\Framework\Filesystem;
-use Magento\Framework\Filesystem\Directory\WriteInterface;
-use Magento\Framework\View\Asset\Bundle;
-use Magento\Framework\View\Asset\Bundle\ConfigInterface;
-use Magento\Framework\View\Asset\Bundle\Manager;
-use Magento\Framework\View\Asset\File\FallbackContext;
-use Magento\Framework\View\Asset\LocalInterface;
-use Magento\Framework\View\Asset\Minification;
-use PHPUnit\Framework\MockObject\MockObject;
-use PHPUnit\Framework\TestCase;
-
-/**
- * Unit test for Magento\Framework\View\Asset\Bundle
- */
-class BundleTest extends TestCase
-{
-    /**
-     * @var Bundle
-     */
-    protected $bundle;
-
-    /**
-     * @var Filesystem|MockObject
-     */
-    protected $filesystemMock;
-
-    /**
-     * @var ConfigInterface|MockObject
-     */
-    protected $bundleConfigMock;
-
-    /**
-     * @var Minification|MockObject
-     */
-    protected $minificationMock;
-
-    /**
-     * {@inheritDoc}
-     */
-    protected function setUp(): void
-    {
-        $this->filesystemMock = $this->getMockBuilder(Filesystem::class)
-            ->disableOriginalConstructor()
-            ->getMock();
-        $this->bundleConfigMock = $this->getMockBuilder(ConfigInterface::class)
-            ->disableOriginalConstructor()
-            ->getMockForAbstractClass();
-        $this->minificationMock = $this->getMockBuilder(Minification::class)
-            ->disableOriginalConstructor()
-            ->getMock();
-
-        $this->bundle = new Bundle(
-            $this->filesystemMock,
-            $this->bundleConfigMock,
-            $this->minificationMock
-        );
-    }
-
-    /**
-     * @return void
-     * @covers \Magento\Framework\View\Asset\Bundle::getAssetKey
-     * @covers \Magento\Framework\View\Asset\Bundle::save
-     */
-    public function testMinSuffix()
-    {
-        $this->minificationMock
-            ->expects($this->any())
-            ->method('addMinifiedSign')
-            ->withConsecutive(
-                ['onefile.js'],
-                ['onefile.js'],
-                ['path-to-theme/js/bundle/bundle0.js']
-            )
-            ->willReturnOnConsecutiveCalls(
-                'onefile.min.js',
-                'onefile.min.js',
-                'path-to-theme/js/bundle/bundle0.min.js'
-            );
-
-        $contextMock = $this->getMockBuilder(FallbackContext::class)
-            ->disableOriginalConstructor()
-            ->getMock();
-        $contextMock
-            ->expects($this->any())
-            ->method('getAreaCode')
-            ->willReturn('area');
-        $contextMock
-            ->expects($this->any())
-            ->method('getThemePath')
-            ->willReturn('theme-path');
-        $contextMock
-            ->expects($this->any())
-            ->method('getLocale')
-            ->willReturn('locale');
-        $contextMock
-            ->expects($this->any())
-            ->method('getPath')
-            ->willReturn('path-to-theme');
-
-        $assetMock = $this->getMockBuilder(LocalInterface::class)
-            ->setMethods(['getContentType', 'getContext'])
-            ->getMockForAbstractClass();
-        $assetMock
-            ->expects($this->any())
-            ->method('getContext')
-            ->willReturn($contextMock);
-        $assetMock
-            ->expects($this->any())
-            ->method('getContentType')
-            ->willReturn('js');
-        $assetMock
-            ->expects($this->any())
-            ->method('getFilePath')
-            ->willReturn('onefile.js');
-
-        $writeMock = $this->getMockBuilder(WriteInterface::class)
-            ->getMockForAbstractClass();
-        $writeMock
-            ->expects($this->once())
-            ->method('delete')
-            ->with('path-to-theme' . DIRECTORY_SEPARATOR . Manager::BUNDLE_JS_DIR);
-        $writeMock
-            ->expects($this->once())
-            ->method('writeFile')
-            ->with('path-to-theme/js/bundle/bundle0.min.js', $this->stringContains('onefile.min.js'));
-
-        $this->filesystemMock
-            ->expects($this->any())
-            ->method('getDirectoryWrite')
-            ->willReturn($writeMock);
-
-        $this->bundle->addAsset($assetMock);
-        $this->bundle->flush();
-    }
-}

From b15b40054a8cb71bb8669c804854419e92941fb6 Mon Sep 17 00:00:00 2001
From: Medvediev <v.medvediev@atwix.com>
Date: Fri, 12 Feb 2021 14:21:20 +0200
Subject: [PATCH 08/11] 
 ib/internal/Magento/Framework/View/Element/UiComponent/Config/ManagerInterface
 has been removed. The Unused deprecated class
 app/code/Magento/Ui/Model/Manager that implements this interface has been
 removed

---
 app/code/Magento/Ui/Model/Manager.php         | 396 ------------------
 .../Ui/Test/Unit/Model/ManagerTest.php        | 355 ----------------
 app/code/Magento/Ui/etc/di.xml                |   7 -
 .../UiComponent/Config/ManagerInterface.php   |  71 ----
 .../View/Element/UiComponentFactory.php       |  42 +-
 .../Factory/HtmlContentFactoryTest.php        |   6 +-
 6 files changed, 23 insertions(+), 854 deletions(-)
 delete mode 100644 app/code/Magento/Ui/Model/Manager.php
 delete mode 100644 app/code/Magento/Ui/Test/Unit/Model/ManagerTest.php
 delete mode 100644 lib/internal/Magento/Framework/View/Element/UiComponent/Config/ManagerInterface.php

diff --git a/app/code/Magento/Ui/Model/Manager.php b/app/code/Magento/Ui/Model/Manager.php
deleted file mode 100644
index ce9e4e51ea7fe..0000000000000
--- a/app/code/Magento/Ui/Model/Manager.php
+++ /dev/null
@@ -1,396 +0,0 @@
-<?php
-/**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
-
-namespace Magento\Ui\Model;
-
-use ArrayObject;
-use Magento\Framework\App\ObjectManager;
-use Magento\Framework\Config\CacheInterface;
-use Magento\Framework\Data\Argument\InterpreterInterface;
-use Magento\Framework\Exception\LocalizedException;
-use Magento\Framework\Serialize\SerializerInterface;
-use Magento\Framework\View\Element\UiComponent\ArrayObjectFactory;
-use Magento\Framework\View\Element\UiComponent\Config\Converter;
-use Magento\Framework\View\Element\UiComponent\Config\DomMergerInterface;
-use Magento\Framework\View\Element\UiComponent\Config\FileCollector\AggregatedFileCollectorFactory;
-use Magento\Framework\View\Element\UiComponent\Config\ManagerInterface;
-use Magento\Framework\View\Element\UiComponent\Config\Provider\Component\Definition as ComponentDefinition;
-use Magento\Framework\View\Element\UiComponent\Config\ReaderFactory;
-use Magento\Framework\View\Element\UiComponent\Config\UiReaderInterface;
-
-/**
- * @inheritdoc
- *
- * @deprecated 101.0.0
- * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- */
-class Manager implements ManagerInterface
-{
-    /**
-     * ID in the storage cache
-     */
-    const CACHE_ID = 'ui_component_configuration_data';
-
-    /**
-     * Configuration provider for UI component
-     *
-     * @var ComponentDefinition
-     */
-    protected $componentConfigProvider;
-
-    /**
-     * Argument interpreter
-     *
-     * @var InterpreterInterface
-     */
-    protected $argumentInterpreter;
-
-    /**
-     * DOM document merger
-     *
-     * @var DomMergerInterface
-     */
-    protected $domMerger;
-
-    /**
-     * Factory for UI config reader
-     *
-     * @var ReaderFactory
-     */
-    protected $readerFactory;
-
-    /**
-     * Component data
-     *
-     * @var ArrayObject
-     */
-    protected $componentsData;
-
-    /**
-     * Components pool
-     *
-     * @var ArrayObject
-     */
-    protected $componentsPool;
-
-    /**
-     * Factory for ArrayObject
-     *
-     * @var ArrayObjectFactory
-     */
-    protected $arrayObjectFactory;
-
-    /**
-     * @var AggregatedFileCollectorFactory
-     */
-    protected $aggregatedFileCollectorFactory;
-
-    /**
-     * @var CacheInterface
-     */
-    protected $cache;
-
-    /**
-     * @var UiReaderInterface[]
-     */
-    protected $uiReader;
-
-    /**
-     * @var SerializerInterface
-     */
-    private $serializer;
-
-    /**
-     * @param ComponentDefinition $componentConfigProvider
-     * @param DomMergerInterface $domMerger
-     * @param ReaderFactory $readerFactory
-     * @param ArrayObjectFactory $arrayObjectFactory
-     * @param AggregatedFileCollectorFactory $aggregatedFileCollectorFactory
-     * @param CacheInterface $cache
-     * @param InterpreterInterface $argumentInterpreter
-     * @param SerializerInterface|null $serializer
-     */
-    public function __construct(
-        ComponentDefinition $componentConfigProvider,
-        DomMergerInterface $domMerger,
-        ReaderFactory $readerFactory,
-        ArrayObjectFactory $arrayObjectFactory,
-        AggregatedFileCollectorFactory $aggregatedFileCollectorFactory,
-        CacheInterface $cache,
-        InterpreterInterface $argumentInterpreter,
-        SerializerInterface $serializer = null
-    ) {
-        $this->componentConfigProvider = $componentConfigProvider;
-        $this->domMerger = $domMerger;
-        $this->readerFactory = $readerFactory;
-        $this->arrayObjectFactory = $arrayObjectFactory;
-        $this->componentsData = $this->arrayObjectFactory->create();
-        $this->aggregatedFileCollectorFactory = $aggregatedFileCollectorFactory;
-        $this->cache = $cache;
-        $this->argumentInterpreter = $argumentInterpreter;
-        $this->serializer = $serializer ?: ObjectManager::getInstance()->get(SerializerInterface::class);
-    }
-
-    /**
-     * Get component data
-     *
-     * @param string $name
-     * @return array
-     */
-    public function getData($name)
-    {
-        return (array) $this->componentsData->offsetGet($name);
-    }
-
-    /**
-     * Has component data
-     *
-     * @param string $name
-     * @return bool
-     */
-    protected function hasData($name)
-    {
-        return $this->componentsData->offsetExists($name);
-    }
-
-    /**
-     * Prepare the initialization data of UI components
-     *
-     * @param string $name
-     * @return ManagerInterface
-     * @throws \Magento\Framework\Exception\LocalizedException
-     */
-    public function prepareData($name)
-    {
-        if ($name === null || $this->hasData($name)) {
-            throw new LocalizedException(
-                new \Magento\Framework\Phrase(
-                    'The "%1" UI component element name is invalid. Verify the name and try again.',
-                    [$name]
-                )
-            );
-        }
-        $this->componentsPool = $this->arrayObjectFactory->create();
-
-        $cacheID = static::CACHE_ID . '_' . $name;
-        $cachedPool = $this->cache->load($cacheID);
-        if ($cachedPool === false) {
-            $this->prepare($name);
-            $this->cache->save(
-                $this->serializer->serialize($this->componentsPool->getArrayCopy()),
-                $cacheID
-            );
-        } else {
-            $this->componentsPool->exchangeArray(
-                $this->serializer->unserialize($cachedPool)
-            );
-        }
-        $this->componentsData->offsetSet($name, $this->componentsPool);
-        $this->componentsData->offsetSet($name, $this->evaluateComponentArguments($this->getData($name)));
-
-        return $this;
-    }
-
-    /**
-     * Evaluated components data
-     *
-     * @param array $components
-     * @return array
-     */
-    protected function evaluateComponentArguments($components)
-    {
-        foreach ($components as &$component) {
-            foreach ($component[ManagerInterface::COMPONENT_ARGUMENTS_KEY] as $argumentName => $argument) {
-                $component[ManagerInterface::COMPONENT_ARGUMENTS_KEY][$argumentName]
-                    = $this->argumentInterpreter->evaluate($argument);
-            }
-            $component[ManagerInterface::CHILDREN_KEY] = $this->evaluateComponentArguments(
-                $component[ManagerInterface::CHILDREN_KEY]
-            );
-        }
-
-        return $components;
-    }
-
-    /**
-     * To create the raw  data components
-     *
-     * @param string $component
-     * @param bool $evaluated
-     * @return array
-     */
-    public function createRawComponentData($component, $evaluated = true)
-    {
-        $componentData = $this->componentConfigProvider->getComponentData($component);
-        $componentData[Converter::DATA_ATTRIBUTES_KEY] = isset($componentData[Converter::DATA_ATTRIBUTES_KEY])
-            ? $componentData[Converter::DATA_ATTRIBUTES_KEY]
-            : [];
-        $componentData[Converter::DATA_ARGUMENTS_KEY] = isset($componentData[Converter::DATA_ARGUMENTS_KEY])
-            ? $componentData[Converter::DATA_ARGUMENTS_KEY]
-            : [];
-        if ($evaluated) {
-            foreach ($componentData[Converter::DATA_ARGUMENTS_KEY] as $argumentName => $argument) {
-                $componentData[Converter::DATA_ARGUMENTS_KEY][$argumentName]
-                    = $this->argumentInterpreter->evaluate($argument);
-            }
-        }
-
-        return [
-            ManagerInterface::COMPONENT_ATTRIBUTES_KEY => $componentData[Converter::DATA_ATTRIBUTES_KEY],
-            ManagerInterface::COMPONENT_ARGUMENTS_KEY => $componentData[Converter::DATA_ARGUMENTS_KEY],
-        ];
-    }
-
-    /**
-     * Get UIReader and collect base files configuration
-     *
-     * @param string $name
-     * @return UiReaderInterface
-     */
-    public function getReader($name)
-    {
-        if (!isset($this->uiReader[$name])) {
-            $this->domMerger->unsetDom();
-            $this->uiReader[$name] =  $this->readerFactory->create(
-                [
-                    'fileCollector' => $this->aggregatedFileCollectorFactory->create(
-                        ['searchPattern' => sprintf(ManagerInterface::SEARCH_PATTERN, $name)]
-                    ),
-                    'domMerger' => $this->domMerger
-                ]
-            );
-        }
-
-        return $this->uiReader[$name];
-    }
-
-    /**
-     * Initialize the new component data
-     *
-     * @param string $name
-     * @return void
-     */
-    protected function prepare($name)
-    {
-        $componentData = $this->getReader($name)->read();
-        $componentsPool = reset($componentData);
-        $componentsPool = reset($componentsPool);
-        $componentsPool[Converter::DATA_ATTRIBUTES_KEY] = array_merge(
-            ['name' => $name],
-            $componentsPool[Converter::DATA_ATTRIBUTES_KEY]
-        );
-        $components = $this->createDataForComponent(key($componentData), [$componentsPool]);
-        $this->addComponentIntoPool($name, reset($components));
-    }
-
-    /**
-     * Create data for component instance
-     *
-     * @param string $name
-     * @param array $componentsPool
-     * @return array
-     */
-    protected function createDataForComponent($name, array $componentsPool)
-    {
-        $createdComponents = [];
-        $rootComponent = $this->createRawComponentData($name, false);
-        foreach ($componentsPool as $key => $component) {
-            $resultConfiguration = [];
-            $resultConfiguration = [ManagerInterface::CHILDREN_KEY => []];
-            $instanceName = $this->createName($component, $key, $name);
-            $resultConfiguration[ManagerInterface::COMPONENT_ARGUMENTS_KEY] = $this->mergeArguments(
-                $component,
-                $rootComponent
-            );
-            unset($component[Converter::DATA_ARGUMENTS_KEY]);
-            $resultConfiguration[ManagerInterface::COMPONENT_ATTRIBUTES_KEY] = $this->mergeAttributes(
-                $component,
-                $rootComponent
-            );
-            unset($component[Converter::DATA_ATTRIBUTES_KEY]);
-
-            // Create inner components
-            $children = [];
-            foreach ($component as $subComponentName => $subComponent) {
-                if (is_array($subComponent)) {
-                    $children[] = $this->createDataForComponent($subComponentName, $subComponent);
-                }
-            }
-
-            // phpcs:ignore Magento2.Performance.ForeachArrayMerge
-            $resultConfiguration[ManagerInterface::CHILDREN_KEY] = array_merge([], ...$children);
-
-            $createdComponents[$instanceName] = $resultConfiguration;
-        }
-
-        return $createdComponents;
-    }
-
-    /**
-     * Add a component into pool
-     *
-     * @param string $instanceName
-     * @param array $configuration
-     * @return void
-     */
-    protected function addComponentIntoPool($instanceName, array $configuration)
-    {
-        $this->componentsPool->offsetSet($instanceName, $configuration);
-    }
-
-    /**
-     * Merge component arguments
-     *
-     * @param array $componentData
-     * @param array $rootComponentData
-     * @return array
-     */
-    protected function mergeArguments(array $componentData, array $rootComponentData)
-    {
-        $baseArguments = isset($rootComponentData[ManagerInterface::COMPONENT_ARGUMENTS_KEY])
-            ? $rootComponentData[ManagerInterface::COMPONENT_ARGUMENTS_KEY]
-            : [];
-        $componentArguments = isset($componentData[Converter::DATA_ARGUMENTS_KEY])
-            ? $componentData[Converter::DATA_ARGUMENTS_KEY]
-            : [];
-
-        return array_replace_recursive($baseArguments, $componentArguments);
-    }
-
-    /**
-     * Merge component attributes
-     *
-     * @param array $componentData
-     * @param array $rootComponentData
-     * @return array
-     */
-    protected function mergeAttributes(array $componentData, array $rootComponentData)
-    {
-        $baseAttributes = isset($rootComponentData[ManagerInterface::COMPONENT_ATTRIBUTES_KEY])
-            ? $rootComponentData[ManagerInterface::COMPONENT_ATTRIBUTES_KEY]
-            : [];
-        $componentAttributes = isset($componentData[Converter::DATA_ATTRIBUTES_KEY])
-            ? $componentData[Converter::DATA_ATTRIBUTES_KEY]
-            : [];
-        unset($componentAttributes['noNamespaceSchemaLocation']);
-
-        return array_replace_recursive($baseAttributes, $componentAttributes);
-    }
-
-    /**
-     * Create name component instance
-     *
-     * @param array $componentData
-     * @param string|int $key
-     * @param string $componentName
-     * @return string
-     */
-    protected function createName(array $componentData, $key, $componentName)
-    {
-        return $componentData[Converter::DATA_ATTRIBUTES_KEY][Converter::NAME_ATTRIBUTE_KEY]
-            ?? sprintf(ManagerInterface::ANONYMOUS_TEMPLATE, $componentName, $key);
-    }
-}
diff --git a/app/code/Magento/Ui/Test/Unit/Model/ManagerTest.php b/app/code/Magento/Ui/Test/Unit/Model/ManagerTest.php
deleted file mode 100644
index 5a4e9c72867d8..0000000000000
--- a/app/code/Magento/Ui/Test/Unit/Model/ManagerTest.php
+++ /dev/null
@@ -1,355 +0,0 @@
-<?php
-/**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
-declare(strict_types=1);
-
-namespace Magento\Ui\Test\Unit\Model;
-
-use Magento\Framework\Config\CacheInterface;
-use Magento\Framework\Data\Argument\InterpreterInterface;
-use Magento\Framework\Exception\LocalizedException;
-use Magento\Framework\Serialize\SerializerInterface;
-use Magento\Framework\View\Element\UiComponent\ArrayObjectFactory;
-use Magento\Framework\View\Element\UiComponent\Config\Converter;
-use Magento\Framework\View\Element\UiComponent\Config\DomMergerInterface;
-use Magento\Framework\View\Element\UiComponent\Config\FileCollector\AggregatedFileCollector;
-use Magento\Framework\View\Element\UiComponent\Config\FileCollector\AggregatedFileCollectorFactory;
-use Magento\Framework\View\Element\UiComponent\Config\ManagerInterface;
-use Magento\Framework\View\Element\UiComponent\Config\Provider\Component\Definition as ComponentDefinition;
-use Magento\Framework\View\Element\UiComponent\Config\ReaderFactory;
-use Magento\Framework\View\Element\UiComponent\Config\UiReaderInterface;
-use Magento\Ui\Model\Manager;
-use PHPUnit\Framework\MockObject\MockObject;
-use PHPUnit\Framework\TestCase;
-
-/**
- * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- */
-class ManagerTest extends TestCase
-{
-    /**
-     * @var Manager
-     */
-    protected $manager;
-
-    /**
-     * @var ComponentDefinition|MockObject
-     */
-    protected $componentConfigProvider;
-
-    /**
-     * @var CacheInterface|MockObject
-     */
-    protected $cacheConfig;
-
-    /**
-     * @var InterpreterInterface|MockObject
-     */
-    protected $argumentInterpreter;
-
-    /**
-     * @var UiReaderInterface|MockObject
-     */
-    protected $uiReader;
-
-    /**
-     * @var ReaderFactory|MockObject
-     */
-    protected $readerFactory;
-
-    /**
-     * @var AggregatedFileCollector|MockObject
-     */
-    protected $aggregatedFileCollector;
-
-    /**
-     * @var DomMergerInterface|MockObject
-     */
-    protected $domMerger;
-
-    /**
-     * @var ArrayObjectFactory|MockObject
-     */
-    protected $arrayObjectFactory;
-
-    /**
-     * @var AggregatedFileCollectorFactory|MockObject
-     */
-    protected $aggregatedFileCollectorFactory;
-
-    /** @var SerializerInterface|MockObject */
-    private $serializer;
-
-    protected function setUp(): void
-    {
-        $this->componentConfigProvider = $this->getMockBuilder(
-            \Magento\Framework\View\Element\UiComponent\Config\Provider\Component\Definition::class
-        )->disableOriginalConstructor()
-            ->getMock();
-        $this->domMerger = $this->getMockBuilder(
-            DomMergerInterface::class
-        )->getMockForAbstractClass();
-        $this->aggregatedFileCollector = $this->getMockBuilder(
-            AggregatedFileCollector::class
-        )->disableOriginalConstructor()
-            ->getMock();
-        $this->aggregatedFileCollectorFactory = $this->getMockBuilder(
-            AggregatedFileCollectorFactory::class
-        )->disableOriginalConstructor()
-            ->getMock();
-        $this->arrayObjectFactory = $this->getMockBuilder(
-            ArrayObjectFactory::class
-        )->disableOriginalConstructor()
-            ->getMock();
-        $this->arrayObjectFactory->expects($this->at(0))
-            ->method('create')
-            ->willReturn(new \ArrayObject([]));
-        $this->uiReader = $this->getMockBuilder(
-            UiReaderInterface::class
-        )->getMockForAbstractClass();
-        $this->readerFactory = $this->getMockBuilder(
-            ReaderFactory::class
-        )->disableOriginalConstructor()
-            ->getMock();
-        $this->cacheConfig = $this->getMockBuilder(CacheInterface::class)
-            ->getMockForAbstractClass();
-        $this->argumentInterpreter = $this->getMockBuilder(InterpreterInterface::class)
-            ->getMockForAbstractClass();
-        $this->serializer = $this->getMockBuilder(
-            SerializerInterface::class
-        )->getMockForAbstractClass();
-        $this->serializer->expects($this->any())
-            ->method('serialize')
-            ->willReturnCallback(
-                function ($value) {
-                    return json_encode($value);
-                }
-            );
-        $this->serializer->expects($this->any())
-            ->method('unserialize')
-            ->willReturnCallback(
-                function ($value) {
-                    return json_decode($value, true);
-                }
-            );
-
-        $this->manager = new Manager(
-            $this->componentConfigProvider,
-            $this->domMerger,
-            $this->readerFactory,
-            $this->arrayObjectFactory,
-            $this->aggregatedFileCollectorFactory,
-            $this->cacheConfig,
-            $this->argumentInterpreter,
-            $this->serializer
-        );
-    }
-
-    public function testGetReader()
-    {
-        $this->readerFactory->expects($this->once())
-            ->method('create')
-            ->with(['fileCollector' => $this->aggregatedFileCollector, 'domMerger' => $this->domMerger])
-            ->willReturn($this->uiReader);
-        $this->aggregatedFileCollectorFactory->expects($this->once())
-            ->method('create')
-            ->willReturn($this->aggregatedFileCollector);
-        $this->assertEquals($this->uiReader, $this->manager->getReader('some_name'));
-    }
-
-    public function testPrepareDataWithoutName()
-    {
-        $this->expectException(LocalizedException::class);
-        $this->expectExceptionMessage(
-            (string)__('The "" UI component element name is invalid. Verify the name and try again.')
-        );
-        $this->manager->prepareData(null);
-    }
-
-    /**
-     * @dataProvider getComponentData()
-     */
-    public function testPrepareGetData($componentName, $componentData, $isCached, $readerData, $expectedResult)
-    {
-        $this->readerFactory->expects($this->any())
-            ->method('create')
-            ->with(['fileCollector' => $this->aggregatedFileCollector, 'domMerger' => $this->domMerger])
-            ->willReturn($this->uiReader);
-        $this->aggregatedFileCollectorFactory->expects($this->any())
-            ->method('create')
-            ->willReturn($this->aggregatedFileCollector);
-        $this->argumentInterpreter->expects($this->any())
-            ->method('evaluate')
-            ->willReturnCallback(function ($argument) {
-                return ['argument' => $argument['value']];
-            });
-        $this->arrayObjectFactory->expects($this->any())
-            ->method('create')
-            ->willReturn($componentData);
-        $this->cacheConfig->expects($this->any())
-            ->method('load')
-            ->with(Manager::CACHE_ID . '_' . $componentName)
-            ->willReturn($isCached);
-
-        $this->uiReader->expects($this->any())
-            ->method('read')
-            ->willReturn($readerData);
-        $this->assertEquals(
-            $expectedResult,
-            $this->manager->prepareData($componentName)->getData($componentName)
-        );
-    }
-
-    /**
-     * @return array
-     */
-    public function getComponentData()
-    {
-        $cachedData = new \ArrayObject(
-            ['test_component1' => [
-                ManagerInterface::COMPONENT_ARGUMENTS_KEY => ['argument_name1' => ['value' => 'value1']],
-                ManagerInterface::CHILDREN_KEY => [
-                    'custom' => [
-                        ManagerInterface::COMPONENT_ARGUMENTS_KEY => [
-                            'custom_name1' => ['value' => 'custom_value1']
-                        ],
-                        ManagerInterface::CHILDREN_KEY => [],
-                    ],
-                ],
-            ]
-            ]
-        );
-
-        return [
-            [
-                'test_component1',
-                new \ArrayObject(),
-                json_encode($cachedData->getArrayCopy()),
-                [],
-                [
-                    'test_component1' => [
-                        ManagerInterface::COMPONENT_ARGUMENTS_KEY => ['argument_name1' => ['argument' => 'value1']],
-                        ManagerInterface::CHILDREN_KEY => [
-                            'custom' => [
-                                ManagerInterface::COMPONENT_ARGUMENTS_KEY => [
-                                    'custom_name1' => ['argument' => 'custom_value1']
-                                ],
-                                ManagerInterface::CHILDREN_KEY => [],
-                            ]
-                        ]
-                    ],
-                ],
-            ],
-            [
-                'test_component2',
-                new \ArrayObject(
-                    ['test_component2' => [
-                        ManagerInterface::COMPONENT_ARGUMENTS_KEY => ['argument_name2' => ['value' => 'value2']],
-                        ManagerInterface::CHILDREN_KEY => [
-                            'test_component21' => [
-                                ManagerInterface::COMPONENT_ARGUMENTS_KEY => [
-                                    'argument_name21' => ['value' => 'value21']
-                                ],
-                                ManagerInterface::CHILDREN_KEY => [],
-                            ],
-                        ],
-                    ]
-                    ]
-                ),
-                false,
-                ['componentGroup' => [0 => [
-                    Converter::DATA_ARGUMENTS_KEY => ['argument_name2' => ['value' => 'value2']],
-                    Converter::DATA_ATTRIBUTES_KEY => ['name' => 'attribute_name2'],
-                    'test_component21' => [0 => [
-                        Converter::DATA_ARGUMENTS_KEY => ['argument_name21' => ['value' => 'value21']],
-                        Converter::DATA_ATTRIBUTES_KEY => ['name' => 'attribute_name21'],
-                    ]
-                    ],
-                ]]],
-                [
-                    'test_component2' => [
-                        ManagerInterface::COMPONENT_ARGUMENTS_KEY => ['argument_name2' => ['argument' => 'value2']],
-                        ManagerInterface::COMPONENT_ATTRIBUTES_KEY => ['name' => 'attribute_name2'],
-                        ManagerInterface::CHILDREN_KEY => [
-                            'attribute_name21' => [
-                                ManagerInterface::COMPONENT_ARGUMENTS_KEY => [
-                                    'argument_name21' => ['argument' => 'value21']
-                                ],
-                                ManagerInterface::COMPONENT_ATTRIBUTES_KEY => ['name' => 'attribute_name21'],
-                                ManagerInterface::CHILDREN_KEY => [],
-                            ],
-                        ],
-                    ],
-                ],
-            ],
-        ];
-    }
-
-    /**
-     * @dataProvider getComponentDataProvider()
-     */
-    public function testCreateRawComponentData($componentName, $configData, $componentData, $needEvaluate)
-    {
-        $this->componentConfigProvider->expects($this->any())
-            ->method('getComponentData')
-            ->willReturn($configData);
-        if ($needEvaluate === true) {
-            $this->argumentInterpreter->expects($this->once())
-                ->method('evaluate')
-                ->willReturnCallback(function ($argument) {
-                    return ['argument' => $argument['value']];
-                });
-        } else {
-            $this->argumentInterpreter->expects($this->never())->method('evaluate');
-        }
-        $this->assertEquals($componentData, $this->manager->createRawComponentData($componentName, $needEvaluate));
-    }
-
-    /**
-     * @return array
-     */
-    public function getComponentDataProvider()
-    {
-        return [
-            [
-                'test_component1',
-                [
-                    Converter::DATA_ATTRIBUTES_KEY => ['name' => 'attribute_name1'],
-                ],
-                [
-                    ManagerInterface::COMPONENT_ATTRIBUTES_KEY => ['name' => 'attribute_name1'],
-                    ManagerInterface::COMPONENT_ARGUMENTS_KEY => [],
-
-                ],
-                false,
-            ],
-            [
-                'test_component2',
-                [
-                    Converter::DATA_ARGUMENTS_KEY => ['argument_name2' => ['value' => 'value2']],
-                ],
-                [
-                    ManagerInterface::COMPONENT_ATTRIBUTES_KEY => [],
-                    ManagerInterface::COMPONENT_ARGUMENTS_KEY => ['argument_name2' => ['value' => 'value2']],
-
-                ],
-                false,
-            ],
-            [
-                'test_component3',
-                [
-                    Converter::DATA_ATTRIBUTES_KEY => ['name' => 'attribute_name3'],
-                    Converter::DATA_ARGUMENTS_KEY => ['argument_name3' => ['value' => 'value3']],
-                ],
-                [
-                    ManagerInterface::COMPONENT_ATTRIBUTES_KEY => ['name' => 'attribute_name3'],
-                    ManagerInterface::COMPONENT_ARGUMENTS_KEY => ['argument_name3' => ['argument' => 'value3']],
-
-                ],
-                true,
-            ],
-        ];
-    }
-}
diff --git a/app/code/Magento/Ui/etc/di.xml b/app/code/Magento/Ui/etc/di.xml
index b0cef3b90d431..eda0f2f4f0ca8 100644
--- a/app/code/Magento/Ui/etc/di.xml
+++ b/app/code/Magento/Ui/etc/di.xml
@@ -10,7 +10,6 @@
     <preference for="Magento\Framework\View\Element\UiComponent\Control\ActionPoolInterface" type="Magento\Ui\Component\Control\ActionPool" />
     <preference for="Magento\Framework\Data\Argument\InterpreterInterface" type="Magento\Framework\Data\Argument\Interpreter\Composite" />
     <preference for="Magento\Framework\Config\ConverterInterface" type="Magento\Framework\View\Element\UiComponent\Config\Converter" />
-    <preference for="Magento\Framework\View\Element\UiComponent\Config\ManagerInterface" type="Magento\Ui\Model\Manager" />
     <preference for="Magento\Framework\View\Element\UiComponent\ContextInterface" type="Magento\Framework\View\Element\UiComponent\Context" />
     <preference for="Magento\Framework\View\Element\UiComponent\LayoutInterface" type="Magento\Framework\View\Layout\Generic"/>
     <preference for="Magento\Authorization\Model\UserContextInterface" type="Magento\Authorization\Model\CompositeUserContext"/>
@@ -144,11 +143,6 @@
             <argument name="schemaLocator" xsi:type="object">Magento\Ui\Config\Reader\SchemaLocator</argument>
         </arguments>
     </type>
-    <type name="Magento\Ui\Model\Manager">
-        <arguments>
-            <argument name="domMerger" xsi:type="object">uiConfigurationDomMerger</argument>
-        </arguments>
-    </type>
     <virtualType name="uiTemplateDomMerger" type="Magento\Framework\View\Element\UiComponent\Config\DomMerger">
         <arguments>
             <argument name="schema" xsi:type="string">urn:magento:module:Magento_Ui:etc/ui_template.xsd</argument>
@@ -358,7 +352,6 @@
             </argument>
             <argument name="configFactory" xsi:type="object">uiComponentConfigFactory</argument>
             <argument name="definitionData" xsi:type="object">Magento\Ui\Config\Reader\Definition\Data</argument>
-            <argument name="componentManager" xsi:type="object">Magento\Ui\Model\Manager\Proxy</argument>
         </arguments>
     </type>
     <type name="Magento\Ui\Config\Argument\Parser\ArrayType">
diff --git a/lib/internal/Magento/Framework/View/Element/UiComponent/Config/ManagerInterface.php b/lib/internal/Magento/Framework/View/Element/UiComponent/Config/ManagerInterface.php
deleted file mode 100644
index 525e9ecb52b20..0000000000000
--- a/lib/internal/Magento/Framework/View/Element/UiComponent/Config/ManagerInterface.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-/**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
-namespace Magento\Framework\View\Element\UiComponent\Config;
-
-/**
- * Interface ManagerInterface
- * @deprecated 101.0.0
- */
-interface ManagerInterface
-{
-    /**
-     * Search pattern
-     */
-    const SEARCH_PATTERN = '%s.xml';
-
-    /**
-     * The anonymous template name
-     */
-    const ANONYMOUS_TEMPLATE = 'anonymous_%s_component_%d';
-
-    /**
-     * The key arguments in the data component
-     */
-    const COMPONENT_ARGUMENTS_KEY = 'arguments';
-
-    /**
-     * The key attributes in the data component
-     */
-    const COMPONENT_ATTRIBUTES_KEY = 'attributes';
-
-    /**
-     * The array key sub components
-     */
-    const CHILDREN_KEY = 'children';
-
-    /**
-     * Prepare the initialization data of UI components
-     *
-     * @param string $name
-     * @return ManagerInterface
-     * @throws \Magento\Framework\Exception\LocalizedException
-     */
-    public function prepareData($name);
-
-    /**
-     * Get component data
-     *
-     * @param string $name
-     * @return array
-     */
-    public function getData($name);
-
-    /**
-     * To create the raw  data components
-     *
-     * @param string $component
-     * @return array
-     */
-    public function createRawComponentData($component);
-
-    /**
-     * Get UIReader and collect base files configuration
-     *
-     * @param string $name
-     * @return UiReaderInterface
-     */
-    public function getReader($name);
-}
diff --git a/lib/internal/Magento/Framework/View/Element/UiComponentFactory.php b/lib/internal/Magento/Framework/View/Element/UiComponentFactory.php
index 5e1bc93b9c033..9abde2b96087a 100644
--- a/lib/internal/Magento/Framework/View/Element/UiComponentFactory.php
+++ b/lib/internal/Magento/Framework/View/Element/UiComponentFactory.php
@@ -8,14 +8,13 @@
 
 use Magento\Framework\Config\DataInterface;
 use Magento\Framework\Config\DataInterfaceFactory;
+use Magento\Framework\Data\Argument\InterpreterInterface;
 use Magento\Framework\DataObject;
 use Magento\Framework\Exception\LocalizedException;
 use Magento\Framework\ObjectManagerInterface;
-use Magento\Framework\Data\Argument\InterpreterInterface;
-use Magento\Framework\View\Element\UiComponent\ContextInterface;
-use Magento\Framework\View\Element\UiComponent\Config\ManagerInterface;
-use Magento\Framework\View\Element\UiComponent\ContextFactory;
 use Magento\Framework\Phrase;
+use Magento\Framework\View\Element\UiComponent\ContextFactory;
+use Magento\Framework\View\Element\UiComponent\ContextInterface;
 use Magento\Framework\View\Element\UiComponent\DataProvider\DataProviderInterface;
 use Magento\Framework\View\Element\UiComponent\DataProvider\Sanitizer;
 use Magento\Framework\View\Element\UiComponent\Factory\ComponentFactoryInterface;
@@ -29,6 +28,16 @@
  */
 class UiComponentFactory extends DataObject
 {
+    /**
+     * The key arguments in the data component
+     */
+    const COMPONENT_ARGUMENTS_KEY = 'arguments';
+
+    /**
+     * The key attributes in the data component
+     */
+    const COMPONENT_ATTRIBUTES_KEY = 'attributes';
+
     /**
      * Object manager
      *
@@ -48,14 +57,6 @@ class UiComponentFactory extends DataObject
      */
     protected $contextFactory;
 
-    /**
-     * UI component manager
-     *
-     * @deprecated 101.0.0
-     * @var ManagerInterface
-     */
-    protected $componentManager;
-
     /**
      * @var ComponentFactoryInterface[]
      */
@@ -78,7 +79,6 @@ class UiComponentFactory extends DataObject
 
     /**
      * @param ObjectManagerInterface $objectManager
-     * @param ManagerInterface $componentManager
      * @param InterpreterInterface $argumentInterpreter
      * @param ContextFactory $contextFactory
      * @param array $data
@@ -89,7 +89,6 @@ class UiComponentFactory extends DataObject
      */
     public function __construct(
         ObjectManagerInterface $objectManager,
-        ManagerInterface $componentManager,
         InterpreterInterface $argumentInterpreter,
         ContextFactory $contextFactory,
         array $data = [],
@@ -99,7 +98,6 @@ public function __construct(
         ?Sanitizer $sanitizer = null
     ) {
         $this->objectManager = $objectManager;
-        $this->componentManager = $componentManager;
         $this->argumentInterpreter = $argumentInterpreter;
         $this->contextFactory = $contextFactory;
         $this->componentChildFactories = $componentChildFactories;
@@ -159,9 +157,9 @@ protected function createChildComponent(
         $components = array_filter($components);
         $componentArguments['components'] = $components;
 
-       /**
-        * Prevent passing ACL restricted blocks to htmlContent constructor
-        */
+        /**
+         * Prevent passing ACL restricted blocks to htmlContent constructor
+         */
         if (isset($componentArguments['block']) && !$componentArguments['block']) {
             return null;
         }
@@ -182,10 +180,10 @@ protected function createChildComponent(
      */
     protected function argumentsResolver($identifier, array $componentData)
     {
-        $attributes = $componentData[ManagerInterface::COMPONENT_ATTRIBUTES_KEY];
+        $attributes = $componentData[self::COMPONENT_ATTRIBUTES_KEY];
         $className = $attributes['class'];
         unset($attributes['class']);
-        $arguments = $componentData[ManagerInterface::COMPONENT_ARGUMENTS_KEY];
+        $arguments = $componentData[self::COMPONENT_ARGUMENTS_KEY];
 
         if (!isset($arguments['data'])) {
             $arguments['data'] = [];
@@ -298,7 +296,7 @@ protected function getBundleChildren(array $children = [])
             $rawComponentData = $this->definitionData->get($config['componentType']);
             list(, $componentArguments) = $this->argumentsResolver($identifier, $rawComponentData);
             $arguments = array_replace_recursive($componentArguments, ['data' => ['config' => $config]]);
-            $rawComponentData[ManagerInterface::COMPONENT_ARGUMENTS_KEY] = $arguments;
+            $rawComponentData[self::COMPONENT_ARGUMENTS_KEY] = $arguments;
 
             $bundleChildren[$identifier] = $rawComponentData;
             $bundleChildren[$identifier]['children'] = [];
@@ -414,7 +412,7 @@ protected function mergeMetadataItem(array $bundleComponents, array $metadata, $
                 );
                 list(, $componentArguments) = $this->argumentsResolver($name, $rawComponentData);
                 $arguments = array_replace_recursive($componentArguments, $data['arguments']);
-                $rawComponentData[ManagerInterface::COMPONENT_ARGUMENTS_KEY] = $arguments;
+                $rawComponentData[self::COMPONENT_ARGUMENTS_KEY] = $arguments;
 
                 $bundleComponents[$name] = $rawComponentData;
                 $bundleComponents[$name]['children'] = [];
diff --git a/lib/internal/Magento/Framework/View/Test/Unit/UiComponent/Factory/HtmlContentFactoryTest.php b/lib/internal/Magento/Framework/View/Test/Unit/UiComponent/Factory/HtmlContentFactoryTest.php
index 01272abe2f117..9f89dd4116424 100644
--- a/lib/internal/Magento/Framework/View/Test/Unit/UiComponent/Factory/HtmlContentFactoryTest.php
+++ b/lib/internal/Magento/Framework/View/Test/Unit/UiComponent/Factory/HtmlContentFactoryTest.php
@@ -8,9 +8,9 @@
 namespace Magento\Framework\View\Test\Unit\UiComponent\Factory;
 
 use Magento\Framework\View\Element\AbstractBlock;
-use Magento\Framework\View\Element\UiComponent\Config\ManagerInterface;
 use Magento\Framework\View\Element\UiComponent\ContextInterface;
 use Magento\Framework\View\Element\UiComponent\Factory\HtmlContentFactory;
+use Magento\Framework\View\Element\UiComponentFactory;
 use Magento\Framework\View\Layout;
 use PHPUnit\Framework\MockObject\MockObject;
 use PHPUnit\Framework\TestCase;
@@ -55,7 +55,7 @@ protected function setUp(): void
     public function testCreate()
     {
         $blockName = 'blockName';
-        $bundleComponents[ManagerInterface::COMPONENT_ARGUMENTS_KEY]['block']['name'] = $blockName;
+        $bundleComponents[UiComponentFactory::COMPONENT_ARGUMENTS_KEY]['block']['name'] = $blockName;
         $this->layout->expects($this->once())
             ->method('getBlock')
             ->with($blockName)
@@ -71,6 +71,6 @@ public function testCreate()
                 ]
             )
         );
-        $this->assertEquals($this->block, $bundleComponents[ManagerInterface::COMPONENT_ARGUMENTS_KEY]['block']);
+        $this->assertEquals($this->block, $bundleComponents[UiComponentFactory::COMPONENT_ARGUMENTS_KEY]['block']);
     }
 }

From 1b8a9f756ed0ea1293b5e985a88ece60a298a989 Mon Sep 17 00:00:00 2001
From: Medvediev <v.medvediev@atwix.com>
Date: Fri, 12 Feb 2021 14:46:27 +0200
Subject: [PATCH 09/11] 
 lib/internal/Magento/Framework/Session/SidResolverInterface has been removed.
 The Unused deprecated class
 lib/internal/Magento/Framework/Session/SidResolver that implements this
 interface has been removed

---
 app/code/Magento/Backend/Block/Context.php    |   3 -
 .../Backend/Block/Template/Context.php        |   3 -
 .../Magento/Backend/Block/Widget/Context.php  |   3 -
 .../Magento/Backend/Model/Auth/Session.php    |   3 -
 .../Magento/Backend/Model/Session/Quote.php   |   5 +-
 app/code/Magento/Backend/Model/Url.php        |   3 -
 .../Test/Unit/Model/Session/QuoteTest.php     |  13 --
 .../Magento/Catalog/Block/Product/Context.php |   4 -
 .../Magento/Catalog/Model/Product/Url.php     |   8 -
 .../Test/Unit/Model/Product/UrlTest.php       |  13 --
 app/code/Magento/Checkout/Model/Session.php   |   3 -
 app/code/Magento/Customer/Model/Session.php   |   3 -
 .../Magento/Store/App/Response/Redirect.php   |   9 --
 .../Store/Controller/Store/Redirect.php       |   3 -
 app/code/Magento/Store/Model/Store.php        |   9 --
 .../Unit/Controller/Store/RedirectTest.php    |  11 --
 .../Store/Test/Unit/Model/StoreTest.php       |   4 -
 app/code/Magento/Store/etc/di.xml             |   5 -
 app/etc/di.xml                                |   1 -
 .../Magento/Customer/Model/SessionTest.php    |  14 +-
 .../Framework/Session/SessionManagerTest.php  |  21 +--
 .../View/Element/AbstractBlockTest.php        |   8 +-
 .../Magento/Paypal/Controller/ExpressTest.php |   1 -
 .../Store/Controller/Store/RedirectTest.php   |   8 +-
 .../Magento/Store/Model/StoreTest.php         |  15 +-
 .../Framework/Session/SessionManager.php      |  10 --
 .../Magento/Framework/Session/SidResolver.php | 152 ------------------
 .../Session/SidResolverInterface.php          |  74 ---------
 .../Magento/Framework/Test/Unit/UrlTest.php   |  23 ---
 lib/internal/Magento/Framework/Url.php        |   8 -
 .../Framework/View/Element/AbstractBlock.php  |   9 --
 .../Framework/View/Element/Context.php        |  20 ---
 .../View/Element/Template/Context.php         |   3 -
 .../Test/Unit/Element/AbstractBlockTest.php   |  14 --
 34 files changed, 32 insertions(+), 454 deletions(-)
 delete mode 100644 lib/internal/Magento/Framework/Session/SidResolver.php
 delete mode 100644 lib/internal/Magento/Framework/Session/SidResolverInterface.php

diff --git a/app/code/Magento/Backend/Block/Context.php b/app/code/Magento/Backend/Block/Context.php
index d95a76abe2630..4522f778022d7 100644
--- a/app/code/Magento/Backend/Block/Context.php
+++ b/app/code/Magento/Backend/Block/Context.php
@@ -37,7 +37,6 @@ class Context extends \Magento\Framework\View\Element\Context
      * @param \Magento\Framework\App\CacheInterface $cache
      * @param \Magento\Framework\View\DesignInterface $design
      * @param \Magento\Framework\Session\SessionManagerInterface $session
-     * @param \Magento\Framework\Session\SidResolverInterface $sidResolver
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
      * @param \Magento\Framework\View\Asset\Repository $assetRepo
      * @param \Magento\Framework\View\ConfigInterface $viewConfig
@@ -60,7 +59,6 @@ public function __construct(
         \Magento\Framework\App\CacheInterface $cache,
         \Magento\Framework\View\DesignInterface $design,
         \Magento\Framework\Session\SessionManagerInterface $session,
-        \Magento\Framework\Session\SidResolverInterface $sidResolver,
         \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
         \Magento\Framework\View\Asset\Repository $assetRepo,
         \Magento\Framework\View\ConfigInterface $viewConfig,
@@ -82,7 +80,6 @@ public function __construct(
             $cache,
             $design,
             $session,
-            $sidResolver,
             $scopeConfig,
             $assetRepo,
             $viewConfig,
diff --git a/app/code/Magento/Backend/Block/Template/Context.php b/app/code/Magento/Backend/Block/Template/Context.php
index 6554df88a753c..5ae6ef038c62b 100644
--- a/app/code/Magento/Backend/Block/Template/Context.php
+++ b/app/code/Magento/Backend/Block/Template/Context.php
@@ -64,7 +64,6 @@ class Context extends \Magento\Framework\View\Element\Template\Context
      * @param \Magento\Framework\App\CacheInterface $cache
      * @param \Magento\Framework\View\DesignInterface $design
      * @param \Magento\Framework\Session\Generic $session
-     * @param \Magento\Framework\Session\SidResolverInterface $sidResolver
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
      * @param \Magento\Framework\View\Asset\Repository $assetRepo
      * @param \Magento\Framework\View\ConfigInterface $viewConfig
@@ -99,7 +98,6 @@ public function __construct(
         \Magento\Framework\App\CacheInterface $cache,
         \Magento\Framework\View\DesignInterface $design,
         \Magento\Framework\Session\Generic $session,
-        \Magento\Framework\Session\SidResolverInterface $sidResolver,
         \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
         \Magento\Framework\View\Asset\Repository $assetRepo,
         \Magento\Framework\View\ConfigInterface $viewConfig,
@@ -137,7 +135,6 @@ public function __construct(
             $cache,
             $design,
             $session,
-            $sidResolver,
             $scopeConfig,
             $assetRepo,
             $viewConfig,
diff --git a/app/code/Magento/Backend/Block/Widget/Context.php b/app/code/Magento/Backend/Block/Widget/Context.php
index 69374979b3fe5..1c98235e0fcbe 100644
--- a/app/code/Magento/Backend/Block/Widget/Context.php
+++ b/app/code/Magento/Backend/Block/Widget/Context.php
@@ -47,7 +47,6 @@ class Context extends \Magento\Backend\Block\Template\Context
      * @param \Magento\Framework\App\CacheInterface $cache
      * @param \Magento\Framework\View\DesignInterface $design
      * @param \Magento\Framework\Session\Generic $session
-     * @param \Magento\Framework\Session\SidResolverInterface $sidResolver
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
      * @param \Magento\Framework\View\Asset\Repository $assetRepo
      * @param \Magento\Framework\View\ConfigInterface $viewConfig
@@ -84,7 +83,6 @@ public function __construct(
         \Magento\Framework\App\CacheInterface $cache,
         \Magento\Framework\View\DesignInterface $design,
         \Magento\Framework\Session\Generic $session,
-        \Magento\Framework\Session\SidResolverInterface $sidResolver,
         \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
         \Magento\Framework\View\Asset\Repository $assetRepo,
         \Magento\Framework\View\ConfigInterface $viewConfig,
@@ -119,7 +117,6 @@ public function __construct(
             $cache,
             $design,
             $session,
-            $sidResolver,
             $scopeConfig,
             $assetRepo,
             $viewConfig,
diff --git a/app/code/Magento/Backend/Model/Auth/Session.php b/app/code/Magento/Backend/Model/Auth/Session.php
index b52796d75659b..c1450ef954923 100644
--- a/app/code/Magento/Backend/Model/Auth/Session.php
+++ b/app/code/Magento/Backend/Model/Auth/Session.php
@@ -67,7 +67,6 @@ class Session extends \Magento\Framework\Session\SessionManager implements \Mage
 
     /**
      * @param \Magento\Framework\App\Request\Http $request
-     * @param \Magento\Framework\Session\SidResolverInterface $sidResolver
      * @param \Magento\Framework\Session\Config\ConfigInterface $sessionConfig
      * @param \Magento\Framework\Session\SaveHandlerInterface $saveHandler
      * @param \Magento\Framework\Session\ValidatorInterface $validator
@@ -84,7 +83,6 @@ class Session extends \Magento\Framework\Session\SessionManager implements \Mage
      */
     public function __construct(
         \Magento\Framework\App\Request\Http $request,
-        \Magento\Framework\Session\SidResolverInterface $sidResolver,
         \Magento\Framework\Session\Config\ConfigInterface $sessionConfig,
         \Magento\Framework\Session\SaveHandlerInterface $saveHandler,
         \Magento\Framework\Session\ValidatorInterface $validator,
@@ -103,7 +101,6 @@ public function __construct(
         $this->messageManager = $messageManager ?? ObjectManager::getInstance()->get(ManagerInterface::class);
         parent::__construct(
             $request,
-            $sidResolver,
             $sessionConfig,
             $saveHandler,
             $validator,
diff --git a/app/code/Magento/Backend/Model/Session/Quote.php b/app/code/Magento/Backend/Model/Session/Quote.php
index ed0312874565c..bae983c28e403 100644
--- a/app/code/Magento/Backend/Model/Session/Quote.php
+++ b/app/code/Magento/Backend/Model/Session/Quote.php
@@ -84,7 +84,6 @@ class Quote extends \Magento\Framework\Session\SessionManager
 
     /**
      * @param \Magento\Framework\App\Request\Http $request
-     * @param \Magento\Framework\Session\SidResolverInterface $sidResolver
      * @param \Magento\Framework\Session\Config\ConfigInterface $sessionConfig
      * @param \Magento\Framework\Session\SaveHandlerInterface $saveHandler
      * @param \Magento\Framework\Session\ValidatorInterface $validator
@@ -102,7 +101,6 @@ class Quote extends \Magento\Framework\Session\SessionManager
      */
     public function __construct(
         \Magento\Framework\App\Request\Http $request,
-        \Magento\Framework\Session\SidResolverInterface $sidResolver,
         \Magento\Framework\Session\Config\ConfigInterface $sessionConfig,
         \Magento\Framework\Session\SaveHandlerInterface $saveHandler,
         \Magento\Framework\Session\ValidatorInterface $validator,
@@ -125,7 +123,6 @@ public function __construct(
         $this->quoteFactory = $quoteFactory;
         parent::__construct(
             $request,
-            $sidResolver,
             $sessionConfig,
             $saveHandler,
             $validator,
@@ -154,7 +151,7 @@ public function getQuote()
                     $this->_quote->setCustomerGroupId($customerGroupId);
                     $this->_quote->setIsActive(false);
                     $this->_quote->setStoreId($this->getStoreId());
-                    
+
                     $this->quoteRepository->save($this->_quote);
                     $this->setQuoteId($this->_quote->getId());
                     $this->_quote = $this->quoteRepository->get($this->getQuoteId(), [$this->getStoreId()]);
diff --git a/app/code/Magento/Backend/Model/Url.php b/app/code/Magento/Backend/Model/Url.php
index 8948961be8875..3c18caa0194fa 100644
--- a/app/code/Magento/Backend/Model/Url.php
+++ b/app/code/Magento/Backend/Model/Url.php
@@ -90,7 +90,6 @@ class Url extends \Magento\Framework\Url implements \Magento\Backend\Model\UrlIn
      * @param \Magento\Framework\Url\SecurityInfoInterface $urlSecurityInfo
      * @param \Magento\Framework\Url\ScopeResolverInterface $scopeResolver
      * @param \Magento\Framework\Session\Generic $session
-     * @param \Magento\Framework\Session\SidResolverInterface $sidResolver
      * @param \Magento\Framework\Url\RouteParamsResolverFactory $routeParamsResolverFactory
      * @param \Magento\Framework\Url\QueryParamsResolverInterface $queryParamsResolver
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
@@ -114,7 +113,6 @@ public function __construct(
         \Magento\Framework\Url\SecurityInfoInterface $urlSecurityInfo,
         \Magento\Framework\Url\ScopeResolverInterface $scopeResolver,
         \Magento\Framework\Session\Generic $session,
-        \Magento\Framework\Session\SidResolverInterface $sidResolver,
         \Magento\Framework\Url\RouteParamsResolverFactory $routeParamsResolverFactory,
         \Magento\Framework\Url\QueryParamsResolverInterface $queryParamsResolver,
         \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
@@ -139,7 +137,6 @@ public function __construct(
             $urlSecurityInfo,
             $scopeResolver,
             $session,
-            $sidResolver,
             $routeParamsResolverFactory,
             $queryParamsResolver,
             $scopeConfig,
diff --git a/app/code/Magento/Backend/Test/Unit/Model/Session/QuoteTest.php b/app/code/Magento/Backend/Test/Unit/Model/Session/QuoteTest.php
index 52a2a3fd2e8c0..62575f2e5e714 100644
--- a/app/code/Magento/Backend/Test/Unit/Model/Session/QuoteTest.php
+++ b/app/code/Magento/Backend/Test/Unit/Model/Session/QuoteTest.php
@@ -17,7 +17,6 @@
 use Magento\Framework\App\State;
 use Magento\Framework\Session\Config\ConfigInterface;
 use Magento\Framework\Session\SaveHandlerInterface;
-use Magento\Framework\Session\SidResolverInterface;
 use Magento\Framework\Session\Storage;
 use Magento\Framework\Session\StorageInterface;
 use Magento\Framework\Session\ValidatorInterface;
@@ -83,11 +82,6 @@ class QuoteTest extends TestCase
      */
     protected $sessionConfigMock;
 
-    /**
-     * @var SidResolverInterface|MockObject
-     */
-    protected $sidResolverMock;
-
     /**
      * @var Http|MockObject
      */
@@ -163,12 +157,6 @@ protected function setUp(): void
         $this->quoteRepositoryMock = $this->getMockForAbstractClass(CartRepositoryInterface::class);
 
         $this->requestMock = $this->createMock(Http::class);
-        $this->sidResolverMock = $this->getMockForAbstractClass(
-            SidResolverInterface::class,
-            [],
-            '',
-            false
-        );
         $this->sessionConfigMock = $this->getMockForAbstractClass(
             ConfigInterface::class,
             [],
@@ -208,7 +196,6 @@ protected function setUp(): void
             ->setConstructorArgs(
                 [
                     'request' => $this->requestMock,
-                    'sidResolver' => $this->sidResolverMock,
                     'sessionConfig' => $this->sessionConfigMock,
                     'saveHandler' => $this->saveHandlerMock,
                     'validator' => $this->validatorMock,
diff --git a/app/code/Magento/Catalog/Block/Product/Context.php b/app/code/Magento/Catalog/Block/Product/Context.php
index 36a3214cab079..705ab60619c96 100644
--- a/app/code/Magento/Catalog/Block/Product/Context.php
+++ b/app/code/Magento/Catalog/Block/Product/Context.php
@@ -95,8 +95,6 @@ class Context extends \Magento\Framework\View\Element\Template\Context
      * @param \Magento\Framework\UrlInterface $urlBuilder
      * @param \Magento\Framework\App\CacheInterface $cache
      * @param \Magento\Framework\View\DesignInterface $design
-     * @param \Magento\Framework\Session\SessionManagerInterface $session
-     * @param \Magento\Framework\Session\SidResolverInterface $sidResolver
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
      * @param \Magento\Framework\View\Asset\Repository $assetRepo
      * @param \Magento\Framework\View\ConfigInterface $viewConfig
@@ -138,7 +136,6 @@ public function __construct(
         \Magento\Framework\App\CacheInterface $cache,
         \Magento\Framework\View\DesignInterface $design,
         \Magento\Framework\Session\SessionManagerInterface $session,
-        \Magento\Framework\Session\SidResolverInterface $sidResolver,
         \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
         \Magento\Framework\View\Asset\Repository $assetRepo,
         \Magento\Framework\View\ConfigInterface $viewConfig,
@@ -190,7 +187,6 @@ public function __construct(
             $cache,
             $design,
             $session,
-            $sidResolver,
             $scopeConfig,
             $assetRepo,
             $viewConfig,
diff --git a/app/code/Magento/Catalog/Model/Product/Url.php b/app/code/Magento/Catalog/Model/Product/Url.php
index 8867cc7a690c1..33835ee042990 100644
--- a/app/code/Magento/Catalog/Model/Product/Url.php
+++ b/app/code/Magento/Catalog/Model/Product/Url.php
@@ -36,11 +36,6 @@ class Url extends \Magento\Framework\DataObject
      */
     protected $storeManager;
 
-    /**
-     * @var \Magento\Framework\Session\SidResolverInterface
-     */
-    protected $sidResolver;
-
     /**
      * @var \Magento\UrlRewrite\Model\UrlFinderInterface
      */
@@ -55,7 +50,6 @@ class Url extends \Magento\Framework\DataObject
      * @param \Magento\Framework\UrlFactory $urlFactory
      * @param \Magento\Store\Model\StoreManagerInterface $storeManager
      * @param \Magento\Framework\Filter\FilterManager $filter
-     * @param \Magento\Framework\Session\SidResolverInterface $sidResolver
      * @param UrlFinderInterface $urlFinder
      * @param array $data
      * @param ScopeConfigInterface|null $scopeConfig
@@ -64,7 +58,6 @@ public function __construct(
         \Magento\Framework\UrlFactory $urlFactory,
         \Magento\Store\Model\StoreManagerInterface $storeManager,
         \Magento\Framework\Filter\FilterManager $filter,
-        \Magento\Framework\Session\SidResolverInterface $sidResolver,
         UrlFinderInterface $urlFinder,
         array $data = [],
         ScopeConfigInterface $scopeConfig = null
@@ -73,7 +66,6 @@ public function __construct(
         $this->urlFactory = $urlFactory;
         $this->storeManager = $storeManager;
         $this->filter = $filter;
-        $this->sidResolver = $sidResolver;
         $this->urlFinder = $urlFinder;
         $this->scopeConfig = $scopeConfig ?:
             \Magento\Framework\App\ObjectManager::getInstance()->get(ScopeConfigInterface::class);
diff --git a/app/code/Magento/Catalog/Test/Unit/Model/Product/UrlTest.php b/app/code/Magento/Catalog/Test/Unit/Model/Product/UrlTest.php
index 227ee5739ba68..ebf1439ff74ed 100644
--- a/app/code/Magento/Catalog/Test/Unit/Model/Product/UrlTest.php
+++ b/app/code/Magento/Catalog/Test/Unit/Model/Product/UrlTest.php
@@ -12,7 +12,6 @@
 use Magento\Catalog\Model\Product\Url;
 use Magento\Catalog\Model\Product\Url as ProductUrl;
 use Magento\Framework\Filter\FilterManager;
-use Magento\Framework\Session\SidResolverInterface;
 use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
 use Magento\Framework\UrlFactory;
 use Magento\Store\Model\Store;
@@ -48,11 +47,6 @@ class UrlTest extends TestCase
      */
     protected $url;
 
-    /**
-     * @var SidResolverInterface|MockObject
-     */
-    protected $sidResolver;
-
     protected function setUp(): void
     {
         $this->filter = $this->getMockBuilder(
@@ -74,8 +68,6 @@ protected function setUp(): void
                 ['setScope', 'getUrl']
             )->getMock();
 
-        $this->sidResolver = $this->getMockForAbstractClass(SidResolverInterface::class);
-
         $store = $this->createPartialMock(Store::class, ['getId']);
         $store->expects($this->any())->method('getId')->willReturn(1);
         $storeManager = $this->getMockForAbstractClass(StoreManagerInterface::class);
@@ -95,7 +87,6 @@ protected function setUp(): void
                 'catalogCategory' => $this->catalogCategory,
                 'storeManager' => $storeManager,
                 'urlFactory' => $urlFactory,
-                'sidResolver' => $this->sidResolver,
             ]
         );
     }
@@ -186,10 +177,6 @@ public function testGetUrl(
                 break;
             case 'getProductUrl':
                 $this->assertEquals($requestPathProduct, $this->model->getProductUrl($product, null));
-                $this->sidResolver
-                    ->expects($this->never())
-                    ->method('getUseSessionInUrl')
-                    ->willReturn(true);
                 break;
         }
     }
diff --git a/app/code/Magento/Checkout/Model/Session.php b/app/code/Magento/Checkout/Model/Session.php
index 0addbf069cba3..cc30af4967293 100644
--- a/app/code/Magento/Checkout/Model/Session.php
+++ b/app/code/Magento/Checkout/Model/Session.php
@@ -120,7 +120,6 @@ class Session extends \Magento\Framework\Session\SessionManager
 
     /**
      * @param \Magento\Framework\App\Request\Http $request
-     * @param \Magento\Framework\Session\SidResolverInterface $sidResolver
      * @param \Magento\Framework\Session\Config\ConfigInterface $sessionConfig
      * @param \Magento\Framework\Session\SaveHandlerInterface $saveHandler
      * @param \Magento\Framework\Session\ValidatorInterface $validator
@@ -143,7 +142,6 @@ class Session extends \Magento\Framework\Session\SessionManager
      */
     public function __construct(
         \Magento\Framework\App\Request\Http $request,
-        \Magento\Framework\Session\SidResolverInterface $sidResolver,
         \Magento\Framework\Session\Config\ConfigInterface $sessionConfig,
         \Magento\Framework\Session\SaveHandlerInterface $saveHandler,
         \Magento\Framework\Session\ValidatorInterface $validator,
@@ -173,7 +171,6 @@ public function __construct(
         $this->quoteFactory = $quoteFactory;
         parent::__construct(
             $request,
-            $sidResolver,
             $sessionConfig,
             $saveHandler,
             $validator,
diff --git a/app/code/Magento/Customer/Model/Session.php b/app/code/Magento/Customer/Model/Session.php
index 55e31cb4555b4..c94487b9b07e3 100644
--- a/app/code/Magento/Customer/Model/Session.php
+++ b/app/code/Magento/Customer/Model/Session.php
@@ -118,7 +118,6 @@ class Session extends \Magento\Framework\Session\SessionManager
      * Session constructor.
      *
      * @param \Magento\Framework\App\Request\Http $request
-     * @param \Magento\Framework\Session\SidResolverInterface $sidResolver
      * @param \Magento\Framework\Session\Config\ConfigInterface $sessionConfig
      * @param \Magento\Framework\Session\SaveHandlerInterface $saveHandler
      * @param \Magento\Framework\Session\ValidatorInterface $validator
@@ -144,7 +143,6 @@ class Session extends \Magento\Framework\Session\SessionManager
      */
     public function __construct(
         \Magento\Framework\App\Request\Http $request,
-        \Magento\Framework\Session\SidResolverInterface $sidResolver,
         \Magento\Framework\Session\Config\ConfigInterface $sessionConfig,
         \Magento\Framework\Session\SaveHandlerInterface $saveHandler,
         \Magento\Framework\Session\ValidatorInterface $validator,
@@ -178,7 +176,6 @@ public function __construct(
         $this->_httpContext = $httpContext;
         parent::__construct(
             $request,
-            $sidResolver,
             $sessionConfig,
             $saveHandler,
             $validator,
diff --git a/app/code/Magento/Store/App/Response/Redirect.php b/app/code/Magento/Store/App/Response/Redirect.php
index 7984939108d89..ec791595f2428 100644
--- a/app/code/Magento/Store/App/Response/Redirect.php
+++ b/app/code/Magento/Store/App/Response/Redirect.php
@@ -19,7 +19,6 @@
 use Magento\Framework\Encryption\UrlCoder;
 use Magento\Framework\Exception\NoSuchEntityException;
 use Magento\Framework\Session\SessionManagerInterface;
-use Magento\Framework\Session\SidResolverInterface;
 use Magento\Framework\UrlInterface;
 use Magento\Store\Model\ScopeInterface;
 use Magento\Store\Model\StoreManagerInterface;
@@ -54,11 +53,6 @@ class Redirect implements RedirectInterface
      */
     protected $_session;
 
-    /**
-     * @var SidResolverInterface
-     */
-    protected $_sidResolver;
-
     /**
      * @var bool
      */
@@ -91,7 +85,6 @@ class Redirect implements RedirectInterface
      * @param StoreManagerInterface $storeManager
      * @param UrlCoder $urlCoder
      * @param SessionManagerInterface $session
-     * @param SidResolverInterface $sidResolver
      * @param UrlInterface $urlBuilder
      * @param Uri|null $uri
      * @param bool $canUseSessionIdInParam
@@ -104,7 +97,6 @@ public function __construct(
         StoreManagerInterface $storeManager,
         UrlCoder $urlCoder,
         SessionManagerInterface $session,
-        SidResolverInterface $sidResolver,
         UrlInterface $urlBuilder,
         Uri $uri = null,
         $canUseSessionIdInParam = true,
@@ -116,7 +108,6 @@ public function __construct(
         $this->_storeManager = $storeManager;
         $this->_urlCoder = $urlCoder;
         $this->_session = $session;
-        $this->_sidResolver = $sidResolver;
         $this->_urlBuilder = $urlBuilder;
         $this->uri = $uri ?: ObjectManager::getInstance()->get(Uri::class);
         $this->appState = $appState ?: ObjectManager::getInstance()->get(State::class);
diff --git a/app/code/Magento/Store/Controller/Store/Redirect.php b/app/code/Magento/Store/Controller/Store/Redirect.php
index c20e3b31e09b1..761325771839e 100644
--- a/app/code/Magento/Store/Controller/Store/Redirect.php
+++ b/app/code/Magento/Store/Controller/Store/Redirect.php
@@ -15,7 +15,6 @@
 use Magento\Framework\App\ObjectManager;
 use Magento\Framework\Exception\NoSuchEntityException;
 use Magento\Framework\Session\Generic;
-use Magento\Framework\Session\SidResolverInterface;
 use Magento\Store\Api\StoreRepositoryInterface;
 use Magento\Store\Api\StoreResolverInterface;
 use Magento\Store\Model\Store;
@@ -65,7 +64,6 @@ class Redirect extends Action implements HttpGetActionInterface, HttpPostActionI
      * @param StoreRepositoryInterface $storeRepository
      * @param StoreResolverInterface $storeResolver
      * @param Generic $session
-     * @param SidResolverInterface $sidResolver
      * @param HashGenerator $hashGenerator
      * @param StoreManagerInterface|null $storeManager
      * @param RedirectDataGenerator|null $redirectDataGenerator
@@ -78,7 +76,6 @@ public function __construct(
         StoreRepositoryInterface $storeRepository,
         StoreResolverInterface $storeResolver,
         Generic $session,
-        SidResolverInterface $sidResolver,
         HashGenerator $hashGenerator,
         StoreManagerInterface $storeManager = null,
         ?RedirectDataGenerator $redirectDataGenerator = null,
diff --git a/app/code/Magento/Store/Model/Store.php b/app/code/Magento/Store/Model/Store.php
index 7bcb3282ba552..cd3eecfac98ee 100644
--- a/app/code/Magento/Store/Model/Store.php
+++ b/app/code/Magento/Store/Model/Store.php
@@ -276,12 +276,6 @@ class Store extends AbstractExtensibleModel implements
      */
     protected $_config;
 
-    /**
-     * @var \Magento\Framework\Session\SidResolverInterface
-     * @deprecated 101.0.5 Not used anymore.
-     */
-    protected $_sidResolver;
-
     /**
      * @var string
      */
@@ -346,7 +340,6 @@ class Store extends AbstractExtensibleModel implements
      * @param \Magento\Framework\Filesystem $filesystem
      * @param \Magento\Framework\App\Config\ReinitableConfigInterface $config
      * @param \Magento\Store\Model\StoreManagerInterface $storeManager
-     * @param \Magento\Framework\Session\SidResolverInterface $sidResolver
      * @param \Magento\Framework\App\Http\Context $httpContext
      * @param \Magento\Framework\Session\SessionManagerInterface $session
      * @param \Magento\Directory\Model\CurrencyFactory $currencyFactory
@@ -376,7 +369,6 @@ public function __construct(
         \Magento\Framework\Filesystem $filesystem,
         \Magento\Framework\App\Config\ReinitableConfigInterface $config,
         \Magento\Store\Model\StoreManagerInterface $storeManager,
-        \Magento\Framework\Session\SidResolverInterface $sidResolver,
         \Magento\Framework\App\Http\Context $httpContext,
         \Magento\Framework\Session\SessionManagerInterface $session,
         \Magento\Directory\Model\CurrencyFactory $currencyFactory,
@@ -399,7 +391,6 @@ public function __construct(
         $this->_isCustomEntryPoint = $isCustomEntryPoint;
         $this->filesystem = $filesystem;
         $this->_storeManager = $storeManager;
-        $this->_sidResolver = $sidResolver;
         $this->_httpContext = $httpContext;
         $this->_session = $session;
         $this->currencyFactory = $currencyFactory;
diff --git a/app/code/Magento/Store/Test/Unit/Controller/Store/RedirectTest.php b/app/code/Magento/Store/Test/Unit/Controller/Store/RedirectTest.php
index 7d873ee6c1d8e..dd77cae615767 100755
--- a/app/code/Magento/Store/Test/Unit/Controller/Store/RedirectTest.php
+++ b/app/code/Magento/Store/Test/Unit/Controller/Store/RedirectTest.php
@@ -14,7 +14,6 @@
 use Magento\Framework\App\ResponseInterface;
 use Magento\Framework\Exception\NoSuchEntityException;
 use Magento\Framework\Message\ManagerInterface;
-use Magento\Framework\Session\SidResolverInterface;
 use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
 use Magento\Store\Api\StoreRepositoryInterface;
 use Magento\Store\Api\StoreResolverInterface;
@@ -95,11 +94,6 @@ class RedirectTest extends TestCase
      */
     private $currentStoreMock;
 
-    /**
-     * @var SidResolverInterface|MockObject
-     */
-    private $sidResolverMock;
-
     /**
      * @var HashGenerator|MockObject
      */
@@ -147,10 +141,6 @@ protected function setUp(): void
             ->disableOriginalConstructor()
             ->setMethods(['getCode'])
             ->getMockForAbstractClass();
-        $this->sidResolverMock = $this->getMockBuilder(SidResolverInterface::class)
-            ->disableOriginalConstructor()
-            ->setMethods(['getUseSessionInUrl'])
-            ->getMockForAbstractClass();
         $this->hashGeneratorMock = $this->createMock(HashGenerator::class);
 
         $this->currentStoreMock = $this->getMockBuilder(Store::class)
@@ -187,7 +177,6 @@ protected function setUp(): void
                 'storeManager' => $this->storeManagerMock,
                 'storeRepository' => $this->storeRepositoryMock,
                 'storeResolver' => $this->storeResolverMock,
-                'sidResolver' => $this->sidResolverMock,
                 'hashGenerator' => $this->hashGeneratorMock,
                 'context' => $context,
                 'redirectDataGenerator' => $redirectDataGenerator,
diff --git a/app/code/Magento/Store/Test/Unit/Model/StoreTest.php b/app/code/Magento/Store/Test/Unit/Model/StoreTest.php
index 59c967e79dd3f..01ac11aab07fe 100644
--- a/app/code/Magento/Store/Test/Unit/Model/StoreTest.php
+++ b/app/code/Magento/Store/Test/Unit/Model/StoreTest.php
@@ -17,7 +17,6 @@
 use Magento\Framework\App\State;
 use Magento\Framework\Filesystem;
 use Magento\Framework\Session\SessionManagerInterface;
-use Magento\Framework\Session\SidResolverInterface;
 use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
 use Magento\Framework\Url\ModifierInterface;
 use Magento\Framework\UrlInterface;
@@ -453,9 +452,6 @@ public function testGetCurrentUrl($secure, $url, $expected, $fromStore)
         $defaultStore->expects($this->atLeastOnce())->method('getId')->willReturn(5);
         $defaultStore->expects($this->atLeastOnce())->method('isCurrentlySecure')->willReturn($secure);
 
-        $sidResolver = $this->getMockForAbstractClass(SidResolverInterface::class);
-        $sidResolver->expects($this->any())->method('getSessionIdQueryParam')->willReturn('SID');
-
         $config = $this->getMockForAbstractClass(ReinitableConfigInterface::class);
 
         $requestString = preg_replace(
diff --git a/app/code/Magento/Store/etc/di.xml b/app/code/Magento/Store/etc/di.xml
index 0a3465f9efecf..af1fe2b75a85a 100644
--- a/app/code/Magento/Store/etc/di.xml
+++ b/app/code/Magento/Store/etc/di.xml
@@ -171,11 +171,6 @@
         <argument name="scopeType" xsi:type="const">Magento\Store\Model\ScopeInterface::SCOPE_STORE</argument>
         </arguments>
     </type>
-    <type name="Magento\Framework\Session\SidResolver">
-        <arguments>
-        <argument name="scopeType" xsi:type="const">Magento\Store\Model\ScopeInterface::SCOPE_STORE</argument>
-        </arguments>
-    </type>
     <type name="Magento\Framework\View\Layout\Element\Layout">
         <arguments>
             <argument name="scopeType" xsi:type="const">Magento\Store\Model\ScopeInterface::SCOPE_STORE</argument>
diff --git a/app/etc/di.xml b/app/etc/di.xml
index dee3611da0d71..7b8f52e5bd4ed 100644
--- a/app/etc/di.xml
+++ b/app/etc/di.xml
@@ -87,7 +87,6 @@
     <preference for="Magento\Framework\Image\Adapter\ConfigInterface" type="Magento\Framework\Image\Adapter\Config" />
     <preference for="Magento\Framework\View\Design\Theme\Image\PathInterface" type="Magento\Theme\Model\Theme\Image\Path" />
     <preference for="Magento\Framework\Session\Config\ConfigInterface" type="Magento\Framework\Session\Config" />
-    <preference for="Magento\Framework\Session\SidResolverInterface" type="Magento\Framework\Session\SidResolver\Proxy" />
     <preference for="Magento\Framework\Stdlib\Cookie\CookieScopeInterface" type="Magento\Framework\Stdlib\Cookie\CookieScope" />
     <preference for="Magento\Framework\Stdlib\Cookie\CookieReaderInterface" type="Magento\Framework\Stdlib\Cookie\PhpCookieReader" />
     <preference for="Magento\Framework\Stdlib\CookieManagerInterface" type="Magento\Framework\Stdlib\Cookie\PhpCookieManager" />
diff --git a/dev/tests/integration/testsuite/Magento/Customer/Model/SessionTest.php b/dev/tests/integration/testsuite/Magento/Customer/Model/SessionTest.php
index 4795f7425eed2..dfa0f22136dac 100644
--- a/dev/tests/integration/testsuite/Magento/Customer/Model/SessionTest.php
+++ b/dev/tests/integration/testsuite/Magento/Customer/Model/SessionTest.php
@@ -6,12 +6,11 @@
 namespace Magento\Customer\Model;
 
 use Magento\Framework\App\PageCache\FormKey;
+use Magento\Framework\App\Response\Http as HttpResponse;
 use Magento\Framework\App\ResponseInterface;
-use Magento\Framework\Session\SidResolverInterface;
 use Magento\Framework\Stdlib\Cookie\CookieMetadataFactory;
 use Magento\Framework\Stdlib\Cookie\PublicCookieMetadata;
 use Magento\TestFramework\Helper\Bootstrap;
-use Magento\Framework\App\Response\Http as HttpResponse;
 
 /**
  * @magentoDataFixture Magento/Customer/_files/customer.php
@@ -19,6 +18,11 @@
  */
 class SessionTest extends \PHPUnit\Framework\TestCase
 {
+    /**
+     * Session ID in query param
+     */
+    const SESSION_ID_QUERY_PARAM = 'SID';
+
     /**
      * @var \Magento\Customer\Model\Session
      */
@@ -121,14 +125,14 @@ public function testNoSid(): void
         $this->_customerSession->authenticate();
         $location = (string)$this->response->getHeader('Location');
         $this->assertNotEmpty($location);
-        $this->assertStringNotContainsString(SidResolverInterface::SESSION_ID_QUERY_PARAM .'=', $location);
+        $this->assertStringNotContainsString(self::SESSION_ID_QUERY_PARAM . '=', $location);
         $beforeAuthUrl = $this->_customerSession->getData('before_auth_url');
         $this->assertNotEmpty($beforeAuthUrl);
-        $this->assertStringNotContainsString(SidResolverInterface::SESSION_ID_QUERY_PARAM .'=', $beforeAuthUrl);
+        $this->assertStringNotContainsString(self::SESSION_ID_QUERY_PARAM . '=', $beforeAuthUrl);
 
         $this->_customerSession->authenticate('/customer/account');
         $location = (string)$this->response->getHeader('Location');
         $this->assertNotEmpty($location);
-        $this->assertStringNotContainsString(SidResolverInterface::SESSION_ID_QUERY_PARAM .'=', $location);
+        $this->assertStringNotContainsString(self::SESSION_ID_QUERY_PARAM . '=', $location);
     }
 }
diff --git a/dev/tests/integration/testsuite/Magento/Framework/Session/SessionManagerTest.php b/dev/tests/integration/testsuite/Magento/Framework/Session/SessionManagerTest.php
index 6a461c3007ca7..4066c9510528e 100644
--- a/dev/tests/integration/testsuite/Magento/Framework/Session/SessionManagerTest.php
+++ b/dev/tests/integration/testsuite/Magento/Framework/Session/SessionManagerTest.php
@@ -90,11 +90,6 @@ class SessionManagerTest extends \PHPUnit\Framework\TestCase
          */
         private $model;
 
-        /**
-         * @var \Magento\Framework\Session\SidResolverInterface
-         */
-        private $sidResolver;
-
         /**
          * @var string
          */
@@ -127,20 +122,11 @@ protected function setUp(): void
 
             $this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
 
-            /** @var \Magento\Framework\Session\SidResolverInterface $sidResolver */
             $this->appState = $this->getMockBuilder(State::class)
                 ->setMethods(['getAreaCode'])
                 ->disableOriginalConstructor()
                 ->getMock();
 
-            /** @var \Magento\Framework\Session\SidResolver $sidResolver */
-            $this->sidResolver = $this->objectManager->create(
-                \Magento\Framework\Session\SidResolver::class,
-                [
-                    'appState' => $this->appState,
-                ]
-            );
-
             $this->request = $this->objectManager->get(\Magento\Framework\App\RequestInterface::class);
         }
 
@@ -269,7 +255,6 @@ public function testStartAreaNotSet()
              */
             $this->model = new \Magento\Framework\Session\SessionManager(
                 $this->objectManager->get(\Magento\Framework\App\Request\Http::class),
-                $this->sidResolver,
                 $this->objectManager->get(\Magento\Framework\Session\Config\ConfigInterface::class),
                 $this->objectManager->get(\Magento\Framework\Session\SaveHandlerInterface::class),
                 $this->objectManager->get(\Magento\Framework\Session\ValidatorInterface::class),
@@ -315,7 +300,6 @@ public function testConstructor(string $saveMethod): void
             $this->model = $this->objectManager->create(
                 \Magento\Framework\Session\SessionManager::class,
                 [
-                    'sidResolver' => $this->sidResolver,
                     'saveHandler' => $saveHandler,
                     'sessionConfig' => $sessionConfig,
                 ]
@@ -352,10 +336,7 @@ public function dataConstructor(): array
         private function initializeModel(): void
         {
             $this->model = $this->objectManager->create(
-                \Magento\Framework\Session\SessionManager::class,
-                [
-                    'sidResolver' => $this->sidResolver
-                ]
+                \Magento\Framework\Session\SessionManager::class
             );
         }
     }
diff --git a/dev/tests/integration/testsuite/Magento/Framework/View/Element/AbstractBlockTest.php b/dev/tests/integration/testsuite/Magento/Framework/View/Element/AbstractBlockTest.php
index f584b8f7cfcd3..fdc1b2c9c4518 100644
--- a/dev/tests/integration/testsuite/Magento/Framework/View/Element/AbstractBlockTest.php
+++ b/dev/tests/integration/testsuite/Magento/Framework/View/Element/AbstractBlockTest.php
@@ -7,7 +7,6 @@
 
 use Magento\Framework\Math\Random;
 use Magento\Framework\Session\SessionManagerInterface;
-use Magento\Framework\Session\SidResolverInterface;
 use Magento\TestFramework\Helper\Bootstrap;
 
 /**
@@ -16,6 +15,11 @@
  */
 class AbstractBlockTest extends \PHPUnit\Framework\TestCase
 {
+    /**
+     * Session ID in query param
+     */
+    const SESSION_ID_QUERY_PARAM = 'SID';
+
     /**
      * @var AbstractBlock
      */
@@ -593,7 +597,7 @@ public function testNoSid(): void
         $outerId = 'block-outer' .Random::getRandomNumber(1, 9999);
         $outer = $this->_createBlockWithLayout($outerId, $outerId);
         $block->setText(
-            $text = 'Some text with ' .SidResolverInterface::SESSION_ID_QUERY_PARAM
+            $text = 'Some text with ' .self::SESSION_ID_QUERY_PARAM
                 .'=' .$this->session->getSessionId()
         );
         $block->setData('cache_lifetime', 3600);
diff --git a/dev/tests/integration/testsuite/Magento/Paypal/Controller/ExpressTest.php b/dev/tests/integration/testsuite/Magento/Paypal/Controller/ExpressTest.php
index c78d42d894352..eb757cf87b903 100644
--- a/dev/tests/integration/testsuite/Magento/Paypal/Controller/ExpressTest.php
+++ b/dev/tests/integration/testsuite/Magento/Paypal/Controller/ExpressTest.php
@@ -200,7 +200,6 @@ public function testReturnAction()
             ->setConstructorArgs(
                 [
                     $this->_objectManager->get(\Magento\Framework\App\Request\Http::class),
-                    $this->_objectManager->get(\Magento\Framework\Session\SidResolverInterface::class),
                     $this->_objectManager->get(\Magento\Framework\Session\Config\ConfigInterface::class),
                     $this->_objectManager->get(\Magento\Framework\Session\SaveHandlerInterface::class),
                     $this->_objectManager->get(\Magento\Framework\Session\ValidatorInterface::class),
diff --git a/dev/tests/integration/testsuite/Magento/Store/Controller/Store/RedirectTest.php b/dev/tests/integration/testsuite/Magento/Store/Controller/Store/RedirectTest.php
index 5a1348d9da49b..8b333cda5c232 100644
--- a/dev/tests/integration/testsuite/Magento/Store/Controller/Store/RedirectTest.php
+++ b/dev/tests/integration/testsuite/Magento/Store/Controller/Store/RedirectTest.php
@@ -8,7 +8,6 @@
 namespace Magento\Store\Controller\Store;
 
 use Magento\Framework\Interception\InterceptorInterface;
-use Magento\Framework\Session\SidResolverInterface;
 use Magento\Store\Model\StoreResolver;
 use Magento\Store\Model\StoreSwitcher\RedirectDataPreprocessorInterface;
 use Magento\Store\Model\StoreSwitcher\RedirectDataSerializerInterface;
@@ -23,6 +22,11 @@
  */
 class RedirectTest extends AbstractController
 {
+    /**
+     * Session ID in query param
+     */
+    const SESSION_ID_QUERY_PARAM = 'SID';
+
     /**
      * @var RedirectDataPreprocessorInterface
      */
@@ -118,6 +122,6 @@ public function testNoSid(): void
 
         $result = (string)$this->getResponse()->getHeader('location');
         $this->assertNotEmpty($result);
-        $this->assertStringNotContainsString(SidResolverInterface::SESSION_ID_QUERY_PARAM . '=', $result);
+        $this->assertStringNotContainsString(self::SESSION_ID_QUERY_PARAM . '=', $result);
     }
 }
diff --git a/dev/tests/integration/testsuite/Magento/Store/Model/StoreTest.php b/dev/tests/integration/testsuite/Magento/Store/Model/StoreTest.php
index d81a6fa52ea48..c0eb35b3779e8 100644
--- a/dev/tests/integration/testsuite/Magento/Store/Model/StoreTest.php
+++ b/dev/tests/integration/testsuite/Magento/Store/Model/StoreTest.php
@@ -12,7 +12,6 @@
 use Magento\Framework\App\Filesystem\DirectoryList;
 use Magento\Framework\App\Request\Http as HttpRequest;
 use Magento\Framework\App\RequestInterface;
-use Magento\Framework\Session\SidResolverInterface;
 use Magento\Framework\UrlInterface;
 use Magento\Store\Api\StoreRepositoryInterface;
 
@@ -22,6 +21,11 @@
  */
 class StoreTest extends \PHPUnit\Framework\TestCase
 {
+    /**
+     * Session ID in query param
+     */
+    const SESSION_ID_QUERY_PARAM = 'SID';
+
     /**
      * @var array
      */
@@ -63,7 +67,6 @@ protected function _getStoreModel()
             'filesystem' => $objectManager->get(\Magento\Framework\Filesystem::class),
             'config' => $objectManager->get(\Magento\Framework\App\Config\ReinitableConfigInterface::class),
             'storeManager' => $objectManager->get(\Magento\Store\Model\StoreManager::class),
-            'sidResolver' => $objectManager->get(\Magento\Framework\Session\SidResolverInterface::class),
             'httpContext' => $objectManager->get(\Magento\Framework\App\Http\Context::class),
             'session' => $objectManager->get(\Magento\Framework\Session\SessionManagerInterface::class),
             'currencyFactory' => $objectManager->get(\Magento\Directory\Model\CurrencyFactory::class),
@@ -305,11 +308,11 @@ public function testGetCurrentUrl()
 
         $this->model
             ->expects($this->any())->method('getUrl')
-            ->willReturn('http://localhost/index.php?' . SidResolverInterface::SESSION_ID_QUERY_PARAM . '=12345');
-        $this->request->setParams([SidResolverInterface::SESSION_ID_QUERY_PARAM, '12345']);
-        $this->request->setQueryValue(SidResolverInterface::SESSION_ID_QUERY_PARAM, '12345');
+            ->willReturn('http://localhost/index.php?' . self::SESSION_ID_QUERY_PARAM . '=12345');
+        $this->request->setParams([self::SESSION_ID_QUERY_PARAM, '12345']);
+        $this->request->setQueryValue(self::SESSION_ID_QUERY_PARAM, '12345');
         $this->assertStringContainsString(
-            SidResolverInterface::SESSION_ID_QUERY_PARAM . '=12345',
+            self::SESSION_ID_QUERY_PARAM . '=12345',
             $this->model->getCurrentUrl()
         );
 
diff --git a/lib/internal/Magento/Framework/Session/SessionManager.php b/lib/internal/Magento/Framework/Session/SessionManager.php
index 2298fb61c4dec..df6f1666fc17d 100644
--- a/lib/internal/Magento/Framework/Session/SessionManager.php
+++ b/lib/internal/Magento/Framework/Session/SessionManager.php
@@ -49,13 +49,6 @@ class SessionManager implements SessionManagerInterface
      */
     protected $request;
 
-    /**
-     * SID resolver
-     *
-     * @var SidResolverInterface
-     */
-    protected $sidResolver;
-
     /**
      * Session config
      *
@@ -101,7 +94,6 @@ class SessionManager implements SessionManagerInterface
 
     /**
      * @param \Magento\Framework\App\Request\Http $request
-     * @param SidResolverInterface $sidResolver
      * @param ConfigInterface $sessionConfig
      * @param SaveHandlerInterface $saveHandler
      * @param ValidatorInterface $validator
@@ -116,7 +108,6 @@ class SessionManager implements SessionManagerInterface
      */
     public function __construct(
         \Magento\Framework\App\Request\Http $request,
-        SidResolverInterface $sidResolver,
         ConfigInterface $sessionConfig,
         SaveHandlerInterface $saveHandler,
         ValidatorInterface $validator,
@@ -127,7 +118,6 @@ public function __construct(
         SessionStartChecker $sessionStartChecker = null
     ) {
         $this->request = $request;
-        $this->sidResolver = $sidResolver;
         $this->sessionConfig = $sessionConfig;
         $this->saveHandler = $saveHandler;
         $this->validator = $validator;
diff --git a/lib/internal/Magento/Framework/Session/SidResolver.php b/lib/internal/Magento/Framework/Session/SidResolver.php
deleted file mode 100644
index 4052f039a2f93..0000000000000
--- a/lib/internal/Magento/Framework/Session/SidResolver.php
+++ /dev/null
@@ -1,152 +0,0 @@
-<?php
-/**
- * SID resolver
- *
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
-namespace Magento\Framework\Session;
-
-use Magento\Framework\App\State;
-
-/**
- * Resolves SID by processing request parameters.
- *
- * @deprecated 102.0.2 SIDs in URLs are no longer used
- */
-class SidResolver implements SidResolverInterface
-{
-    /**
-     * Config path for flag whether use SID on frontend
-     */
-    const XML_PATH_USE_FRONTEND_SID = 'web/session/use_frontend_sid';
-
-    /**
-     * @var \Magento\Framework\App\Config\ScopeConfigInterface
-     */
-    protected $scopeConfig;
-
-    /**
-     * @var \Magento\Framework\UrlInterface
-     * @deprecated 102.0.5 Not used anymore.
-     */
-    protected $urlBuilder;
-
-    /**
-     * @var \Magento\Framework\App\RequestInterface
-     * @deprecated 102.0.5 Not used anymore.
-     */
-    protected $request;
-
-    /**
-     * @var array
-     */
-    protected $sidNameMap;
-
-    /**
-     * Use session var instead of SID for session in URL
-     *
-     * @var bool
-     */
-    protected $_useSessionVar = false;
-
-    /**
-     * Use session in URL flag
-     *
-     * @var bool|null
-     * @see \Magento\Framework\UrlInterface
-     */
-    protected $_useSessionInUrl = false;
-
-    /**
-     * @var string
-     */
-    protected $_scopeType;
-
-    /**
-     * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
-     * @param \Magento\Framework\UrlInterface $urlBuilder
-     * @param \Magento\Framework\App\RequestInterface $request
-     * @param string $scopeType
-     * @param array $sidNameMap
-     * @param State|null $appState
-     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
-     */
-    public function __construct(
-        \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
-        \Magento\Framework\UrlInterface $urlBuilder,
-        \Magento\Framework\App\RequestInterface $request,
-        $scopeType,
-        array $sidNameMap = [],
-        State $appState = null
-    ) {
-        $this->scopeConfig = $scopeConfig;
-        $this->urlBuilder = $urlBuilder;
-        $this->request = $request;
-        $this->sidNameMap = $sidNameMap;
-        $this->_scopeType = $scopeType;
-    }
-
-    /**
-     * @inheritDoc
-     */
-    public function getSid(SessionManagerInterface $session)
-    {
-        trigger_error('Session ID is not used as URL parameter anymore.', E_USER_DEPRECATED);
-
-        return null;
-    }
-
-    /**
-     * @inheritDoc
-     */
-    public function getSessionIdQueryParam(SessionManagerInterface $session)
-    {
-        trigger_error('Session ID is not used as URL parameter anymore.', E_USER_DEPRECATED);
-        $sessionName = $session->getName();
-        if ($sessionName && isset($this->sidNameMap[$sessionName])) {
-            return $this->sidNameMap[$sessionName];
-        }
-        return self::SESSION_ID_QUERY_PARAM;
-    }
-
-    /**
-     * @inheritDoc
-     */
-    public function setUseSessionVar($var)
-    {
-        trigger_error('Session ID is not used as URL parameter anymore.', E_USER_DEPRECATED);
-
-        return $this;
-    }
-
-    /**
-     * @inheritDoc
-     */
-    public function getUseSessionVar()
-    {
-        trigger_error('Session ID is not used as URL parameter anymore.', E_USER_DEPRECATED);
-
-        return false;
-    }
-
-    /**
-     * @inheritDoc
-     */
-    public function setUseSessionInUrl($flag = true)
-    {
-        trigger_error('Session ID is not used as URL parameter anymore.', E_USER_DEPRECATED);
-
-        return $this;
-    }
-
-    /**
-     * @inheritDoc
-     */
-    public function getUseSessionInUrl()
-    {
-        trigger_error('Session ID is not used as URL parameter anymore.', E_USER_DEPRECATED);
-
-        return false;
-    }
-}
diff --git a/lib/internal/Magento/Framework/Session/SidResolverInterface.php b/lib/internal/Magento/Framework/Session/SidResolverInterface.php
deleted file mode 100644
index 3c30921e7bce3..0000000000000
--- a/lib/internal/Magento/Framework/Session/SidResolverInterface.php
+++ /dev/null
@@ -1,74 +0,0 @@
-<?php
-/**
- * SID resolver interface
- *
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
-namespace Magento\Framework\Session;
-
-/**
- * Interface \Magento\Framework\Session\SidResolverInterface
- *
- * @deprecated 2.3.3 SIDs in URLs are no longer used
- */
-interface SidResolverInterface
-{
-    /**
-     * Session ID in query param
-     */
-    const SESSION_ID_QUERY_PARAM = 'SID';
-
-    /**
-     * Get SID
-     *
-     * @param \Magento\Framework\Session\SessionManagerInterface $session
-     * @return string|null
-     * @deprecated SID query parameter is not used in URLs anymore.
-     */
-    public function getSid(\Magento\Framework\Session\SessionManagerInterface $session);
-
-    /**
-     * Get session id query param
-     *
-     * @param \Magento\Framework\Session\SessionManagerInterface $session
-     * @return string
-     * @deprecated SID query parameter is not used in URLs anymore.
-     */
-    public function getSessionIdQueryParam(\Magento\Framework\Session\SessionManagerInterface $session);
-
-    /**
-     * Set use session var instead of SID for URL
-     *
-     * @param bool $var
-     * @return $this
-     * @deprecated SID query parameter is not used in URLs anymore.
-     */
-    public function setUseSessionVar($var);
-
-    /**
-     * Retrieve use flag session var instead of SID for URL
-     *
-     * @return bool
-     * @SuppressWarnings(PHPMD.BooleanGetMethodName)
-     */
-    public function getUseSessionVar();
-
-    /**
-     * Set Use session in URL flag
-     *
-     * @param bool $flag
-     * @return $this
-     * @deprecated SID query parameter is not used in URLs anymore.
-     */
-    public function setUseSessionInUrl($flag = true);
-
-    /**
-     * Retrieve use session in URL flag
-     *
-     * @return bool
-     * @deprecated SID query parameter is not used in URLs anymore.
-     * @SuppressWarnings(PHPMD.BooleanGetMethodName)
-     */
-    public function getUseSessionInUrl();
-}
diff --git a/lib/internal/Magento/Framework/Test/Unit/UrlTest.php b/lib/internal/Magento/Framework/Test/Unit/UrlTest.php
index 3df25149dcb74..3a70000151364 100644
--- a/lib/internal/Magento/Framework/Test/Unit/UrlTest.php
+++ b/lib/internal/Magento/Framework/Test/Unit/UrlTest.php
@@ -12,7 +12,6 @@
 use Magento\Framework\App\Route\ConfigInterface;
 use Magento\Framework\Escaper;
 use Magento\Framework\Session\Generic;
-use Magento\Framework\Session\SidResolverInterface;
 use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
 use Magento\Framework\Url;
 use Magento\Framework\Url\HostChecker;
@@ -61,11 +60,6 @@ class UrlTest extends TestCase
      */
     protected $queryParamsResolverMock;
 
-    /**
-     * @var SidResolverInterface|MockObject
-     */
-    protected $sidResolverMock;
-
     /**
      * @var Generic|MockObject
      */
@@ -113,7 +107,6 @@ protected function setUp(): void
         $this->scopeResolverMock = $this->getMockForAbstractClass(ScopeResolverInterface::class);
         $this->scopeMock = $this->getMockForAbstractClass(ScopeInterface::class);
         $this->queryParamsResolverMock = $this->getMockForAbstractClass(QueryParamsResolverInterface::class);
-        $this->sidResolverMock = $this->getMockForAbstractClass(SidResolverInterface::class);
         $this->sessionMock = $this->createMock(Generic::class);
         $this->scopeConfig = $this->getMockForAbstractClass(ScopeConfigInterface::class);
 
@@ -457,7 +450,6 @@ public function testGetRebuiltUrl($inputUrl, $outputUrl)
         $model = $this->getUrlModel([
             'session' => $this->sessionMock,
             'request' => $requestMock,
-            'sidResolver' => $this->sidResolverMock,
             'scopeResolver' => $this->scopeResolverMock,
             'routeParamsResolverFactory' => $this->getRouteParamsResolverFactory(false),
             'queryParamsResolver' => $this->queryParamsResolverMock,
@@ -475,17 +467,13 @@ public function testGetRedirectUrl()
             [
                 'routeParamsResolverFactory' => $this->getRouteParamsResolverFactory(),
                 'session' => $this->sessionMock,
-                'sidResolver' => $this->sidResolverMock,
                 'queryParamsResolver' => $this->queryParamsResolverMock,
             ]
         );
 
-        $this->sidResolverMock->expects($this->any())->method('getUseSessionInUrl')->willReturn(true);
         $this->sessionMock->expects($this->any())->method('getSessionIdForHost')->willReturn(false);
-        $this->sidResolverMock->expects($this->any())->method('getUseSessionVar')->willReturn(true);
         $this->routeParamsResolverMock->expects($this->any())->method('hasData')->with('secure_is_forced')
             ->willReturn(true);
-        $this->sidResolverMock->expects($this->never())->method('getSessionIdQueryParam');
         $this->queryParamsResolverMock->expects($this->once())
             ->method('getQuery')
             ->willReturn('foo=bar');
@@ -499,16 +487,11 @@ public function testGetRedirectUrlWithSessionId()
             [
                 'routeParamsResolverFactory' => $this->getRouteParamsResolverFactory(false),
                 'session' => $this->sessionMock,
-                'sidResolver' => $this->sidResolverMock,
                 'queryParamsResolver' => $this->queryParamsResolverMock,
             ]
         );
-
-        $this->sidResolverMock->expects($this->never())->method('getUseSessionInUrl')->willReturn(true);
         $this->sessionMock->expects($this->never())->method('getSessionIdForHost')
             ->willReturn('session-id');
-        $this->sidResolverMock->expects($this->never())->method('getUseSessionVar')->willReturn(false);
-        $this->sidResolverMock->expects($this->never())->method('getSessionIdQueryParam');
         $this->queryParamsResolverMock->expects($this->once())
             ->method('getQuery')
             ->willReturn('foo=bar');
@@ -673,7 +656,6 @@ public function testSessionUrlVarWithMatchedHostsAndBaseUrl($html, $result)
             [
                 'session' => $this->sessionMock,
                 'request' => $requestMock,
-                'sidResolver' => $this->sidResolverMock,
                 'scopeResolver' => $this->scopeResolverMock,
                 'routeParamsResolverFactory' => $this->getRouteParamsResolverFactory(),
             ]
@@ -688,8 +670,6 @@ public function testSessionUrlVarWithMatchedHostsAndBaseUrl($html, $result)
         $this->scopeResolverMock->expects($this->any())
             ->method('getScope')
             ->willReturn($this->scopeMock);
-        $this->sidResolverMock->expects($this->never())
-            ->method('getSessionIdQueryParam');
 
         $this->assertEquals($result, $model->sessionUrlVar($html));
     }
@@ -701,7 +681,6 @@ public function testSessionUrlVarWithoutMatchedHostsAndBaseUrl()
             [
                 'session' => $this->sessionMock,
                 'request' => $requestMock,
-                'sidResolver' => $this->sidResolverMock,
                 'scopeResolver' => $this->scopeResolverMock,
                 'routeParamsResolverFactory' => $this->getRouteParamsResolverFactory(),
             ]
@@ -714,8 +693,6 @@ public function testSessionUrlVarWithoutMatchedHostsAndBaseUrl()
         $this->scopeResolverMock->expects($this->any())
             ->method('getScope')
             ->willReturn($this->scopeMock);
-        $this->sidResolverMock->expects($this->never())->method('getSessionIdQueryParam')
-            ->willReturn('SID');
         $this->sessionMock->expects($this->never())->method('getSessionId')
             ->willReturn('session-id');
 
diff --git a/lib/internal/Magento/Framework/Url.php b/lib/internal/Magento/Framework/Url.php
index d63632fafc7d3..23af46afb0e04 100644
--- a/lib/internal/Magento/Framework/Url.php
+++ b/lib/internal/Magento/Framework/Url.php
@@ -125,11 +125,6 @@ class Url extends \Magento\Framework\DataObject implements \Magento\Framework\Ur
      */
     protected $_session;
 
-    /**
-     * @var \Magento\Framework\Session\SidResolverInterface
-     */
-    protected $_sidResolver;
-
     /**
      * Constructor
      *
@@ -200,7 +195,6 @@ class Url extends \Magento\Framework\DataObject implements \Magento\Framework\Ur
      * @param \Magento\Framework\Url\SecurityInfoInterface $urlSecurityInfo
      * @param \Magento\Framework\Url\ScopeResolverInterface $scopeResolver
      * @param \Magento\Framework\Session\Generic $session
-     * @param \Magento\Framework\Session\SidResolverInterface $sidResolver
      * @param \Magento\Framework\Url\RouteParamsResolverFactory $routeParamsResolverFactory
      * @param \Magento\Framework\Url\QueryParamsResolverInterface $queryParamsResolver
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
@@ -217,7 +211,6 @@ public function __construct(
         \Magento\Framework\Url\SecurityInfoInterface $urlSecurityInfo,
         \Magento\Framework\Url\ScopeResolverInterface $scopeResolver,
         \Magento\Framework\Session\Generic $session,
-        \Magento\Framework\Session\SidResolverInterface $sidResolver,
         \Magento\Framework\Url\RouteParamsResolverFactory $routeParamsResolverFactory,
         \Magento\Framework\Url\QueryParamsResolverInterface $queryParamsResolver,
         \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
@@ -232,7 +225,6 @@ public function __construct(
         $this->_urlSecurityInfo = $urlSecurityInfo;
         $this->_scopeResolver = $scopeResolver;
         $this->_session = $session;
-        $this->_sidResolver = $sidResolver;
         $this->_routeParamsResolverFactory = $routeParamsResolverFactory;
         $this->_queryParamsResolver = $queryParamsResolver;
         $this->_scopeConfig = $scopeConfig;
diff --git a/lib/internal/Magento/Framework/View/Element/AbstractBlock.php b/lib/internal/Magento/Framework/View/Element/AbstractBlock.php
index ea47c22d8f602..786aac9b03c10 100644
--- a/lib/internal/Magento/Framework/View/Element/AbstractBlock.php
+++ b/lib/internal/Magento/Framework/View/Element/AbstractBlock.php
@@ -52,14 +52,6 @@ abstract class AbstractBlock extends \Magento\Framework\DataObject implements Bl
      */
     protected $_session;
 
-    /**
-     * SID Resolver
-     *
-     * @var \Magento\Framework\Session\SidResolverInterface
-     * @deprecated 102.0.5 Not used anymore.
-     */
-    protected $_sidResolver;
-
     /**
      * Block name in layout
      *
@@ -206,7 +198,6 @@ public function __construct(
         $this->_cache = $context->getCache();
         $this->_design = $context->getDesignPackage();
         $this->_session = $context->getSession();
-        $this->_sidResolver = $context->getSidResolver();
         $this->_scopeConfig = $context->getScopeConfig();
         $this->_assetRepo = $context->getAssetRepository();
         $this->_viewConfig = $context->getViewConfig();
diff --git a/lib/internal/Magento/Framework/View/Element/Context.php b/lib/internal/Magento/Framework/View/Element/Context.php
index ce804e2ace255..4ce5d7009ad67 100644
--- a/lib/internal/Magento/Framework/View/Element/Context.php
+++ b/lib/internal/Magento/Framework/View/Element/Context.php
@@ -75,13 +75,6 @@ class Context implements \Magento\Framework\ObjectManager\ContextInterface
      */
     protected $_session;
 
-    /**
-     * SID Resolver
-     *
-     * @var \Magento\Framework\Session\SidResolverInterface
-     */
-    protected $_sidResolver;
-
     /**
      * Scope config
      *
@@ -152,7 +145,6 @@ class Context implements \Magento\Framework\ObjectManager\ContextInterface
      * @param \Magento\Framework\App\CacheInterface $cache
      * @param \Magento\Framework\View\DesignInterface $design
      * @param \Magento\Framework\Session\SessionManagerInterface $session
-     * @param \Magento\Framework\Session\SidResolverInterface $sidResolver
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
      * @param \Magento\Framework\View\Asset\Repository $assetRepo
      * @param \Magento\Framework\View\ConfigInterface $viewConfig
@@ -174,7 +166,6 @@ public function __construct(
         \Magento\Framework\App\CacheInterface $cache,
         \Magento\Framework\View\DesignInterface $design,
         \Magento\Framework\Session\SessionManagerInterface $session,
-        \Magento\Framework\Session\SidResolverInterface $sidResolver,
         \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
         \Magento\Framework\View\Asset\Repository $assetRepo,
         \Magento\Framework\View\ConfigInterface $viewConfig,
@@ -193,7 +184,6 @@ public function __construct(
         $this->_cache = $cache;
         $this->_design = $design;
         $this->_session = $session;
-        $this->_sidResolver = $sidResolver;
         $this->_scopeConfig = $scopeConfig;
         $this->_assetRepo = $assetRepo;
         $this->_viewConfig = $viewConfig;
@@ -266,16 +256,6 @@ public function getSession()
         return $this->_session;
     }
 
-    /**
-     * Get SID resolver
-     *
-     * @return \Magento\Framework\Session\SidResolverInterface
-     */
-    public function getSidResolver()
-    {
-        return $this->_sidResolver;
-    }
-
     /**
      * Get scope config
      *
diff --git a/lib/internal/Magento/Framework/View/Element/Template/Context.php b/lib/internal/Magento/Framework/View/Element/Template/Context.php
index 48c91ae29bfa9..c16f0e8274d77 100644
--- a/lib/internal/Magento/Framework/View/Element/Template/Context.php
+++ b/lib/internal/Magento/Framework/View/Element/Template/Context.php
@@ -90,7 +90,6 @@ class Context extends \Magento\Framework\View\Element\Context
      * @param \Magento\Framework\App\CacheInterface $cache
      * @param \Magento\Framework\View\DesignInterface $design
      * @param \Magento\Framework\Session\SessionManagerInterface $session
-     * @param \Magento\Framework\Session\SidResolverInterface $sidResolver
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
      * @param \Magento\Framework\View\Asset\Repository $assetRepo
      * @param \Magento\Framework\View\ConfigInterface $viewConfig
@@ -120,7 +119,6 @@ public function __construct(
         \Magento\Framework\App\CacheInterface $cache,
         \Magento\Framework\View\DesignInterface $design,
         \Magento\Framework\Session\SessionManagerInterface $session,
-        \Magento\Framework\Session\SidResolverInterface $sidResolver,
         \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
         \Magento\Framework\View\Asset\Repository $assetRepo,
         \Magento\Framework\View\ConfigInterface $viewConfig,
@@ -148,7 +146,6 @@ public function __construct(
             $cache,
             $design,
             $session,
-            $sidResolver,
             $scopeConfig,
             $assetRepo,
             $viewConfig,
diff --git a/lib/internal/Magento/Framework/View/Test/Unit/Element/AbstractBlockTest.php b/lib/internal/Magento/Framework/View/Test/Unit/Element/AbstractBlockTest.php
index fa425b413560b..422699b9c85ef 100644
--- a/lib/internal/Magento/Framework/View/Test/Unit/Element/AbstractBlockTest.php
+++ b/lib/internal/Magento/Framework/View/Test/Unit/Element/AbstractBlockTest.php
@@ -14,7 +14,6 @@
 use Magento\Framework\Escaper;
 use Magento\Framework\Event\ManagerInterface as EventManagerInterface;
 use Magento\Framework\Session\SessionManagerInterface;
-use Magento\Framework\Session\SidResolverInterface;
 use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
 use Magento\Framework\View\ConfigInterface;
 use Magento\Framework\View\Element\AbstractBlock;
@@ -49,11 +48,6 @@ class AbstractBlockTest extends TestCase
      */
     private $cacheStateMock;
 
-    /**
-     * @var SidResolverInterface|MockObject
-     */
-    private $sidResolverMock;
-
     /**
      * @var SessionManagerInterface|MockObject
      */
@@ -81,7 +75,6 @@ protected function setUp(): void
             ->disableOriginalConstructor()
             ->setMethods(['lockedLoadData'])
             ->getMockForAbstractClass();
-        $this->sidResolverMock = $this->getMockForAbstractClass(SidResolverInterface::class);
         $this->sessionMock = $this->getMockForAbstractClass(SessionManagerInterface::class);
         $this->escaperMock = $this->getMockBuilder(Escaper::class)
             ->disableOriginalConstructor()
@@ -96,9 +89,6 @@ protected function setUp(): void
         $contextMock->expects($this->once())
             ->method('getCacheState')
             ->willReturn($this->cacheStateMock);
-        $contextMock->expects($this->once())
-            ->method('getSidResolver')
-            ->willReturn($this->sidResolverMock);
         $contextMock->expects($this->once())
             ->method('getSession')
             ->willReturn($this->sessionMock);
@@ -282,10 +272,6 @@ public function testGetCacheLifetimeViaToHtml(
         $this->lockQuery->expects($this->any())
             ->method('lockedLoadData')
             ->willReturn($dataFromCache);
-        $this->sidResolverMock->expects($this->any())
-            ->method('getSessionIdQueryParam')
-            ->with($this->sessionMock)
-            ->willReturn('sessionIdQueryParam');
         $this->sessionMock->expects($this->any())
             ->method('getSessionId')
             ->willReturn('sessionId');

From cda1b9de204e49910c317b43c8e5e1289ba0a403 Mon Sep 17 00:00:00 2001
From: Medvediev <v.medvediev@atwix.com>
Date: Fri, 26 Feb 2021 11:40:37 +0200
Subject: [PATCH 10/11] Revert
 "lib/internal/Magento/Framework/Filesystem/ExtendedDriverInterface.php was
 removed. getMetadata method was movet to
 lib/internal/Magento/Framework/Filesystem/DriverInterface"

This reverts commit 0a7c0b3452208df4709632e7aa12741b1153457e.
---
 .../Eav/Model/Attribute/Data/Image.php        |  4 +-
 .../Model/CreateAssetFromFile.php             |  2 +-
 .../Driver/RemoteDriverInterface.php          |  4 +-
 lib/internal/Magento/Framework/File/Mime.php  |  4 +-
 .../Framework/File/Test/Unit/MimeTest.php     |  2 +-
 .../Framework/Filesystem/DriverInterface.php  | 27 ----------
 .../Filesystem/ExtendedDriverInterface.php    | 50 +++++++++++++++++++
 7 files changed, 58 insertions(+), 35 deletions(-)
 create mode 100644 lib/internal/Magento/Framework/Filesystem/ExtendedDriverInterface.php

diff --git a/app/code/Magento/Eav/Model/Attribute/Data/Image.php b/app/code/Magento/Eav/Model/Attribute/Data/Image.php
index f3a5cb4493399..d61a8b5fda5b1 100644
--- a/app/code/Magento/Eav/Model/Attribute/Data/Image.php
+++ b/app/code/Magento/Eav/Model/Attribute/Data/Image.php
@@ -5,7 +5,7 @@
  */
 namespace Magento\Eav\Model\Attribute\Data;
 
-use Magento\Framework\Filesystem\DriverInterface;
+use Magento\Framework\Filesystem\ExtendedDriverInterface;
 
 /**
  * EAV Entity Attribute Image File Data Model
@@ -29,7 +29,7 @@ protected function _validateByRules($value)
     {
         $label = __($this->getAttribute()->getStoreLabel());
         $rules = $this->getAttribute()->getValidateRules();
-        $localStorage = !$this->_directory->getDriver() instanceof DriverInterface;
+        $localStorage = !$this->_directory->getDriver() instanceof ExtendedDriverInterface;
         $imageProp = $localStorage
             ? @getimagesize($value['tmp_name'])
             : $this->_directory->getDriver()->getMetadata($value['tmp_name']);
diff --git a/app/code/Magento/MediaGallerySynchronization/Model/CreateAssetFromFile.php b/app/code/Magento/MediaGallerySynchronization/Model/CreateAssetFromFile.php
index 3b5a9d08796e2..19c2569695d56 100644
--- a/app/code/Magento/MediaGallerySynchronization/Model/CreateAssetFromFile.php
+++ b/app/code/Magento/MediaGallerySynchronization/Model/CreateAssetFromFile.php
@@ -75,7 +75,7 @@ public function execute(string $path): AssetInterface
         $absolutePath = $this->getMediaDirectory()->getAbsolutePath($path);
         $driver = $this->getMediaDirectory()->getDriver();
 
-        if ($driver instanceof Filesystem\DriverInterface) {
+        if ($driver instanceof Filesystem\ExtendedDriverInterface) {
             $meta = $driver->getMetadata($absolutePath);
         } else {
             /**
diff --git a/app/code/Magento/RemoteStorage/Driver/RemoteDriverInterface.php b/app/code/Magento/RemoteStorage/Driver/RemoteDriverInterface.php
index 11044ece9fad8..fc108bb388cb5 100644
--- a/app/code/Magento/RemoteStorage/Driver/RemoteDriverInterface.php
+++ b/app/code/Magento/RemoteStorage/Driver/RemoteDriverInterface.php
@@ -7,12 +7,12 @@
 
 namespace Magento\RemoteStorage\Driver;
 
-use Magento\Framework\Filesystem\DriverInterface;
+use Magento\Framework\Filesystem\ExtendedDriverInterface;
 
 /**
  * Remote storage driver.
  */
-interface RemoteDriverInterface extends DriverInterface
+interface RemoteDriverInterface extends ExtendedDriverInterface
 {
     /**
      * Test storage connection.
diff --git a/lib/internal/Magento/Framework/File/Mime.php b/lib/internal/Magento/Framework/File/Mime.php
index 905581059b026..d61f5054990e8 100644
--- a/lib/internal/Magento/Framework/File/Mime.php
+++ b/lib/internal/Magento/Framework/File/Mime.php
@@ -15,7 +15,7 @@
  * Utility for mime type retrieval
  *
  * @deprecated
- * @see Filesystem\DriverInterface::getMetadata()
+ * @see Filesystem\ExtendedDriverInterface::getMetadata()
  */
 class Mime
 {
@@ -113,7 +113,7 @@ public function getMimeType($file)
             throw new FileSystemException(__("File '$file' doesn't exist"));
         }
 
-        if ($driver instanceof Filesystem\DriverInterface) {
+        if ($driver instanceof Filesystem\ExtendedDriverInterface) {
             return $driver->getMetadata($file)['mimetype'];
         }
 
diff --git a/lib/internal/Magento/Framework/File/Test/Unit/MimeTest.php b/lib/internal/Magento/Framework/File/Test/Unit/MimeTest.php
index 2576338bc52dd..db42e03363236 100644
--- a/lib/internal/Magento/Framework/File/Test/Unit/MimeTest.php
+++ b/lib/internal/Magento/Framework/File/Test/Unit/MimeTest.php
@@ -56,7 +56,7 @@ class MimeTest extends TestCase
     protected function setUp(): void
     {
         $this->localDriverMock = $this->getMockForAbstractClass(Filesystem\DriverInterface::class);
-        $this->remoteDriverMock = $this->getMockForAbstractClass(Filesystem\DriverInterface::class);
+        $this->remoteDriverMock = $this->getMockForAbstractClass(Filesystem\ExtendedDriverInterface::class);
 
         $this->localDirectoryMock = $this->getMockForAbstractClass(Filesystem\Directory\WriteInterface::class);
         $this->localDirectoryMock->method('getDriver')
diff --git a/lib/internal/Magento/Framework/Filesystem/DriverInterface.php b/lib/internal/Magento/Framework/Filesystem/DriverInterface.php
index 986f9d24a4123..706077522c675 100644
--- a/lib/internal/Magento/Framework/Filesystem/DriverInterface.php
+++ b/lib/internal/Magento/Framework/Filesystem/DriverInterface.php
@@ -393,31 +393,4 @@ public function getRealPathSafety($path);
      * @return mixed
      */
     public function getRelativePath($basePath, $path = null);
-
-    /**
-     * Retrieve file metadata.
-     *
-     * Implementation must return associative array with next keys:
-     *
-     * ```
-     * [
-     *  'path',
-     *  'dirname',
-     *  'basename',
-     *  'extension',
-     *  'filename',
-     *  'timestamp',
-     *  'size',
-     *  'mimetype',
-     *  'extra' => [
-     *      'image-width',
-     *      'image-height'
-     *      ]
-     *  ];
-     *
-     * @param string $path Absolute path to file
-     * @return array
-     * @throws FileSystemException
-     */
-    public function getMetadata(string $path): array;
 }
diff --git a/lib/internal/Magento/Framework/Filesystem/ExtendedDriverInterface.php b/lib/internal/Magento/Framework/Filesystem/ExtendedDriverInterface.php
new file mode 100644
index 0000000000000..c2643d7c54e79
--- /dev/null
+++ b/lib/internal/Magento/Framework/Filesystem/ExtendedDriverInterface.php
@@ -0,0 +1,50 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+declare(strict_types=1);
+
+namespace Magento\Framework\Filesystem;
+
+use Magento\Framework\Exception\FileSystemException;
+
+/**
+ * Provides extension for Driver interface.
+ *
+ * @see DriverInterface
+ *
+ * @deprecated Method will be moved to DriverInterface
+ * @see DriverInterface
+ */
+interface ExtendedDriverInterface extends DriverInterface
+{
+    /**
+     * Retrieve file metadata.
+     *
+     * Implementation must return associative array with next keys:
+     *
+     * ```
+     * [
+     *  'path',
+     *  'dirname',
+     *  'basename',
+     *  'extension',
+     *  'filename',
+     *  'timestamp',
+     *  'size',
+     *  'mimetype',
+     *  'extra' => [
+     *      'image-width',
+     *      'image-height'
+     *      ]
+     *  ];
+     *
+     * @param string $path Absolute path to file
+     * @return array
+     * @throws FileSystemException
+     *
+     * @deprecated Method will be moved to DriverInterface
+     */
+    public function getMetadata(string $path): array;
+}

From ccf59cd898215d5e52e850a905aaa54e3fb19de4 Mon Sep 17 00:00:00 2001
From: Medvediev <v.medvediev@atwix.com>
Date: Mon, 1 Mar 2021 17:28:29 +0200
Subject: [PATCH 11/11] Fixed static tests

---
 .../Magento/Test/Integrity/Library/_files/blacklist.txt          | 1 -
 1 file changed, 1 deletion(-)

diff --git a/dev/tests/static/testsuite/Magento/Test/Integrity/Library/_files/blacklist.txt b/dev/tests/static/testsuite/Magento/Test/Integrity/Library/_files/blacklist.txt
index 53bfd9dc2a903..d3064c1fdb63b 100644
--- a/dev/tests/static/testsuite/Magento/Test/Integrity/Library/_files/blacklist.txt
+++ b/dev/tests/static/testsuite/Magento/Test/Integrity/Library/_files/blacklist.txt
@@ -61,7 +61,6 @@ library magento/framework App/Helper/Context.php
 library magento/framework View/DesignLoader.php
 library magento/framework View/Page/Config.php
 library magento/framework View/Page/Title.php
-library magento/framework Session/SidResolverInterface.php
 
 library magento/framework Filesystem/Driver/Http.php