diff options
| author | Akshay Nair <phenax5@gmail.com> | 2025-05-01 22:21:48 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2025-05-02 16:20:48 +0530 |
| commit | 86496d0ce96f2e57f3f301c08488b6421321b3c9 (patch) | |
| tree | 2dd20f110c0eec27748b94e6fb84f19fb85ba6d0 /src/widgets/WebViewStack.cpp | |
| parent | fab5f4d2fd80eb288265c64ba390460ac974ee81 (diff) | |
| download | null-browser-86496d0ce96f2e57f3f301c08488b6421321b3c9.tar.gz null-browser-86496d0ce96f2e57f3f301c08488b6421321b3c9.zip | |
Add PermissionRequested event and accept/reject handling
Diffstat (limited to 'src/widgets/WebViewStack.cpp')
| -rw-r--r-- | src/widgets/WebViewStack.cpp | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/src/widgets/WebViewStack.cpp b/src/widgets/WebViewStack.cpp index c48a363..7fe9218 100644 --- a/src/widgets/WebViewStack.cpp +++ b/src/widgets/WebViewStack.cpp @@ -5,6 +5,7 @@ #include <QWebEngineProfile> #include <cstdint> #include <cstdlib> +#include <memory> #include <vector> #include "WindowActionRouter.hpp" @@ -48,17 +49,22 @@ WebView *WebViewStack::create_new_webview(const QUrl &url, bool focus) { layout->addWidget(webview); webview_list.append(webview); - connect(webview->page(), &QWebEnginePage::newWindowRequested, this, - &WebViewStack::on_new_webview_request); - connect(webview->page(), &QWebEnginePage::urlChanged, this, [webview](const QUrl &url) { + auto *page = webview->page(); + connect(page, &QWebEnginePage::newWindowRequested, this, &WebViewStack::on_new_webview_request); + connect(page, &QWebEnginePage::urlChanged, this, [webview](const QUrl &url) { // TODO: Add window id - WindowActionRouter::instance().dispatch_event( - new UrlChangedEvent(url.toString(), webview->get_id(), 0)); + auto *event = new UrlChangedEvent(url.toString(), webview->get_id(), 0); + WindowActionRouter::instance().dispatch_event(event); + }); + connect(page, &QWebEnginePage::titleChanged, this, [this](const QString & /* title */) { + emit current_webview_title_changed(layout->currentIndex()); + }); + connect(page, &QWebEnginePage::permissionRequested, this, [webview](QWebEnginePermission perm) { + auto permission = std::make_shared<QWebEnginePermission>(std::move(perm)); + // TODO: Add windown id + auto *event = PermissionRequestEvent::from_permission(permission, webview->get_id(), 0); + WindowActionRouter::instance().dispatch_event(event); }); - connect(webview->page(), &QWebEnginePage::titleChanged, this, - [this](const QString & /* title */) { - emit current_webview_title_changed(layout->currentIndex()); - }); if (focus) focus_webview(webview->get_id()); |
