add a network access factory to qml engine
authorMatthieu Gallien <matthieu.gallien@nextcloud.com>
Wed, 17 Nov 2021 09:36:05 +0000 (10:36 +0100)
committerMatthieu Gallien (Rebase PR Action) <matthieu_gallien@yahoo.fr>
Mon, 22 Nov 2021 12:21:58 +0000 (12:21 +0000)
ensure network access made via qml are using our user agent

Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
src/gui/systray.cpp
src/gui/systray.h

index 47536748694824398e065e0d95e2860c8625e6f3..707609612342c29c4e79622e4134e7cb7515c845 100644 (file)
@@ -22,6 +22,7 @@
 #include "wheelhandler.h"
 #include "tray/unifiedsearchresultimageprovider.h"
 #include "configfile.h"
+#include "accessmanager.h"
 
 #include <QCursor>
 #include <QGuiApplication>
@@ -59,6 +60,8 @@ void Systray::setTrayEngine(QQmlApplicationEngine *trayEngine)
 {
     _trayEngine = trayEngine;
 
+    _trayEngine->setNetworkAccessManagerFactory(&_accessManagerFactory);
+
     _trayEngine->addImportPath("qrc:/qml/theme");
     _trayEngine->addImageProvider("avatars", new ImageProvider);
     _trayEngine->addImageProvider(QLatin1String("svgimage-custom-color"), new OCC::Ui::SvgImageProvider);
@@ -505,4 +508,14 @@ QPoint Systray::calcTrayIconCenter() const
 #endif
 }
 
+AccessManagerFactory::AccessManagerFactory()
+    : QQmlNetworkAccessManagerFactory()
+{
+}
+
+QNetworkAccessManager* AccessManagerFactory::create(QObject *parent)
+{
+    return new AccessManager(parent);
+}
+
 } // namespace OCC
index 70917aaabbdc3c4dabaae1575437de7d28886191..31251d01e2886f7799f6adac5004736f99683cd4 100644 (file)
@@ -20,6 +20,8 @@
 #include "accountmanager.h"
 #include "tray/usermodel.h"
 
+#include <QQmlNetworkAccessManagerFactory>
+
 class QScreen;
 class QQmlApplicationEngine;
 class QQuickWindow;
@@ -28,6 +30,14 @@ class QQuickWindow;
 
 namespace OCC {
 
+class AccessManagerFactory : public QQmlNetworkAccessManagerFactory
+{
+public:
+    AccessManagerFactory();
+
+    QNetworkAccessManager* create(QObject *parent) override;
+};
+
 #ifdef Q_OS_OSX
 bool canOsXSendUserNotification();
 void sendOsXUserNotification(const QString &title, const QString &message);
@@ -105,6 +115,8 @@ private:
     bool _isOpen = false;
     bool _syncIsPaused = true;
     QPointer<QQmlApplicationEngine> _trayEngine;
+
+    AccessManagerFactory _accessManagerFactory;
 };
 
 } // namespace OCC