Browse Source

Check if a preview provider is available before using it

Else if a preview provider is registerd but not available (for example
missing support in some external lib). It will do :boom:. This way the
providers can at least do the sanity checks required.

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
tags/v14.0.0RC1
Roeland Jago Douma 5 years ago
parent
commit
5b103744c8
No account linked to committer's email address
2 changed files with 16 additions and 2 deletions
  1. 4
    0
      lib/private/Preview/Generator.php
  2. 12
    2
      tests/lib/Preview/GeneratorTest.php

+ 4
- 0
lib/private/Preview/Generator.php View File

@@ -184,6 +184,10 @@ class Generator {
continue;
}

if (!$provider->isAvailable($file)) {
continue;
}

$maxWidth = (int)$this->config->getSystemValue('preview_max_x', 4096);
$maxHeight = (int)$this->config->getSystemValue('preview_max_y', 4096);


+ 12
- 2
tests/lib/Preview/GeneratorTest.php View File

@@ -150,16 +150,24 @@ class GeneratorTest extends \Test\TestCase {
}));

$invalidProvider = $this->createMock(IProvider::class);
$invalidProvider->method('isAvailable')
->willReturn(true);
$unavailableProvider = $this->createMock(IProvider::class);
$unavailableProvider->method('isAvailable')
->willReturn(false);
$validProvider = $this->createMock(IProvider::class);
$validProvider->method('isAvailable')
->with($file)
->willReturn(true);

$this->previewManager->method('getProviders')
->willReturn([
'/image\/png/' => ['wrongProvider'],
'/myMimeType/' => ['brokenProvider', 'invalidProvider', 'validProvider'],
'/myMimeType/' => ['brokenProvider', 'invalidProvider', 'unavailableProvider', 'validProvider'],
]);

$this->helper->method('getProvider')
->will($this->returnCallback(function($provider) use ($invalidProvider, $validProvider) {
->will($this->returnCallback(function($provider) use ($invalidProvider, $validProvider, $unavailableProvider) {
if ($provider === 'wrongProvider') {
$this->fail('Wrongprovider should not be constructed!');
} else if ($provider === 'brokenProvider') {
@@ -168,6 +176,8 @@ class GeneratorTest extends \Test\TestCase {
return $invalidProvider;
} else if ($provider === 'validProvider') {
return $validProvider;
} else if ($provider === 'unavailableProvider') {
return $unavailableProvider;
}
$this->fail('Unexpected provider requested');
}));

Loading…
Cancel
Save