File indexing completed on 2024-06-02 04:49:39

0001 #pragma once
0002 
0003 #include <QQuickWebEngineProfile>
0004 #include <QObject>
0005 
0006 #include <QQuickItem>
0007 #include <QWebEngineUrlRequestInterceptor>
0008 
0009 class QWebEngineNotification;
0010 class QQuickItem;
0011 class QWebEngineUrlRequestInterceptor;
0012 
0013 class QQuickWebEngineDownloadItem;
0014 using DownloadItem = QQuickWebEngineDownloadItem;
0015 
0016 class FieryWebProfile : public QQuickWebEngineProfile
0017 {
0018     Q_OBJECT
0019     Q_PROPERTY(QWebEngineUrlRequestInterceptor *urlInterceptor WRITE setUrlInterceptor READ urlInterceptor NOTIFY urlInterceptorChanged)
0020 
0021 public:
0022     explicit FieryWebProfile(QObject *parent = nullptr);
0023 
0024     QWebEngineUrlRequestInterceptor *urlInterceptor() const;
0025 
0026     void setUrlInterceptor(QWebEngineUrlRequestInterceptor *newUrlInterceptor);
0027 
0028 Q_SIGNALS:
0029     void urlInterceptorChanged();
0030     void downloadFinished(QQuickWebEngineDownloadItem *download);
0031 
0032 private:
0033 
0034     void handleDownload(DownloadItem *downloadItem);
0035     void handleDownloadFinished(DownloadItem *downloadItem);
0036     void showNotification(QWebEngineNotification *webNotification);
0037 
0038 
0039          // A valid property needs a read function, and there is no getter in QQuickWebEngineProfile
0040          // so store a pointer ourselves
0041     QWebEngineUrlRequestInterceptor *m_urlInterceptor;
0042 
0043 };
0044