Hello community, here is the log from the commit of package signon-ui for openSUSE:Factory checked in at 2018-10-04 18:56:54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/signon-ui (Old) and /work/SRC/openSUSE:Factory/.signon-ui.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "signon-ui" Thu Oct 4 18:56:54 2018 rev:2 rq:639229 version:0.17+20171022 Changes: -------- --- /work/SRC/openSUSE:Factory/signon-ui/signon-ui.changes 2015-05-11 19:23:20.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.signon-ui.new/signon-ui.changes 2018-10-04 18:56:55.739518783 +0200 @@ -1,0 +2,24 @@ +Sat Sep 29 13:37:39 UTC 2018 - fab...@ritter-vogt.de + +- Add patch to return a proper username again: + * 0001-Reintroduce-the-username-field-reading-with-webkit-o.patch + +------------------------------------------------------------------- +Sat Sep 8 16:44:28 UTC 2018 - fab...@ritter-vogt.de + +- Update to webengine branch (4368bb77d9d1abc2978af514225ba4a42c29a646): + * No WebKit dependency anymore + * While it has missing features, it's important to switch to a + maintained browser engine. + * Does not support webkit-options.d, which means usernames will + be blank and autologin non-functional. Tokens are still saved. +- Add patch to fix bug in WebEngine integration: + * 0001-Fix-WebEngine-cache-directory-path.patch + +------------------------------------------------------------------- +Fri Nov 3 09:30:22 UTC 2017 - buschman...@opensuse.org + +- Update to version 0.17+15.10.20150810 + * no changelog available + +------------------------------------------------------------------- Old: ---- signon-ui-0.15.tar.bz2 New: ---- 0001-Fix-WebEngine-cache-directory-path.patch 0001-Reintroduce-the-username-field-reading-with-webkit-o.patch signon-ui-4368bb77d9d1abc2978af514225ba4a42c29a646.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ signon-ui.spec ++++++ --- /var/tmp/diff_new_pack.VcRw7u/_old 2018-10-04 18:56:56.571517736 +0200 +++ /var/tmp/diff_new_pack.VcRw7u/_new 2018-10-04 18:56:56.575517731 +0200 @@ -1,7 +1,7 @@ # # spec file for package signon-ui # -# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,52 +16,60 @@ # +# webengine branch +%define commit 4368bb77d9d1abc2978af514225ba4a42c29a646 + Name: signon-ui -Version: 0.15 +Version: 0.17+20171022 Release: 0 Summary: Single Sign On UI -License: GPL-3.0 +License: GPL-3.0-only Group: System/GUI/Other -Url: https://launchpad.net/signon-ui -Source: signon-ui-%{version}.tar.bz2 +Url: https://gitlab.com/accounts-sso/signon-ui +Source: https://gitlab.com/accounts-sso/signon-ui/-/archive/%{commit}/signon-ui-%{commit}.tar.bz2 +# Patches for upstream, but upstream is dead +Patch1: 0001-Fix-WebEngine-cache-directory-path.patch +Patch2: 0001-Reintroduce-the-username-field-reading-with-webkit-o.patch BuildRequires: libaccounts-qt5-devel BuildRequires: libsignon-qt5-devel BuildRequires: signon-plugins-devel BuildRequires: pkgconfig(Qt5DBus) BuildRequires: pkgconfig(Qt5Test) -BuildRequires: pkgconfig(Qt5WebKit) -BuildRequires: pkgconfig(Qt5WebKitWidgets) +BuildRequires: pkgconfig(Qt5WebEngine) BuildRequires: pkgconfig(libnotify) BuildRequires: pkgconfig(libproxy-1.0) BuildRequires: pkgconfig(x11) BuildRequires: pkgconfig(xext) +Requires: libQt5WebChannel5-imports %description This package contains the user interface for the signond Single Sign On service. %prep -%setup -q +%setup -q -n %{name}-%{commit} +%autopatch -p1 + +# Don't build tests +sed -i '/tests/d' signon-ui.pro # Fix libdir sed -i 's/\/lib/\/%{_lib}/g' common-installs-config.pri %build -qmake-qt5 \ +%qmake5 \ PREFIX=%{_prefix} \ - LIBDIR=%{_libdir} \ - QMAKE_CXXFLAGS="%{optflags}" + LIBDIR=%{_libdir} -make %{?_smp_mflags} +%make_jobs %install -make install INSTALL_ROOT=%{buildroot} +%qmake5_install +# The .desktop file is useless +rm -rf %{buildroot}%{_datadir}/applications %files -%defattr(-,root,root) -%doc COPYING +%license COPYING %{_bindir}/signon-ui -%{_bindir}/signon-ui-unittest -%{_bindir}/tst_inactivity_timer %{_datadir}/dbus-1/services/com.canonical.indicators.webcredentials.service %{_datadir}/dbus-1/services/com.nokia.singlesignonui.service ++++++ 0001-Fix-WebEngine-cache-directory-path.patch ++++++ >From e155e6e70ce7a6c52837688b570e8020faac5496 Mon Sep 17 00:00:00 2001 From: Fabian Vogt <fab...@ritter-vogt.de> Date: Sat, 8 Sep 2018 18:58:42 +0200 Subject: [PATCH] Fix WebEngine cache directory path Otherwise the URL is treated as a path, which results in a folder "file:" in ~. --- src/browser-request.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/browser-request.cpp b/src/browser-request.cpp index 146bec8..1895d59 100644 --- a/src/browser-request.cpp +++ b/src/browser-request.cpp @@ -132,7 +132,7 @@ void BrowserRequestPrivate::start() m_dialog->rootContext()->setContextProperty("request", this); m_dialog->rootContext()->setContextProperty("rootDir", - QUrl::fromLocalFile(rootDir.absolutePath())); + rootDir.absolutePath()); m_dialog->setSource(webview); } -- 2.18.0 ++++++ 0001-Reintroduce-the-username-field-reading-with-webkit-o.patch ++++++ >From 90890e7d27c544e3557bed2f6624614141db0fc4 Mon Sep 17 00:00:00 2001 From: Fabian Vogt <fab...@ritter-vogt.de> Date: Sat, 29 Sep 2018 15:34:43 +0200 Subject: [PATCH] Reintroduce the username field reading with webkit-options.d Use WebChannel to spy on the input fields. Use the old UserAgent to make sure the selectors match. --- src/browser-request.cpp | 11 +++++++++++ src/qml/WebView.qml | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/src/browser-request.cpp b/src/browser-request.cpp index 1895d59..e58f302 100644 --- a/src/browser-request.cpp +++ b/src/browser-request.cpp @@ -31,6 +31,7 @@ #include <QStandardPaths> #include <QTimer> #include <SignOn/uisessiondata_priv.h> +#include <QSettings> using namespace SignOnUi; using namespace SignOnUi::QQuick; @@ -43,8 +44,10 @@ class BrowserRequestPrivate: public QObject Q_DECLARE_PUBLIC(BrowserRequest) Q_PROPERTY(QUrl pageComponentUrl READ pageComponentUrl CONSTANT) Q_PROPERTY(QUrl currentUrl READ currentUrl WRITE setCurrentUrl) + Q_PROPERTY(QString username MEMBER m_username) Q_PROPERTY(QUrl startUrl READ startUrl CONSTANT) Q_PROPERTY(QUrl finalUrl READ finalUrl CONSTANT) + Q_PROPERTY(QString usernameSelector READ usernameSelector CONSTANT) public: BrowserRequestPrivate(BrowserRequest *request); @@ -58,6 +61,7 @@ public: QUrl startUrl() const { return m_startUrl; } QUrl finalUrl() const { return m_finalUrl; } QUrl responseUrl() const { return m_responseUrl; } + QString usernameSelector() const { return m_settings->value("UsernameField").toString(); } public Q_SLOTS: void cancel(); @@ -77,6 +81,8 @@ private: QUrl m_startUrl; QUrl m_finalUrl; QUrl m_responseUrl; + QString m_username; + QSettings *m_settings; QTimer m_failTimer; mutable BrowserRequest *q_ptr; }; @@ -116,6 +122,9 @@ void BrowserRequestPrivate::start() m_finalUrl = params.value(SSOUI_KEY_FINALURL).toString(); m_startUrl = params.value(SSOUI_KEY_OPENURL).toString(); + + m_settings = new QSettings("signon-ui/webkit-options.d/" + m_startUrl.host(), QString(), this); + buildDialog(params); QObject::connect(m_dialog, SIGNAL(finished(int)), @@ -231,6 +240,8 @@ void BrowserRequestPrivate::onFinished() QVariantMap reply; QUrl url = m_responseUrl.isEmpty() ? m_currentUrl : m_responseUrl; reply[SSOUI_KEY_URLRESPONSE] = url.toString(); + if (!m_username.isEmpty()) + reply[SSOUI_KEY_USERNAME] = m_username; m_dialog->close(); diff --git a/src/qml/WebView.qml b/src/qml/WebView.qml index 33462b8..3af0239 100644 --- a/src/qml/WebView.qml +++ b/src/qml/WebView.qml @@ -1,4 +1,5 @@ import QtQuick 2.0 +import QtWebChannel 1.0 import QtWebEngine 1.1 WebEngineView { @@ -25,8 +26,43 @@ WebEngineView { profile: WebEngineProfile { cachePath: rootDir persistentStoragePath: rootDir + // For compatibility with the webkit-options.d values + httpUserAgent: "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.21 (KHTML, like Gecko) Safari/537.21" } + QtObject { + id: commProxy + WebChannel.id: "comm" + property string username: "" + property string selector: signonRequest.usernameSelector + onUsernameChanged: signonRequest.username = username + } + + WebChannel { + id: chan + registeredObjects: [commProxy] + } + webChannel: chan + + WebEngineScript { + id: qwebchannel + injectionPoint: WebEngineScript.DocumentCreation + sourceUrl: "qrc:/qtwebchannel/qwebchannel.js" + worldId: WebEngineScript.MainWorld + } + + WebEngineScript { + id: commScript + injectionPoint: WebEngineScript.DocumentReady + sourceCode: "new QWebChannel(window.qt.webChannelTransport, function(channel) {" + + " var elem = document.querySelector(channel.objects.comm.selector);" + + " elem.addEventListener('keyup', function() { channel.objects.comm.username = elem.value; });" + + "});" + worldId: WebEngineScript.MainWorld + } + + userScripts: [qwebchannel, commScript] + ProgressBar { anchors.top: parent.top anchors.left: parent.left -- 2.18.0 ++++++ signon-ui-0.15.tar.bz2 -> signon-ui-4368bb77d9d1abc2978af514225ba4a42c29a646.tar.bz2 ++++++ ++++ 4153 lines of diff (skipped)