This commit is contained in:
parent
a92bc17591
commit
9169e1ce8c
@ -1,172 +0,0 @@
|
||||
From 7b1dc9a4bb039ff5ff2a5b71a2c6bc687ad1db72 Mon Sep 17 00:00:00 2001
|
||||
From: Harald Sitter <sitter@kde.org>
|
||||
Date: Thu, 2 Feb 2017 19:57:23 +0100
|
||||
Subject: [PATCH] make services disqualification much stricter
|
||||
|
||||
Summary:
|
||||
after the recent set of changes to disqualification we ended up with a bit
|
||||
too lax disqualification. if we saw the exec OR the storageid we'd
|
||||
hence forth disqualify a service with either of them being equal.
|
||||
|
||||
in case of system settings this causes a match problem. systemsettings
|
||||
has two desktop files one !KDE and one OnlyKDE they are however exactly
|
||||
the same except for a different name and storageid. as a result if the !KDE
|
||||
one is encountered first it will be disqualified on account of
|
||||
noDisplay=true and marked as seen. when the OnlyKDE systemsettings is then
|
||||
iterated it will already have the Exec entry in the seen list and be
|
||||
disqualified on account of that.
|
||||
|
||||
to prevent this type of confusion make it a requirement to match both
|
||||
storageid AND exec before disqualifying.
|
||||
|
||||
it may actually be suitable to drop the exec altogether. say I copy firefox
|
||||
into the user local applications dir and set it NoDisplay=true but change
|
||||
the exec. this would still lead to the system-wide firefox being found as
|
||||
it is not getting disqualified. long story short: maybe we should
|
||||
disqualify services solely on the storageid?
|
||||
|
||||
Test Plan:
|
||||
- new autotest case
|
||||
- fails without changes
|
||||
- passes with changes
|
||||
|
||||
Reviewers: broulik
|
||||
|
||||
Reviewed By: broulik
|
||||
|
||||
Subscribers: plasma-devel
|
||||
|
||||
Tags: #plasma
|
||||
|
||||
Differential Revision: https://phabricator.kde.org/D4415
|
||||
---
|
||||
.../autotests/fixtures/kdesystemsettings.desktop | 13 +++++++++
|
||||
.../autotests/fixtures/systemsettings.desktop | 14 +++++++++
|
||||
runners/services/autotests/servicerunnertest.cpp | 34 ++++++++++++++++++++++
|
||||
runners/services/servicerunner.cpp | 3 +-
|
||||
4 files changed, 63 insertions(+), 1 deletion(-)
|
||||
create mode 100644 runners/services/autotests/fixtures/kdesystemsettings.desktop
|
||||
create mode 100644 runners/services/autotests/fixtures/systemsettings.desktop
|
||||
|
||||
diff --git a/runners/services/autotests/fixtures/kdesystemsettings.desktop b/runners/services/autotests/fixtures/kdesystemsettings.desktop
|
||||
new file mode 100644
|
||||
index 00000000..0623f57a
|
||||
--- /dev/null
|
||||
+++ b/runners/services/autotests/fixtures/kdesystemsettings.desktop
|
||||
@@ -0,0 +1,13 @@
|
||||
+[Desktop Entry]
|
||||
+Exec=systemsettings5
|
||||
+Icon=preferences-system
|
||||
+Type=Application
|
||||
+X-KDE-StartupNotify=true
|
||||
+NotShowIn=KDE;
|
||||
+
|
||||
+GenericName=KDE System Settings ServiceRunnerTest
|
||||
+
|
||||
+Name=KDE System Settings ServiceRunnerTest
|
||||
+
|
||||
+X-DBUS-StartupType=Unique
|
||||
+Categories=Qt;KDE;Settings;
|
||||
diff --git a/runners/services/autotests/fixtures/systemsettings.desktop b/runners/services/autotests/fixtures/systemsettings.desktop
|
||||
new file mode 100644
|
||||
index 00000000..935db902
|
||||
--- /dev/null
|
||||
+++ b/runners/services/autotests/fixtures/systemsettings.desktop
|
||||
@@ -0,0 +1,14 @@
|
||||
+[Desktop Entry]
|
||||
+Exec=systemsettings5
|
||||
+Icon=preferences-system
|
||||
+Type=Application
|
||||
+X-DocPath=systemsettings/index.html
|
||||
+X-KDE-StartupNotify=true
|
||||
+OnlyShowIn=KDE;
|
||||
+
|
||||
+GenericName=System Settings ServiceRunnerTest
|
||||
+
|
||||
+Name=System Settings ServiceRunnerTest
|
||||
+
|
||||
+X-DBUS-StartupType=Unique
|
||||
+Categories=Qt;KDE;Settings;
|
||||
diff --git a/runners/services/autotests/servicerunnertest.cpp b/runners/services/autotests/servicerunnertest.cpp
|
||||
index d0c6daed..d3217768 100644
|
||||
--- a/runners/services/autotests/servicerunnertest.cpp
|
||||
+++ b/runners/services/autotests/servicerunnertest.cpp
|
||||
@@ -38,6 +38,7 @@ private Q_SLOTS:
|
||||
|
||||
void testChromeAppsRelevance();
|
||||
void testKonsoleVsYakuakeComment();
|
||||
+ void testSystemSettings();
|
||||
};
|
||||
|
||||
void ServiceRunnerTest::initTestCase()
|
||||
@@ -58,6 +59,11 @@ void ServiceRunnerTest::initTestCase()
|
||||
setlocale(LC_ALL, "C.utf8");
|
||||
|
||||
KSycoca::self()->ensureCacheValid();
|
||||
+
|
||||
+ // Make sure noDisplay behaves consistently WRT OnlyShowIn etc.
|
||||
+ QVERIFY(setenv("XDG_CURRENT_DESKTOP", "KDE", 1) == 0);
|
||||
+ // NOTE: noDisplay also includes X-KDE-OnlyShowOnQtPlatforms which is a bit harder to fake
|
||||
+ // and not currently under testing anyway.
|
||||
}
|
||||
|
||||
void ServiceRunnerTest::cleanupTestCase()
|
||||
@@ -123,6 +129,34 @@ void ServiceRunnerTest::testKonsoleVsYakuakeComment()
|
||||
QVERIFY(yakuakeFound);
|
||||
}
|
||||
|
||||
+void ServiceRunnerTest::testSystemSettings()
|
||||
+{
|
||||
+ // In 5.9.0 'System Settings' suddenly didn't come back as a match for 'settings' anymore.
|
||||
+ // Sytem Settings has a noKDE version and a KDE version, if the noKDE version is encountered
|
||||
+ // first it will be added to the seen cache, however disqualification of already seen items
|
||||
+ // may then also disqualify the KDE version of system settings on account of having already
|
||||
+ // seen it. This test makes sure we find the right version.
|
||||
+ ServiceRunner runner(this, QVariantList());
|
||||
+ Plasma::RunnerContext context;
|
||||
+ context.setQuery("settings");
|
||||
+
|
||||
+ runner.match(context);
|
||||
+
|
||||
+ bool systemSettingsFound = false;
|
||||
+ bool foreignSystemSettingsFound = false;
|
||||
+ for (auto match : context.matches()) {
|
||||
+ qDebug() << "matched" << match.text();
|
||||
+ if (match.text() == "System Settings ServiceRunnerTest") {
|
||||
+ systemSettingsFound = true;
|
||||
+ }
|
||||
+ if (match.text() == "KDE System Settings ServiceRunnerTest") {
|
||||
+ foreignSystemSettingsFound = true;
|
||||
+ }
|
||||
+ }
|
||||
+ QVERIFY(systemSettingsFound);
|
||||
+ QVERIFY(!foreignSystemSettingsFound);
|
||||
+}
|
||||
+
|
||||
QTEST_MAIN(ServiceRunnerTest)
|
||||
|
||||
#include "servicerunnertest.moc"
|
||||
diff --git a/runners/services/servicerunner.cpp b/runners/services/servicerunner.cpp
|
||||
index 68756f91..2f840a9b 100644
|
||||
--- a/runners/services/servicerunner.cpp
|
||||
+++ b/runners/services/servicerunner.cpp
|
||||
@@ -76,7 +76,7 @@ private:
|
||||
|
||||
bool hasSeen(const KService::Ptr &service)
|
||||
{
|
||||
- return m_seen.contains(service->storageId()) ||
|
||||
+ return m_seen.contains(service->storageId()) &&
|
||||
m_seen.contains(service->exec());
|
||||
}
|
||||
|
||||
@@ -88,6 +88,7 @@ private:
|
||||
bool disqualify(const KService::Ptr &service)
|
||||
{
|
||||
auto ret = hasSeen(service) || service->noDisplay();
|
||||
+ qCDebug(RUNNER_SERVICES) << service->name() << "disqualified?" << ret;
|
||||
seen(service);
|
||||
return ret;
|
||||
}
|
||||
--
|
||||
2.11.0
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:5357a42b1b48546580bc32c7f4c9f80ed61ade8f6b6ce3ba41ba1d3bf46c7d0f
|
||||
size 6972416
|
3
plasma-workspace-5.9.2.tar.xz
Normal file
3
plasma-workspace-5.9.2.tar.xz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3acf08566e569a672c32c07c097facb6784598a19e5e86dc06468da736df4ce5
|
||||
size 6936576
|
@ -1,3 +1,27 @@
|
||||
-------------------------------------------------------------------
|
||||
Tue Feb 14 17:58:13 CET 2017 - fabian@ritter-vogt.de
|
||||
|
||||
- Update to 5.9.2
|
||||
* New feature release
|
||||
* For more details please see:
|
||||
* https://www.kde.org/announcements/plasma-5.9.2.php
|
||||
- Changes since 5.9.1:
|
||||
* TaskManager: add icon to cache after painfully querying it over XCB/NETWM.
|
||||
* Pass args to DataEngine superclass constructor
|
||||
* turn the NotificationItem in a MouseArea
|
||||
* [DesktopView] show() ConfigView when it is already opened
|
||||
* Match QtQuick import to minimum Qt version
|
||||
* [Clipboard plasmoid] Fix line breaks
|
||||
* [System Tray] Part Revert "Trigger context menu on press" as this breaks xembedsniproxy
|
||||
* Rename Application Menu to Global Menu to avoid conflict
|
||||
* [kioslave/remote] Fix porting bugs
|
||||
* [Icon Applet] More sensible minimum height
|
||||
* make services disqualification much stricter
|
||||
* [System Tray Containment] Drop useless Q_INVOKABLE from .cpp file
|
||||
* [System Tray Containment] Ungrab mouse before opening context menu
|
||||
- Remove patches, now upstream:
|
||||
* 0001-make-services-disqualification-much-stricter.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sun Feb 12 11:26:03 UTC 2017 - fabian@ritter-vogt.de
|
||||
|
||||
|
@ -20,11 +20,11 @@
|
||||
|
||||
%bcond_without lang
|
||||
Name: plasma5-workspace
|
||||
Version: 5.9.1
|
||||
Version: 5.9.2
|
||||
Release: 0
|
||||
# Full Plasma 5 version (e.g. 5.9.1)
|
||||
# Full Plasma 5 version (e.g. 5.9.2)
|
||||
%{!?_plasma5_bugfix: %global _plasma5_bugfix %{version}}
|
||||
# Lasted ABI-stable Plasma (e.g. 5.8 in KF5, but 5.9.1 in KUF)
|
||||
# Lasted ABI-stable Plasma (e.g. 5.8 in KF5, but 5.9.2 in KUF)
|
||||
%{!?_plasma5_version: %global _plasma5_version %(echo %{_plasma5_bugfix} | awk -F. '{print $1"."$2}')}
|
||||
Summary: The KDE Plasma Workspace Components
|
||||
License: GPL-2.0+
|
||||
@ -39,8 +39,6 @@ Patch1: change-kioremote-severity.patch
|
||||
# PATCH-FIX-OPENSUSE 0001-Ignore-default-sddm-face-icons.patch boo#1001364 fabian@ritter-vogt.de -- Ignore default sddm face icons
|
||||
Patch2: 0001-Ignore-default-sddm-face-icons.patch
|
||||
# PATCHES 100-200 and above are from upstream 5.9 branch
|
||||
# PATCH-FIX-UPSTREAM 0001-make-services-disqualification-much-stricter.patch sitter@kde.org -- make services disqualification much stricter
|
||||
Patch100: 0001-make-services-disqualification-much-stricter.patch
|
||||
# PATCHES 201-300 and above are from upstream master/5.10 branch
|
||||
BuildRequires: breeze5-icons
|
||||
BuildRequires: fdupes
|
||||
@ -212,7 +210,6 @@ workspace. Development files.
|
||||
%patch0 -p1
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
%patch100 -p1
|
||||
|
||||
%build
|
||||
%cmake_kf5 -d build -- -DKDE4_COMMON_PAM_SERVICE=xdm -DKDE_DEFAULT_HOME=.kde4 -DCMAKE_INSTALL_LOCALEDIR=%{_kf5_localedir}
|
||||
@ -347,7 +344,7 @@ workspace. Development files.
|
||||
|
||||
%if %{with lang}
|
||||
%files lang -f %{name}.lang
|
||||
%doc %lang(ca) %{_kf5_htmldir}/ca/
|
||||
%doc %lang(de) %{_kf5_htmldir}/de/
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
|
Loading…
x
Reference in New Issue
Block a user