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
|
Sun Feb 12 11:26:03 UTC 2017 - fabian@ritter-vogt.de
|
||||||
|
|
||||||
|
@ -20,11 +20,11 @@
|
|||||||
|
|
||||||
%bcond_without lang
|
%bcond_without lang
|
||||||
Name: plasma5-workspace
|
Name: plasma5-workspace
|
||||||
Version: 5.9.1
|
Version: 5.9.2
|
||||||
Release: 0
|
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}}
|
%{!?_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}')}
|
%{!?_plasma5_version: %global _plasma5_version %(echo %{_plasma5_bugfix} | awk -F. '{print $1"."$2}')}
|
||||||
Summary: The KDE Plasma Workspace Components
|
Summary: The KDE Plasma Workspace Components
|
||||||
License: GPL-2.0+
|
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
|
# 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
|
Patch2: 0001-Ignore-default-sddm-face-icons.patch
|
||||||
# PATCHES 100-200 and above are from upstream 5.9 branch
|
# 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
|
# PATCHES 201-300 and above are from upstream master/5.10 branch
|
||||||
BuildRequires: breeze5-icons
|
BuildRequires: breeze5-icons
|
||||||
BuildRequires: fdupes
|
BuildRequires: fdupes
|
||||||
@ -212,7 +210,6 @@ workspace. Development files.
|
|||||||
%patch0 -p1
|
%patch0 -p1
|
||||||
%patch1 -p1
|
%patch1 -p1
|
||||||
%patch2 -p1
|
%patch2 -p1
|
||||||
%patch100 -p1
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%cmake_kf5 -d build -- -DKDE4_COMMON_PAM_SERVICE=xdm -DKDE_DEFAULT_HOME=.kde4 -DCMAKE_INSTALL_LOCALEDIR=%{_kf5_localedir}
|
%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}
|
%if %{with lang}
|
||||||
%files lang -f %{name}.lang
|
%files lang -f %{name}.lang
|
||||||
%doc %lang(ca) %{_kf5_htmldir}/ca/
|
%doc %lang(de) %{_kf5_htmldir}/de/
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
Loading…
x
Reference in New Issue
Block a user