Skip to content

Commit

Permalink
Merge pull request #10712 from nextcloud/fix/noid/check_if_provider_i…
Browse files Browse the repository at this point in the history
…s_available_before_use

Check if a preview provider is available before using it
  • Loading branch information
blizzz authored Aug 20, 2018
2 parents c260e44 + 5b10374 commit 4b92a09
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 2 deletions.
4 changes: 4 additions & 0 deletions lib/private/Preview/Generator.php
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,10 @@ private function getMaxPreview(ISimpleFolder $previewFolder, File $file, $mimeTy
continue;
}

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

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

Expand Down
14 changes: 12 additions & 2 deletions tests/lib/Preview/GeneratorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -150,16 +150,24 @@ public function testGetNewPreview() {
}));

$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') {
Expand All @@ -168,6 +176,8 @@ public function testGetNewPreview() {
return $invalidProvider;
} else if ($provider === 'validProvider') {
return $validProvider;
} else if ($provider === 'unavailableProvider') {
return $unavailableProvider;
}
$this->fail('Unexpected provider requested');
}));
Expand Down

0 comments on commit 4b92a09

Please sign in to comment.