From beda4afe676d617cb83246e852bdaf251d7d437f Mon Sep 17 00:00:00 2001
From: Frans Saris <franssaris@gmail.com>
Date: Tue, 12 Dec 2017 11:45:19 +0100
Subject: [PATCH] [BUGFIX] Make ImageService independent from object manager

Resolves: #83295
Related: #82414
Releases: master
Change-Id: I048e8a406b04227e28021b4ad0082c6a6b174708
Reviewed-on: https://review.typo3.org/55041
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Andreas Fernandez <typo3@scripting-base.de>
Reviewed-by: Benni Mack <benni@typo3.org>
Tested-by: Benni Mack <benni@typo3.org>
Reviewed-by: Stefan Neufeind <typo3.neufeind@speedpartner.de>
Tested-by: Stefan Neufeind <typo3.neufeind@speedpartner.de>
---
 .../extbase/Classes/Service/ImageService.php  | 23 ++++++++-----------
 .../Unit/Service/ImageScriptServiceTest.php   |  3 +--
 2 files changed, 11 insertions(+), 15 deletions(-)

diff --git a/typo3/sysext/extbase/Classes/Service/ImageService.php b/typo3/sysext/extbase/Classes/Service/ImageService.php
index 4234b5f36370..9af53cf73f55 100644
--- a/typo3/sysext/extbase/Classes/Service/ImageService.php
+++ b/typo3/sysext/extbase/Classes/Service/ImageService.php
@@ -19,6 +19,7 @@ use TYPO3\CMS\Core\Resource\File;
 use TYPO3\CMS\Core\Resource\FileInterface;
 use TYPO3\CMS\Core\Resource\FileReference;
 use TYPO3\CMS\Core\Resource\ProcessedFile;
+use TYPO3\CMS\Core\Resource\ResourceFactory;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\MathUtility;
 
@@ -28,29 +29,25 @@ use TYPO3\CMS\Core\Utility\MathUtility;
 class ImageService implements \TYPO3\CMS\Core\SingletonInterface
 {
     /**
-     * @var \TYPO3\CMS\Core\Resource\ResourceFactory
+     * @var ResourceFactory
      */
     protected $resourceFactory;
 
     /**
-     * @var \TYPO3\CMS\Extbase\Service\EnvironmentService
+     * @var EnvironmentService
      */
     protected $environmentService;
 
     /**
-     * @param \TYPO3\CMS\Core\Resource\ResourceFactory $resourceFactory
-     */
-    public function injectResourceFactory(\TYPO3\CMS\Core\Resource\ResourceFactory $resourceFactory)
-    {
-        $this->resourceFactory = $resourceFactory;
-    }
-
-    /**
-     * @param \TYPO3\CMS\Extbase\Service\EnvironmentService $environmentService
+     * ImageService constructor.
+     *
+     * @param EnvironmentService|null $environmentService
+     * @param ResourceFactory|null $resourceFactory
      */
-    public function injectEnvironmentService(\TYPO3\CMS\Extbase\Service\EnvironmentService $environmentService)
+    public function __construct(EnvironmentService $environmentService = null, ResourceFactory $resourceFactory = null)
     {
-        $this->environmentService = $environmentService;
+        $this->environmentService = $environmentService ?? GeneralUtility::makeInstance(EnvironmentService::class);
+        $this->resourceFactory = $resourceFactory ?? ResourceFactory::getInstance();
     }
 
     /**
diff --git a/typo3/sysext/extbase/Tests/Unit/Service/ImageScriptServiceTest.php b/typo3/sysext/extbase/Tests/Unit/Service/ImageScriptServiceTest.php
index c7e4d96df055..7f983b0166f6 100644
--- a/typo3/sysext/extbase/Tests/Unit/Service/ImageScriptServiceTest.php
+++ b/typo3/sysext/extbase/Tests/Unit/Service/ImageScriptServiceTest.php
@@ -41,9 +41,8 @@ class ImageScriptServiceTest extends \TYPO3\TestingFramework\Core\Unit\UnitTestC
      */
     protected function setUp()
     {
-        $this->subject = new ImageService();
         $this->environmentService = $this->createMock(EnvironmentService::class);
-        $this->inject($this->subject, 'environmentService', $this->environmentService);
+        $this->subject = new ImageService($this->environmentService);
         GeneralUtility::flushInternalRuntimeCaches();
         $_SERVER['HTTP_HOST'] = 'foo.bar';
     }
-- 
GitLab