aboutsummaryrefslogtreecommitdiff
path: root/src/widgets/WebView.hpp
diff options
context:
space:
mode:
authorAkshay Nair <phenax5@gmail.com>2025-07-26 16:16:54 +0530
committerAkshay Nair <phenax5@gmail.com>2025-07-26 16:16:54 +0530
commit8ab1f8d796d8f35a65e38fdd03d51824a41d1dab (patch)
tree6b7b9655e5a2e7f6fbc0e1b3bec66771e87a64f8 /src/widgets/WebView.hpp
parent2078c60477842d7cf6991148e23979565737a8b5 (diff)
downloadnull-browser-8ab1f8d796d8f35a65e38fdd03d51824a41d1dab.tar.gz
null-browser-8ab1f8d796d8f35a65e38fdd03d51824a41d1dab.zip
Add simple js rpc for decorations via custom scheme
Diffstat (limited to 'src/widgets/WebView.hpp')
-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);
};