aboutsummaryrefslogtreecommitdiff
path: root/src/widgets/WebView.hpp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/widgets/WebView.hpp37
1 files changed, 14 insertions, 23 deletions
diff --git a/src/widgets/WebView.hpp b/src/widgets/WebView.hpp
index 0900ea6..5be9831 100644
--- a/src/widgets/WebView.hpp
+++ b/src/widgets/WebView.hpp
@@ -1,35 +1,22 @@
#pragma once
#include <QMainWindow>
+#include <QWebEngineUrlRequestInterceptor>
+#include <QWebEngineUrlRequestJob>
+#include <QWebEngineUrlSchemeHandler>
#include <QWebEngineView>
#include <QtCore>
#include <cstdint>
+#include <functional>
#include <qtypes.h>
+#include <qurlquery.h>
+#include <unordered_map>
#include "utils.hpp"
+#include "widgets/DevtoolsWindow.hpp"
-class DevtoolsWindow : public QMainWindow {
- Q_OBJECT
-
-public:
- DevtoolsWindow(QWebEngineProfile *profile, QWidget *parent = nullptr,
- Qt::WindowFlags flags = Qt::WindowFlags())
- : QMainWindow(parent, flags) {
- webengineview = new QWebEngineView(profile, this);
- this->setCentralWidget(webengineview);
- }
-
- DELEGATE(webengineview, page, page)
-
-signals:
- void closed();
-
-protected:
- void closeEvent(QCloseEvent * /* event */) override { emit closed(); }
-
-private:
- QWebEngineView *webengineview;
-};
+using RpcArgs = std::unordered_map<QString, QVariant>;
+using RpcFunc = std::function<void(RpcArgs)>;
class WebView : public QWebEngineView {
Q_OBJECT
@@ -40,11 +27,15 @@ public:
void scroll_increment(int deltax, int deltay);
void scroll_to_top();
void scroll_to_bottom();
+ void enable_rpc_api();
+ void expose_rpc_function(const QString &name, const RpcFunc &action);
DEFINE_GETTER(get_id, id)
private:
uint32_t id;
-
DevtoolsWindow *devtools_window = nullptr;
+ std::unordered_map<QString, RpcFunc> exposed_functions;
+
+ void on_rpc_message(const QString &action, const QUrlQuery &params);
};