aboutsummaryrefslogtreecommitdiff
path: root/src/schemes/NullRpcSchemeHandler.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/schemes/NullRpcSchemeHandler.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/schemes/NullRpcSchemeHandler.hpp')
-rw-r--r--src/schemes/NullRpcSchemeHandler.hpp47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/schemes/NullRpcSchemeHandler.hpp b/src/schemes/NullRpcSchemeHandler.hpp
new file mode 100644
index 0000000..b1d5168
--- /dev/null
+++ b/src/schemes/NullRpcSchemeHandler.hpp
@@ -0,0 +1,47 @@
+#pragma once
+
+#include <QWebEngineUrlRequestJob>
+#include <QWebEngineUrlSchemeHandler>
+#include <QtCore>
+#include <qurlquery.h>
+
+class NullRPCSchemeHandler : public QWebEngineUrlSchemeHandler {
+ Q_OBJECT
+
+public:
+ static NullRPCSchemeHandler &instance() {
+ static NullRPCSchemeHandler handler;
+ return handler;
+ }
+
+ void requestStarted(QWebEngineUrlRequestJob *job) override {
+ auto url = job->requestUrl();
+ qDebug() << "REQ" << url << url.host();
+
+ if (url.host().isEmpty() || url.host() == "noop") {
+ job->reply("text/html", new QBuffer(job));
+ return;
+ }
+
+ if (url.host() == "log") {
+ qDebug() << url.query();
+ job->reply("text/plain", new QBuffer(job));
+ return;
+ }
+
+ QUrlQuery query(url.query());
+ emit message_received(url.host(), query);
+
+ QByteArray data = "{}";
+ QBuffer *buffer = new QBuffer(job);
+ buffer->setData(data);
+ buffer->open(QIODevice::ReadOnly);
+ job->reply("text/plain", buffer);
+ }
+
+signals:
+ void message_received(const QString &action, QUrlQuery params);
+
+private:
+ NullRPCSchemeHandler() = default;
+};