Hello community, here is the log from the commit of package libkgapi for openSUSE:Factory checked in at 2017-05-08 19:01:01 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libkgapi (Old) and /work/SRC/openSUSE:Factory/.libkgapi.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libkgapi" Mon May 8 19:01:01 2017 rev:17 rq:491703 version:17.04.0 Changes: -------- --- /work/SRC/openSUSE:Factory/libkgapi/libkgapi.changes 2016-10-10 17:34:16.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.libkgapi.new/libkgapi.changes 2017-05-08 19:01:02.788821241 +0200 @@ -1,0 +2,79 @@ +Thu Apr 27 21:01:24 UTC 2017 - [email protected] + +- Add upstream patch adapt-to-changes-in-google-oauth.patch: + * Fix for changes in Google OAuth process + +------------------------------------------------------------------- +Fri Apr 21 07:41:05 UTC 2017 - [email protected] + +- Remove all Recommends on non-core packages, since they will + require the core one + +------------------------------------------------------------------- +Fri Apr 21 07:20:14 UTC 2017 - [email protected] + +- Make libKPimGAPICore5 provide libkgapi, so that instaling + languages (which use a single file) will work + +------------------------------------------------------------------- +Sun Apr 16 10:45:15 CEST 2017 - [email protected] + +- Update to 17.04.0 + * New feature release + * For more details please see: + * https://www.kde.org/announcements/announce-applications-17.04.0.php +- Changes since 17.03.90: + * Fix some clazy warning + +------------------------------------------------------------------- +Wed Apr 12 20:26:03 CEST 2017 - [email protected] + +- Update to 17.03.90 + * New bugfix release + * For more details please see: + * https://www.kde.org/announcements/announce-applications-17.04-rc.php +- Changes since 17.03.80: + * None + +------------------------------------------------------------------- +Fri Mar 31 18:29:51 UTC 2017 - [email protected] + +- Build only for architectures compatible with Qt WebEngine + +------------------------------------------------------------------- +Sat Mar 25 23:10:59 CET 2017 - [email protected] + +- Update to 17.03.80 + * New feature release + * For more details please see: + * https://www.kde.org/announcements/announce-applications-17.03.80.php +- Changes since 5.3.1: + * increase dependancies + * Use KDE_INSTALL_TARGETS_DEFAULT_ARGS when installing targets + * It's in official release + we don't use i18n + * Fixup .reviewboardrc + * src/latitude/latitudeservice.cpp - Q_UNUSED + * Make Qt l10 tools happier + * Fix version + * AuthJob: emit finished() when dialog is rejected + * Rename CMake target prefix from KF5 to KPim + * Fix typo in quotaBytesUserAggregate() method + * Fix compile with Qt 5.8: add missing QImage includes + * Fix compile with Qt 5.8: add missing QImage includes + * USe nullptr + * Add missing Q_DECL_OVERRIDE + * Clean up. Increase qt dependancy + * use Q_NULLPTR + * Increase version + * increase version + * drive: deprecate hidden() and setHidden() in File + * Relicense to LGPLv2.1 or v3 or later versions approved by KDE e.V. + * Remove stray WebKitWidgets reference. + * Remove unused KF5CoreAddons dependency. + * Switch to QtWebEngine + * Move tests to autotests + * Update AUTHORS + * Increase version + * Fix ts2Str() UTC conversion + +------------------------------------------------------------------- Old: ---- libkgapi-5.3.1.tar.xz New: ---- adapt-to-changes-in-google-oauth.patch libkgapi-17.04.0.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libkgapi.spec ++++++ --- /var/tmp/diff_new_pack.2GR7n1/_old 2017-05-08 19:01:03.624703160 +0200 +++ /var/tmp/diff_new_pack.2GR7n1/_new 2017-05-08 19:01:03.628702595 +0200 @@ -1,7 +1,7 @@ # # spec file for package libkgapi # -# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2017 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,93 +16,94 @@ # +%bcond_without lang + Name: libkgapi -Version: 5.3.1 +Version: 17.04.0 Release: 0 +# Latest stable Applications (e.g. 16.08 in KA, but 16.11.80 in KUA) +%{!?_kapp_version: %global _kapp_version %(echo %{version}| awk -F. '{print $1"."$2}')} Summary: Extension for accessing your Google data License: GPL-2.0+ Group: System/GUI/KDE Url: http://www.kde.org -Source0: http://download.kde.org/stable/%{name}/%{version}/src/%{name}-%{version}.tar.xz -BuildRequires: extra-cmake-modules >= 5.17.0 +Source0: %{name}-%{version}.tar.xz +# PATCH-FIX-UPSTREAM +Patch0: adapt-to-changes-in-google-oauth.patch +BuildRequires: extra-cmake-modules >= 1.0.0 +BuildRequires: kcalcore-devel +BuildRequires: kcontacts5-devel +BuildRequires: kcoreaddons-devel +BuildRequires: kdelibs4support-devel BuildRequires: kf5-filesystem -BuildRequires: cmake(KF5CalendarCore) >= 5.2.80 -BuildRequires: cmake(KF5Contacts) >= 5.2.80 -BuildRequires: cmake(KF5CoreAddons) >= 5.17.0 -BuildRequires: cmake(KF5KIO) >= 5.17.0 -BuildRequires: cmake(KF5WindowSystem) >= 5.17.0 -BuildRequires: cmake(Qt5Core) >= 5.4.0 -BuildRequires: cmake(Qt5LinguistTools) >= 5.4.0 -BuildRequires: cmake(Qt5WebKitWidgets) >= 5.4.0 -BuildRequires: cmake(Qt5Widgets) >= 5.4.0 -BuildRequires: cmake(Qt5Xml) >= 5.4.0 +BuildRequires: pkgconfig +BuildRequires: cmake(Qt5LinguistTools) +BuildRequires: pkgconfig(Qt5Test) >= 5.2.0 +BuildRequires: pkgconfig(Qt5WebEngineWidgets) >= 5.6.0 +BuildRequires: pkgconfig(Qt5WebKitWidgets) >= 5.2.0 BuildRoot: %{_tmppath}/%{name}-%{version}-build +# It can only build on the same platforms as Qt Webengine +ExclusiveArch: %ix86 x86_64 %arm aarch64 mips mips64 %description An extension for accessing some Google services, such as Google Calendar, Google Contacts and Google tasks. -%package -n libKF5GAPIBlogger5 +%package -n libKPimGAPIBlogger5 Summary: Extension for accessing your Google data Group: System/GUI/KDE -Recommends: %{name}-lang = %{version} -%description -n libKF5GAPIBlogger5 +%description -n libKPimGAPIBlogger5 An extension for accessing some Google services, such as Google Calendar, Google Contacts and Google tasks. -%package -n libKF5GAPICalendar5 +%package -n libKPimGAPICalendar5 Summary: Extension for accessing your Google data Group: System/GUI/KDE -Recommends: %{name}-lang = %{version} -%description -n libKF5GAPICalendar5 +%description -n libKPimGAPICalendar5 An extension for accessing some Google services, such as Google Calendar, Google Contacts and Google tasks. -%package -n libKF5GAPIContacts5 +%package -n libKPimGAPIContacts5 Summary: Extension for accessing your Google data Group: System/GUI/KDE -Recommends: %{name}-lang = %{version} -%description -n libKF5GAPIContacts5 +%description -n libKPimGAPIContacts5 An extension for accessing some Google services, such as Google Calendar, Google Contacts and Google tasks. -%package -n libKF5GAPICore5 +%package -n libKPimGAPICore5 Summary: Extension for accessing your Google data Group: System/GUI/KDE -Recommends: %{name}-lang = %{version} +Recommends: %{name}-lang +Provides: %{name} = %{version} -%description -n libKF5GAPICore5 +%description -n libKPimGAPICore5 An extension for accessing some Google services, such as Google Calendar, Google Contacts and Google tasks. -%package -n libKF5GAPIDrive5 +%package -n libKPimGAPIDrive5 Summary: Extension for accessing your Google data Group: System/GUI/KDE -Recommends: %{name}-lang = %{version} -%description -n libKF5GAPIDrive5 +%description -n libKPimGAPIDrive5 An extension for accessing some Google services, such as Google Calendar, Google Contacts and Google tasks. -%package -n libKF5GAPILatitude5 +%package -n libKPimGAPILatitude5 Summary: Extension for accessing your Google data Group: System/GUI/KDE -Recommends: %{name}-lang = %{version} -%description -n libKF5GAPILatitude5 +%description -n libKPimGAPILatitude5 An extension for accessing some Google services, such as Google Calendar, Google Contacts and Google tasks. -%package -n libKF5GAPIMaps5 +%package -n libKPimGAPIMaps5 Summary: Extension for accessing your Google data Group: System/GUI/KDE -Recommends: %{name}-lang = %{version} -%description -n libKF5GAPIMaps5 +%description -n libKPimGAPIMaps5 An extension for accessing some Google services, such as Google Calendar, Google Contacts and Google tasks. -%package -n libKF5GAPITasks5 +%package -n libKPimGAPITasks5 Summary: Extension for accessing your Google data Group: System/GUI/KDE -Recommends: %{name}-lang = %{version} -%description -n libKF5GAPITasks5 +%description -n libKPimGAPITasks5 An extension for accessing some Google services, such as Google Calendar, Google Contacts and Google tasks. %package devel @@ -111,14 +112,14 @@ Requires: kcalcore-devel Requires: kcontacts5-devel Requires: kcoreaddons-devel -Requires: libKF5GAPIBlogger5 = %{version} -Requires: libKF5GAPICalendar5 = %{version} -Requires: libKF5GAPIContacts5 = %{version} -Requires: libKF5GAPICore5 = %{version} -Requires: libKF5GAPIDrive5 = %{version} -Requires: libKF5GAPILatitude5 = %{version} -Requires: libKF5GAPIMaps5 = %{version} -Requires: libKF5GAPITasks5 = %{version} +Requires: libKPimGAPIBlogger5 = %{version} +Requires: libKPimGAPICalendar5 = %{version} +Requires: libKPimGAPIContacts5 = %{version} +Requires: libKPimGAPICore5 = %{version} +Requires: libKPimGAPIDrive5 = %{version} +Requires: libKPimGAPILatitude5 = %{version} +Requires: libKPimGAPIMaps5 = %{version} +Requires: libKPimGAPITasks5 = %{version} Obsoletes: libkgapi5-devel < %{version} Provides: libkgapi5-devel = %{version} @@ -126,17 +127,13 @@ This package contains all necessary include files and libraries needed to develop KDE PIM applications. -%package lang -Summary: Languages for package %{name} -Group: System/Localization -BuildArch: noarch - -%description lang -Provides translations to the package %{name} - +%if %{with lang} +%lang_package +%endif %prep %setup -q -n libkgapi-%{version} +%patch0 -p1 %build %cmake_kf5 -d build -- -DBUILD_TESTING=ON @@ -144,94 +141,82 @@ %install %kf5_makeinstall -C build - %find_lang libkgapi_qt --with-qt --all-name - -%post -n libKF5GAPIBlogger5 -p /sbin/ldconfig - -%postun -n libKF5GAPIBlogger5 -p /sbin/ldconfig - -%post -n libKF5GAPICalendar5 -p /sbin/ldconfig - -%postun -n libKF5GAPICalendar5 -p /sbin/ldconfig - -%post -n libKF5GAPIContacts5 -p /sbin/ldconfig - -%postun -n libKF5GAPIContacts5 -p /sbin/ldconfig - -%post -n libKF5GAPICore5 -p /sbin/ldconfig + %if %{with lang} + %find_lang %{name} --with-man --with-qt --all-name + %endif -%postun -n libKF5GAPICore5 -p /sbin/ldconfig +%post -n libKPimGAPIBlogger5 -p /sbin/ldconfig +%postun -n libKPimGAPIBlogger5 -p /sbin/ldconfig +%post -n libKPimGAPICalendar5 -p /sbin/ldconfig +%postun -n libKPimGAPICalendar5 -p /sbin/ldconfig +%post -n libKPimGAPIContacts5 -p /sbin/ldconfig +%postun -n libKPimGAPIContacts5 -p /sbin/ldconfig +%post -n libKPimGAPICore5 -p /sbin/ldconfig +%postun -n libKPimGAPICore5 -p /sbin/ldconfig +%post -n libKPimGAPIDrive5 -p /sbin/ldconfig +%postun -n libKPimGAPIDrive5 -p /sbin/ldconfig +%post -n libKPimGAPILatitude5 -p /sbin/ldconfig +%postun -n libKPimGAPILatitude5 -p /sbin/ldconfig +%post -n libKPimGAPIMaps5 -p /sbin/ldconfig +%postun -n libKPimGAPIMaps5 -p /sbin/ldconfig +%post -n libKPimGAPITasks5 -p /sbin/ldconfig +%postun -n libKPimGAPITasks5 -p /sbin/ldconfig -%post -n libKF5GAPIDrive5 -p /sbin/ldconfig - -%postun -n libKF5GAPIDrive5 -p /sbin/ldconfig - -%post -n libKF5GAPILatitude5 -p /sbin/ldconfig - -%postun -n libKF5GAPILatitude5 -p /sbin/ldconfig - -%post -n libKF5GAPIMaps5 -p /sbin/ldconfig - -%postun -n libKF5GAPIMaps5 -p /sbin/ldconfig - -%post -n libKF5GAPITasks5 -p /sbin/ldconfig - -%postun -n libKF5GAPITasks5 -p /sbin/ldconfig - -%files -n libKF5GAPIBlogger5 +%files -n libKPimGAPIBlogger5 %defattr(-,root,root) %doc LICENSE -%{_kf5_libdir}/libKF5GAPIBlogger.so.* +%{_kf5_libdir}/libKPimGAPIBlogger.so.* -%files -n libKF5GAPICalendar5 +%files -n libKPimGAPICalendar5 %defattr(-,root,root) %doc LICENSE -%{_kf5_libdir}/libKF5GAPICalendar.so.* +%{_kf5_libdir}/libKPimGAPICalendar.so.* -%files -n libKF5GAPIContacts5 +%files -n libKPimGAPIContacts5 %defattr(-,root,root) %doc LICENSE -%{_kf5_libdir}/libKF5GAPIContacts.so.* +%{_kf5_libdir}/libKPimGAPIContacts.so.* -%files -n libKF5GAPICore5 +%files -n libKPimGAPICore5 %defattr(-,root,root) %doc LICENSE -%{_kf5_libdir}/libKF5GAPICore.so.* +%{_kf5_libdir}/libKPimGAPICore.so.* %{_kf5_configdir}/libkgapi.categories -%files -n libKF5GAPIDrive5 +%files -n libKPimGAPIDrive5 %defattr(-,root,root) %doc LICENSE -%{_kf5_libdir}/libKF5GAPIDrive.so.* +%{_kf5_libdir}/libKPimGAPIDrive.so.* -%files -n libKF5GAPILatitude5 +%files -n libKPimGAPILatitude5 %defattr(-,root,root) %doc LICENSE -%{_kf5_libdir}/libKF5GAPILatitude.so.* +%{_kf5_libdir}/libKPimGAPILatitude.so.* -%files -n libKF5GAPIMaps5 +%files -n libKPimGAPIMaps5 %defattr(-,root,root) %doc LICENSE -%{_kf5_libdir}/libKF5GAPIMaps.so.* +%{_kf5_libdir}/libKPimGAPIMaps.so.* -%files -n libKF5GAPITasks5 +%files -n libKPimGAPITasks5 %defattr(-,root,root) %doc LICENSE -%{_kf5_libdir}/libKF5GAPITasks.so.* +%{_kf5_libdir}/libKPimGAPITasks.so.* %files devel %defattr(-,root,root) %doc LICENSE -%{_kf5_libdir}/libKF5GAPIBlogger.so -%{_kf5_libdir}/libKF5GAPICalendar.so -%{_kf5_libdir}/libKF5GAPIContacts.so -%{_kf5_libdir}/libKF5GAPICore.so -%{_kf5_libdir}/libKF5GAPIDrive.so -%{_kf5_libdir}/libKF5GAPILatitude.so -%{_kf5_libdir}/libKF5GAPIMaps.so -%{_kf5_libdir}/libKF5GAPITasks.so -%{_kf5_includedir}/ +%{_kf5_libdir}/libKPimGAPIBlogger.so +%{_kf5_libdir}/libKPimGAPICalendar.so +%{_kf5_libdir}/libKPimGAPIContacts.so +%{_kf5_libdir}/libKPimGAPICore.so +%{_kf5_libdir}/libKPimGAPIDrive.so +%{_kf5_libdir}/libKPimGAPILatitude.so +%{_kf5_libdir}/libKPimGAPIMaps.so +%{_kf5_libdir}/libKPimGAPITasks.so +%{_includedir}/KPim/ %{_kf5_libdir}/cmake/KF5GAPI/ +%{_kf5_libdir}/cmake/KPimGAPI/ %{_kf5_mkspecsdir}/qt_KGAPIBlogger.pri %{_kf5_mkspecsdir}/qt_KGAPICalendar.pri %{_kf5_mkspecsdir}/qt_KGAPIContacts.pri @@ -241,7 +226,9 @@ %{_kf5_mkspecsdir}/qt_KGAPIMaps.pri %{_kf5_mkspecsdir}/qt_KGAPITasks.pri -%files lang -f libkgapi_qt.lang -%defattr(-,root,root,-) +%if %{with lang} +%files lang -f %{name}.lang +%doc LICENSE +%endif %changelog ++++++ adapt-to-changes-in-google-oauth.patch ++++++ >From 68b89bce22d0da234345ccffb869ae6863592624 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Vr=C3=A1til?= <[email protected]> Date: Thu, 27 Apr 2017 17:22:27 +0200 Subject: Auth: Adapt to changes in Google OAuth token retrieval process URLs and HTML code have changed a bit, which breaks authentication. Hopefully they won't change it too often in the future. --- src/core/ui/authwidget_p.cpp | 109 ++++++++++++++++++++++++------------------- src/core/ui/authwidget_p.h | 6 +++ 2 files changed, 67 insertions(+), 48 deletions(-) diff --git a/src/core/ui/authwidget_p.cpp b/src/core/ui/authwidget_p.cpp index 6de33f5..75d38cd 100644 --- a/src/core/ui/authwidget_p.cpp +++ b/src/core/ui/authwidget_p.cpp @@ -112,11 +112,35 @@ void AuthWidgetPrivate::emitError(const enum Error errCode, const QString& msg) void AuthWidgetPrivate::webviewUrlChanged(const QUrl &url) { - qCDebug(KGAPIDebug) << url; + qCDebug(KGAPIDebug) << "URLChange:" << url; - /* Access token here - hide browser and tell user to wait until we - * finish the authentication process ourselves */ - if (url.host() == QLatin1String("accounts.google.com") && url.path() == QLatin1String("/o/oauth2/approval")) { + if (!isGoogleHost(url)) { + return; + } + + // Username and password inputs are loaded dynamically, so we only get + // urlChanged, but not urlFinished. + if (isUsernameFrame(url)) { +#if QT_VERSION >= QT_VERSION_CHECK(5, 7, 0) + if (!username.isEmpty()) { + webview->page()->runJavaScript(QStringLiteral("document.getElementById(\"identifierId\").value = \"%1\";").arg(username)); + } +#endif + } else if (isPasswordFrame(url)) { +#if QT_VERSION >= QT_VERSION_CHECK(5, 7, 0) + if (!password.isEmpty()) { + webview->page()->runJavaScript(QStringLiteral("var elems = document.getElementsByTagName(\"input\");" + "for (var i = 0; i < elems.length; i++) {" + " if (elems[i].type == \"password\" && elems[i].name == \"password\") {" + " elems[i].value = \"%1\";" + " break;" + " }" + "}").arg(password)); + } +#endif + } else if (isTokenPage(url)) { + /* Access token here - hide browser and tell user to wait until we + * finish the authentication process ourselves */ webview->setVisible(false); progressbar->setVisible(false); label->setVisible(true); @@ -131,57 +155,46 @@ void AuthWidgetPrivate::webviewFinished(bool ok) qCWarning(KGAPIDebug) << "Failed to load" << webview->url(); } - QUrl url = webview->url(); - qCDebug(KGAPIDebug) << url; - - if (url.host() == QLatin1String("accounts.google.com") && url.path() == QLatin1String("/ServiceLogin")) { - if (username.isEmpty() && password.isEmpty()) { - return; - } - -#if QT_VERSION >= QT_VERSION_CHECK(5, 7, 0) - const auto js = QStringLiteral("document.getElementById(\"%1\").value = \"%2\";"); - if (!username.isEmpty()) { - webview->page()->runJavaScript(js.arg(QStringLiteral("Email"), username)); - } - - if (!password.isEmpty()) { - webview->page()->runJavaScript(js.arg(QStringLiteral("Passwd"), password)); - } -#endif + const QUrl url = webview->url(); + qCDebug(KGAPIDebug) << "URLFinished:" << url; + if (!isGoogleHost(url)) { return; } - if (url.host() == QLatin1String("accounts.google.com") && url.path() == QLatin1String("/o/oauth2/approval")) { - QString title = webview->title(); - QString token; - - if (title.startsWith(QLatin1String("success"), Qt::CaseInsensitive)) { - int pos = title.indexOf(QLatin1String("code=")); - /* Skip the 'code=' string as well */ - token = title.mid (pos + 5); + if (isTokenPage(url)) { + const auto token = url.queryItemValue(QStringLiteral("approvalCode")); + if (!token.isEmpty()) { + qCDebug(KGAPIDebug) << "Got token: " << token; + auto fetch = new KGAPI2::NewTokensFetchJob(token, apiKey, secretKey); + connect(fetch, &Job::finished, this, &AuthWidgetPrivate::tokensReceived); } else { - webview->page()->toHtml([title](const QString &html) { - qCDebug(KGAPIDebug) << "Parsing token page failed. Title:" << title; - qCDebug(KGAPIDebug) << html; - }); +#if QT_VERSION >= QT_VERSION_CHECK(5, 7, 0) + qCWarning(KGAPIDebug) << "Failed to parse token from URL, peaking into HTML..."; + webview->page()->runJavaScript( + QStringLiteral("document.getElementById(\"code\").value;"), + [this](const QVariant &result) { + const auto token = result.toString(); + if (token.isEmpty()) { + qCWarning(KGAPIDebug) << "Peaked into HTML, but cound not find token :("; + webview->page()->toHtml([](const QString &html) { + qCDebug(KGAPIDebug) << "Parsing token page failed"; + qCDebug(KGAPIDebug) << html; + }); + emitError(AuthError, tr("Parsing token page failed.")); + return; + } + qCDebug(KGAPIDebug) << "Peaked into HTML and found token: " << token; + auto fetch = new KGAPI2::NewTokensFetchJob(token, apiKey, secretKey); + connect(fetch, &Job::finished, this, &AuthWidgetPrivate::tokensReceived); + }); +#else + qCWarning(KGAPIDebug) << "Failed to parse token from URL!"; emitError(AuthError, tr("Parsing token page failed.")); - return; - } - - if (token.isEmpty()) { - webview->page()->toHtml([](const QString &html) { - qCDebug(KGAPIDebug) << "Failed to obtain token."; - qCDebug(KGAPIRaw) << html; - }); - emitError(AuthError, tr("Failed to obtain token.")); - return; +#endif } - - KGAPI2::NewTokensFetchJob *fetchJob = new KGAPI2::NewTokensFetchJob(token, apiKey, secretKey); - connect(fetchJob, &Job::finished, - this, &AuthWidgetPrivate::tokensReceived); + } else { + //qCDebug(KGAPIDebug) << "Unhandled page:" << url.host() << ", " << url.path(); } } diff --git a/src/core/ui/authwidget_p.h b/src/core/ui/authwidget_p.h index 673b0cb..9c488be 100644 --- a/src/core/ui/authwidget_p.h +++ b/src/core/ui/authwidget_p.h @@ -82,6 +82,12 @@ class Q_DECL_HIDDEN AuthWidgetPrivate: public QObject { void setupUi(); void setProgress(AuthWidget::Progress progress); + bool isGoogleHost(const QUrl &url) const { return url.host() == QLatin1String("accounts.google.com"); } + bool isSigninPage(const QUrl &url) const { return url.path() == QLatin1String("/signin/oauth"); } + bool isUsernameFrame(const QUrl &url) { return url.path() == QLatin1String("/signin/oauth/identifier"); } + bool isPasswordFrame(const QUrl &url) { return url.path() == QLatin1String("/signin/v2/challenge/pwd"); } + bool isTokenPage(const QUrl &url) { return url.path() == QLatin1String("/o/oauth2/approval/v2"); } + AuthWidget *q; friend class AuthWidget; -- cgit v0.11.2 ++++++ libkgapi-5.3.1.tar.xz -> libkgapi-17.04.0.tar.xz ++++++ ++++ 59833 lines of diff (skipped)
