diff --git a/apps/theming/lib/Controller/ThemingController.php b/apps/theming/lib/Controller/ThemingController.php index 260dec83947d2..77774b6dbbcd9 100644 --- a/apps/theming/lib/Controller/ThemingController.php +++ b/apps/theming/lib/Controller/ThemingController.php @@ -436,7 +436,7 @@ public function getManifest($app) { 'sizes' => '16x16' ] ], - 'display' => 'standalone' + 'display' => $this->config->getSystemValueBool('theming.standalone_window.enabled', true) ? 'standalone' : 'browser' ]; $response = new Http\JSONResponse($responseJS); $response->cacheFor(3600); diff --git a/apps/theming/tests/Controller/ThemingControllerTest.php b/apps/theming/tests/Controller/ThemingControllerTest.php index 4931a148b7853..e0d5ab120c125 100644 --- a/apps/theming/tests/Controller/ThemingControllerTest.php +++ b/apps/theming/tests/Controller/ThemingControllerTest.php @@ -731,8 +731,15 @@ public function testGetLoginBackground() { $expected->setContentSecurityPolicy($csp); @$this->assertEquals($expected, $this->themingController->getImage('background')); } + public static function dataGetManifest(): array { + return [ + [true], + [false], + ]; + } - public function testGetManifest() { + /** @dataProvider dataGetManifest */ + public function testGetManifest(bool $standalone) { $this->config ->expects($this->once()) ->method('getAppValue') @@ -756,6 +763,11 @@ public function testGetManifest() { 'touchicon', 'favicon', ); + $this->config + ->expects($this->once()) + ->method('getSystemValueBool') + ->with('theming.standalone_window.enabled', true) + ->willReturn($standalone); $response = new Http\JSONResponse([ 'name' => 'Nextcloud', 'start_url' => 'localhost', @@ -772,7 +784,7 @@ public function testGetManifest() { 'sizes' => '16x16' ] ], - 'display' => 'standalone', + 'display' => $standalone ? 'standalone' : 'browser', 'short_name' => 'Nextcloud', 'theme_color' => null, 'background_color' => null, diff --git a/config/config.sample.php b/config/config.sample.php index ca52ec677c813..a49f6b01d3378 100644 --- a/config/config.sample.php +++ b/config/config.sample.php @@ -1946,6 +1946,14 @@ */ 'enforce_theme' => '', + +/** + * This setting allows to disable the PWA functionality that allows browsers to open web applications in dedicated windows. + * + * Defaults to ``true`` + */ +'theming.standalone_window.enabled' => true, + /** * The default cipher for encrypting files. Currently supported are: * - AES-256-CTR