diff options
-rw-r--r-- | lib/private/preview.php | 28 | ||||
-rw-r--r-- | tests/lib/preview.php | 7 |
2 files changed, 15 insertions, 20 deletions
diff --git a/lib/private/preview.php b/lib/private/preview.php index 731e9992310..f3599852838 100644 --- a/lib/private/preview.php +++ b/lib/private/preview.php @@ -701,9 +701,9 @@ class Preview { $this->generatePreview($fileId); } - // We still don't have a preview, so we send back the mime icon + // We still don't have a preview, so we send back an empty object if (is_null($this->preview)) { - $this->getMimeIcon(); + $this->preview = new \OC_Image(); } return $this->preview; @@ -712,22 +712,26 @@ class Preview { /** * Sends the preview, including the headers to client which requested it * - * @param null|string $mimeType + * @param null|string $mimeTypeForHeaders the media type to use when sending back the reply * * @throws NotFoundException */ - public function showPreview($mimeType = null) { + public function showPreview($mimeTypeForHeaders = null) { // Check if file is valid if ($this->isFileValid() === false) { throw new NotFoundException('File not found.'); } - \OCP\Response::enableCaching(3600 * 24); // 24 hours if (is_null($this->preview)) { $this->getPreview(); } if ($this->preview instanceof \OCP\IImage) { - $this->preview->show($mimeType); + if ($this->preview->valid()) { + \OCP\Response::enableCaching(3600 * 24); // 24 hours + } else { + $this->getMimeIcon(); + } + $this->preview->show($mimeTypeForHeaders); } } @@ -1082,9 +1086,7 @@ class Preview { } /** - * Creates a mime icon preview of the asked dimensions - * - * This will paste the mime icon in the middle of an empty preview of the asked dimension + * Defines the media icon, for the media type of the original file, as the preview */ private function getMimeIcon() { $image = new \OC_Image(); @@ -1096,13 +1098,7 @@ class Preview { } $image->loadFromFile($mimeIconServerPath); - $previewWidth = (int)$image->width(); - $previewHeight = (int)$image->height(); - $askedWidth = $this->getMaxX(); - $askedHeight = $this->getMaxY(); - $this->cropAndFill( - $image, $askedWidth, $askedHeight, $previewWidth, $previewHeight - ); + $this->preview = $image; } /** diff --git a/tests/lib/preview.php b/tests/lib/preview.php index 70b7218474c..ca7fa6987d6 100644 --- a/tests/lib/preview.php +++ b/tests/lib/preview.php @@ -210,9 +210,9 @@ class Preview extends TestCase { } /** - * Tests if the media type icon fits into the asked dimensions + * Tests if unsupported previews return an empty object */ - public function testIsMimePreviewTheRightSize() { + public function testUnsupportedPreviewsReturnEmptyObject() { $width = 400; $height = 200; @@ -226,8 +226,7 @@ class Preview extends TestCase { $preview->getPreview(); $image = $preview->getPreview(); - $this->assertSame($width, $image->width()); - $this->assertSame($height, $image->height()); + $this->assertSame(false, $image->valid()); } /** |