diff --git a/lib/private/Preview/Generator.php b/lib/private/Preview/Generator.php index 3ce4491349871..c9949c82a9767 100644 --- a/lib/private/Preview/Generator.php +++ b/lib/private/Preview/Generator.php @@ -91,7 +91,7 @@ public function __construct( * @param int $height * @param bool $crop * @param string $mode - * @param string $mimeType + * @param string|null $mimeType * @return ISimpleFile * @throws NotFoundException * @throws \InvalidArgumentException if the preview would be invalid (in case the original image is invalid) @@ -109,7 +109,11 @@ public function getPreview(File $file, $width = -1, $height = -1, $crop = false, new GenericEvent($file, $specification) ); $this->eventDispatcher->dispatchTyped(new BeforePreviewFetchedEvent( - $file + $file, + $width, + $height, + $crop, + $mode, )); // since we only ask for one preview, and the generate method return the last one it created, it returns the one we want diff --git a/lib/public/Preview/BeforePreviewFetchedEvent.php b/lib/public/Preview/BeforePreviewFetchedEvent.php index 37da63b95a1a1..19048e08620c9 100644 --- a/lib/public/Preview/BeforePreviewFetchedEvent.php +++ b/lib/public/Preview/BeforePreviewFetchedEvent.php @@ -27,19 +27,27 @@ namespace OCP\Preview; use OCP\Files\Node; +use OCP\IPreview; /** * @since 25.0.1 */ class BeforePreviewFetchedEvent extends \OCP\EventDispatcher\Event { - private Node $node; - /** * @since 25.0.1 */ - public function __construct(Node $node) { + public function __construct( + private Node $node, + /** @deprecated 28.0.0 null deprecated **/ + private ?int $width = null, + /** @deprecated 28.0.0 null deprecated **/ + private ?int $height = null, + /** @deprecated 28.0.0 null deprecated **/ + private ?bool $crop = null, + /** @deprecated 28.0.0 null deprecated **/ + private ?string $mode = null, + ) { parent::__construct(); - $this->node = $node; } /** @@ -48,4 +56,33 @@ public function __construct(Node $node) { public function getNode(): Node { return $this->node; } + + /** + * @since 28.0.0 + */ + public function getWidth(): ?int { + return $this->width; + } + + /** + * @since 28.0.0 + */ + public function getHeight(): ?int { + return $this->height; + } + + /** + * @since 28.0.0 + */ + public function isCrop(): ?bool { + return $this->crop; + } + + /** + * @since 28.0.0 + * @return null|IPreview::MODE_FILL|IPreview::MODE_COVER + */ + public function getMode(): ?string { + return $this->mode; + } } diff --git a/tests/lib/Preview/GeneratorTest.php b/tests/lib/Preview/GeneratorTest.php index 37fc3935139e0..2216674a34c2a 100644 --- a/tests/lib/Preview/GeneratorTest.php +++ b/tests/lib/Preview/GeneratorTest.php @@ -125,7 +125,7 @@ public function testGetCachedPreview() { $this->eventDispatcher->expects($this->once()) ->method('dispatchTyped') - ->with(new BeforePreviewFetchedEvent($file)); + ->with(new BeforePreviewFetchedEvent($file, 100, 100, false, IPreview::MODE_FILL)); $result = $this->generator->getPreview($file, 100, 100); $this->assertSame($previewFile, $result); @@ -264,7 +264,7 @@ public function testGetNewPreview() { $this->eventDispatcher->expects($this->once()) ->method('dispatchTyped') - ->with(new BeforePreviewFetchedEvent($file)); + ->with(new BeforePreviewFetchedEvent($file, 100, 100, false, IPreview::MODE_FILL)); $result = $this->generator->getPreview($file, 100, 100); $this->assertSame($previewFile, $result); @@ -316,7 +316,7 @@ public function testInvalidMimeType() { $this->eventDispatcher->expects($this->once()) ->method('dispatchTyped') - ->with(new BeforePreviewFetchedEvent($file)); + ->with(new BeforePreviewFetchedEvent($file, 1024, 512, true, IPreview::MODE_COVER)); $this->generator->getPreview($file, 1024, 512, true, IPreview::MODE_COVER, 'invalidType'); } @@ -366,7 +366,7 @@ public function testReturnCachedPreviewsWithoutCheckingSupportedMimetype() { $this->eventDispatcher->expects($this->once()) ->method('dispatchTyped') - ->with(new BeforePreviewFetchedEvent($file)); + ->with(new BeforePreviewFetchedEvent($file, 1024, 512, true, IPreview::MODE_COVER)); $result = $this->generator->getPreview($file, 1024, 512, true, IPreview::MODE_COVER, 'invalidType'); $this->assertSame($preview, $result); @@ -405,7 +405,7 @@ public function testNoProvider() { $this->eventDispatcher->expects($this->once()) ->method('dispatchTyped') - ->with(new BeforePreviewFetchedEvent($file)); + ->with(new BeforePreviewFetchedEvent($file, 100, 100, false, IPreview::MODE_FILL)); $this->expectException(NotFoundException::class); $this->generator->getPreview($file, 100, 100); @@ -543,7 +543,7 @@ public function testCorrectSize($maxX, $maxY, $reqX, $reqY, $crop, $mode, $expec $this->eventDispatcher->expects($this->once()) ->method('dispatchTyped') - ->with(new BeforePreviewFetchedEvent($file)); + ->with(new BeforePreviewFetchedEvent($file, $reqX, $reqY, $crop, $mode)); $result = $this->generator->getPreview($file, $reqX, $reqY, $crop, $mode); if ($expectedX === $maxX && $expectedY === $maxY) {