diff options
| author | Akshay Nair <phenax5@gmail.com> | 2025-07-26 16:16:54 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2025-07-26 16:16:54 +0530 |
| commit | 8ab1f8d796d8f35a65e38fdd03d51824a41d1dab (patch) | |
| tree | 6b7b9655e5a2e7f6fbc0e1b3bec66771e87a64f8 /src/schemes/NullRpcSchemeHandler.hpp | |
| parent | 2078c60477842d7cf6991148e23979565737a8b5 (diff) | |
| download | null-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.hpp | 47 |
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; +}; |
