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 | |
| 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')
| -rw-r--r-- | src/schemes/NullRpcSchemeHandler.hpp | 47 | ||||
| -rw-r--r-- | src/schemes/schemes.hpp | 16 |
2 files changed, 63 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; +}; diff --git a/src/schemes/schemes.hpp b/src/schemes/schemes.hpp new file mode 100644 index 0000000..f04dc4d --- /dev/null +++ b/src/schemes/schemes.hpp @@ -0,0 +1,16 @@ +#pragma once + +#include <QWebEngineUrlScheme> +#include <qwebengineurlscheme.h> + +void register_nullrpc_scheme() { + QWebEngineUrlScheme scheme("nullrpc"); + scheme.setFlags( + QWebEngineUrlScheme::SecureScheme | QWebEngineUrlScheme::LocalScheme | + QWebEngineUrlScheme::LocalAccessAllowed | QWebEngineUrlScheme::ServiceWorkersAllowed | + QWebEngineUrlScheme::ContentSecurityPolicyIgnored | QWebEngineUrlScheme::FetchApiAllowed); + scheme.setSyntax(QWebEngineUrlScheme::Syntax::Path); + QWebEngineUrlScheme::registerScheme(scheme); +} + +void register_all_schemes() { register_nullrpc_scheme(); } |
