aboutsummaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorFerdinand Thiessen <opensource@fthiessen.de>2024-05-17 14:39:04 +0200
committerAndy Scherzinger <info@andy-scherzinger.de>2024-07-11 08:22:47 +0200
commiteb282a6cee3099d72273337256ffef70c66da251 (patch)
treec1c5c6970ed620e0b6f65a3468cb4a86eee918dd /apps
parent12d9c1ce965c5f6f712ee25e2ce552b570ae6c71 (diff)
downloadnextcloud-server-eb282a6cee3099d72273337256ffef70c66da251.tar.gz
nextcloud-server-eb282a6cee3099d72273337256ffef70c66da251.zip
fix(theming): Conitionally disable blur filter for performance
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Diffstat (limited to 'apps')
-rw-r--r--apps/theming/lib/Themes/DefaultTheme.php58
-rw-r--r--apps/theming/tests/Service/ThemesServiceTest.php6
-rw-r--r--apps/theming/tests/Themes/DarkHighContrastThemeTest.php1
-rw-r--r--apps/theming/tests/Themes/DarkThemeTest.php1
-rw-r--r--apps/theming/tests/Themes/DefaultThemeTest.php1
-rw-r--r--apps/theming/tests/Themes/DyslexiaFontTest.php1
-rw-r--r--apps/theming/tests/Themes/HighContrastThemeTest.php1
7 files changed, 42 insertions, 27 deletions
diff --git a/apps/theming/lib/Themes/DefaultTheme.php b/apps/theming/lib/Themes/DefaultTheme.php
index 38b76d158b4..bbde1829203 100644
--- a/apps/theming/lib/Themes/DefaultTheme.php
+++ b/apps/theming/lib/Themes/DefaultTheme.php
@@ -25,6 +25,7 @@ declare(strict_types=1);
*/
namespace OCA\Theming\Themes;
+use OC\AppFramework\Http\Request;
use OCA\Theming\ImageManager;
use OCA\Theming\ITheme;
use OCA\Theming\Service\BackgroundService;
@@ -33,41 +34,27 @@ use OCA\Theming\Util;
use OCP\App\IAppManager;
use OCP\IConfig;
use OCP\IL10N;
+use OCP\IRequest;
use OCP\IURLGenerator;
use OCP\IUserSession;
class DefaultTheme implements ITheme {
use CommonThemeTrait;
- public Util $util;
- public ThemingDefaults $themingDefaults;
- public IUserSession $userSession;
- public IURLGenerator $urlGenerator;
- public ImageManager $imageManager;
- public IConfig $config;
- public IL10N $l;
- public IAppManager $appManager;
-
public string $defaultPrimaryColor;
public string $primaryColor;
- public function __construct(Util $util,
- ThemingDefaults $themingDefaults,
- IUserSession $userSession,
- IURLGenerator $urlGenerator,
- ImageManager $imageManager,
- IConfig $config,
- IL10N $l,
- IAppManager $appManager) {
- $this->util = $util;
- $this->themingDefaults = $themingDefaults;
- $this->userSession = $userSession;
- $this->urlGenerator = $urlGenerator;
- $this->imageManager = $imageManager;
- $this->config = $config;
- $this->l = $l;
- $this->appManager = $appManager;
-
+ public function __construct(
+ public Util $util,
+ public ThemingDefaults $themingDefaults,
+ public IUserSession $userSession,
+ public IURLGenerator $urlGenerator,
+ public ImageManager $imageManager,
+ public IConfig $config,
+ public IL10N $l,
+ public IAppManager $appManager,
+ private ?IRequest $request,
+ ) {
$this->defaultPrimaryColor = $this->themingDefaults->getDefaultColorPrimary();
$this->primaryColor = $this->themingDefaults->getColorPrimary();
@@ -120,12 +107,29 @@ class DefaultTheme implements ITheme {
$colorSuccess = '#2d7b41';
$colorInfo = '#0071ad';
+ $user = $this->userSession->getUser();
+ // Chromium based browsers currently (2024) have huge performance issues with blur filters
+ $isChromium = $this->request !== null && $this->request->isUserAgent([Request::USER_AGENT_CHROME, Request::USER_AGENT_MS_EDGE]);
+ // Ignore MacOS because they always have hardware accelartion
+ $isChromium = $isChromium && !$this->request->isUserAgent(['/Macintosh/']);
+ // Allow to force the blur filter
+ $forceEnableBlur = $user === null ? false : $this->config->getUserValue(
+ $user->getUID(),
+ 'theming',
+ 'force_enable_blur_filter',
+ );
+ $workingBlur = match($forceEnableBlur) {
+ 'yes' => true,
+ 'no' => false,
+ default => !$isChromium
+ };
+
$variables = [
'--color-main-background' => $colorMainBackground,
'--color-main-background-rgb' => $colorMainBackgroundRGB,
'--color-main-background-translucent' => 'rgba(var(--color-main-background-rgb), .97)',
'--color-main-background-blur' => 'rgba(var(--color-main-background-rgb), .8)',
- '--filter-background-blur' => 'blur(25px)',
+ '--filter-background-blur' => $workingBlur ? 'blur(25px)' : 'none',
// to use like this: background-image: linear-gradient(0, var('--gradient-main-background));
'--gradient-main-background' => 'var(--color-main-background) 0%, var(--color-main-background-translucent) 85%, transparent 100%',
diff --git a/apps/theming/tests/Service/ThemesServiceTest.php b/apps/theming/tests/Service/ThemesServiceTest.php
index 166faedd10f..4728a2cf64e 100644
--- a/apps/theming/tests/Service/ThemesServiceTest.php
+++ b/apps/theming/tests/Service/ThemesServiceTest.php
@@ -332,6 +332,7 @@ class ThemesServiceTest extends TestCase {
$this->config,
$l10n,
$appManager,
+ null,
),
'light' => new LightTheme(
$util,
@@ -342,6 +343,7 @@ class ThemesServiceTest extends TestCase {
$this->config,
$l10n,
$appManager,
+ null,
),
'dark' => new DarkTheme(
$util,
@@ -352,6 +354,7 @@ class ThemesServiceTest extends TestCase {
$this->config,
$l10n,
$appManager,
+ null,
),
'light-highcontrast' => new HighContrastTheme(
$util,
@@ -362,6 +365,7 @@ class ThemesServiceTest extends TestCase {
$this->config,
$l10n,
$appManager,
+ null,
),
'dark-highcontrast' => new DarkHighContrastTheme(
$util,
@@ -372,6 +376,7 @@ class ThemesServiceTest extends TestCase {
$this->config,
$l10n,
$appManager,
+ null,
),
'opendyslexic' => new DyslexiaFont(
$util,
@@ -382,6 +387,7 @@ class ThemesServiceTest extends TestCase {
$this->config,
$l10n,
$appManager,
+ null,
),
];
}
diff --git a/apps/theming/tests/Themes/DarkHighContrastThemeTest.php b/apps/theming/tests/Themes/DarkHighContrastThemeTest.php
index d3a357bcfe7..f286a48780a 100644
--- a/apps/theming/tests/Themes/DarkHighContrastThemeTest.php
+++ b/apps/theming/tests/Themes/DarkHighContrastThemeTest.php
@@ -110,6 +110,7 @@ class DarkHighContrastThemeTest extends AccessibleThemeTestCase {
$this->config,
$this->l10n,
$this->appManager,
+ null,
);
parent::setUp();
diff --git a/apps/theming/tests/Themes/DarkThemeTest.php b/apps/theming/tests/Themes/DarkThemeTest.php
index 1a50e08d0f5..dfd3e246393 100644
--- a/apps/theming/tests/Themes/DarkThemeTest.php
+++ b/apps/theming/tests/Themes/DarkThemeTest.php
@@ -107,6 +107,7 @@ class DarkThemeTest extends AccessibleThemeTestCase {
$this->config,
$this->l10n,
$this->appManager,
+ null,
);
parent::setUp();
diff --git a/apps/theming/tests/Themes/DefaultThemeTest.php b/apps/theming/tests/Themes/DefaultThemeTest.php
index 7e823cb4843..e4aaad0a9f0 100644
--- a/apps/theming/tests/Themes/DefaultThemeTest.php
+++ b/apps/theming/tests/Themes/DefaultThemeTest.php
@@ -107,6 +107,7 @@ class DefaultThemeTest extends AccessibleThemeTestCase {
$this->config,
$this->l10n,
$this->appManager,
+ null,
);
parent::setUp();
diff --git a/apps/theming/tests/Themes/DyslexiaFontTest.php b/apps/theming/tests/Themes/DyslexiaFontTest.php
index 7a55d168fea..a526f94d4aa 100644
--- a/apps/theming/tests/Themes/DyslexiaFontTest.php
+++ b/apps/theming/tests/Themes/DyslexiaFontTest.php
@@ -110,6 +110,7 @@ class DyslexiaFontTest extends TestCase {
$this->config,
$this->l10n,
$this->appManager,
+ null,
);
parent::setUp();
diff --git a/apps/theming/tests/Themes/HighContrastThemeTest.php b/apps/theming/tests/Themes/HighContrastThemeTest.php
index 991f56512e3..e46825e9518 100644
--- a/apps/theming/tests/Themes/HighContrastThemeTest.php
+++ b/apps/theming/tests/Themes/HighContrastThemeTest.php
@@ -110,6 +110,7 @@ class HighContrastThemeTest extends AccessibleThemeTestCase {
$this->config,
$this->l10n,
$this->appManager,
+ null,
);
parent::setUp();