diff options
Diffstat (limited to '')
| -rw-r--r-- | src/widgets/WebView.hpp | 37 |
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 ¶ms); }; |
