aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAkshay Nair <phenax5@gmail.com>2025-04-12 19:35:54 +0530
committerAkshay Nair <phenax5@gmail.com>2025-04-12 21:04:16 +0530
commitbbe50215cbb9078ba457f93a5e90096e844c611a (patch)
tree0726730396510a2ea8cd18cee72afb5c7c1edc41 /src
parentc8352009ceb6b9240ef7c1ad5be93f42312b59a2 (diff)
downloadnull-browser-bbe50215cbb9078ba457f93a5e90096e844c611a.tar.gz
null-browser-bbe50215cbb9078ba457f93a5e90096e844c611a.zip
Add user agent configuration
Diffstat (limited to '')
-rw-r--r--src/Configuration.hpp22
-rw-r--r--src/WindowActionRouter.cpp5
-rw-r--r--src/WindowMediator.cpp4
-rw-r--r--src/WindowMediator.hpp1
-rw-r--r--src/widgets/WebViewStack.hpp3
5 files changed, 30 insertions, 5 deletions
diff --git a/src/Configuration.hpp b/src/Configuration.hpp
index a1eca51..3310262 100644
--- a/src/Configuration.hpp
+++ b/src/Configuration.hpp
@@ -1,6 +1,7 @@
#pragma once
#include <QtCore>
+#include <qwebengineprofile.h>
#include <unordered_map>
class Configuration : public QObject {
@@ -10,24 +11,35 @@ private:
std::unordered_map<QString, QVariant> config_map{
{"new_view_url", "https://duckduckgo.com"},
{"close_window_when_no_views", true},
+ {"user_agent", QWebEngineProfile::defaultProfile()->httpUserAgent()},
};
public:
using QObject::QObject;
void set_config(const QString &name, const QVariant &value) {
- qDebug() << "config update" << name << value;
config_map[name] = value;
- emit config_updated(name, value);
+ on_update(name, value);
}
- QVariant get_config(const QString &name) const { return config_map.at(name); }
+ QVariant get_config(const QString &name, QVariant default_value = "") const {
+ if (!config_map.contains(name)) return default_value;
+
+ return config_map.at(name);
+ }
- QString new_view_url() const { return get_config("new_view_url").toString(); }
bool close_window_when_no_views() const {
return get_config("close_window_when_no_views").toBool();
}
+ QString new_view_url() const { return get_config("new_view_url").toString(); }
+ QString user_agent() const { return get_config("user_agent").toString(); }
+
+private:
+ void on_update(const QString &name, const QVariant &value) {
+ if (name == "user_agent")
+ emit user_agent_updated(value.toString());
+ }
signals:
- void config_updated(const QString &name, const QVariant &value);
+ void user_agent_updated(const QString &value);
};
diff --git a/src/WindowActionRouter.cpp b/src/WindowActionRouter.cpp
index bba15d1..8aa4cd9 100644
--- a/src/WindowActionRouter.cpp
+++ b/src/WindowActionRouter.cpp
@@ -21,6 +21,11 @@ void WindowActionRouter::initialize(Configuration *config) {
connect(&runtime, &LuaRuntime::keymap_added, this, &WindowActionRouter::add_keymap);
connect(&runtime, &LuaRuntime::config_updated, configuration, &Configuration::set_config);
+ connect(configuration, &Configuration::user_agent_updated, this, [this](const QString &user_agent) {
+ for (auto &win_match : window_map) {
+ win_match.second->mediator()->set_user_agent(user_agent);
+ }
+ });
connect(&runtime, &LuaRuntime::history_back_requested, this,
[this](WebViewId webview_id, qsizetype history_index) {
diff --git a/src/WindowMediator.cpp b/src/WindowMediator.cpp
index 942207d..a2ff2a6 100644
--- a/src/WindowMediator.cpp
+++ b/src/WindowMediator.cpp
@@ -1,6 +1,7 @@
#include <QList>
#include <QWidget>
#include <QtCore>
+#include <qwebengineprofile.h>
#include "WindowMediator.hpp"
#include "widgets/WebViewStack.hpp"
@@ -15,6 +16,9 @@ WindowMediator::WindowMediator(WebViewStack *webview_stack) : webview_stack(webv
connect(this, &WindowMediator::webview_closed, webview_stack, &WebViewStack::close);
connect(this, &WindowMediator::webview_selected, webview_stack, &WebViewStack::focus_webview);
+ auto *profile = webview_stack->get_profile();
+ connect(this, &WindowMediator::set_user_agent, profile, &QWebEngineProfile::setHttpUserAgent);
+
// Delegate signal
connect(webview_stack, &WebViewStack::new_window_requested, this,
&WindowMediator::new_window_requested);
diff --git a/src/WindowMediator.hpp b/src/WindowMediator.hpp
index ea1dd52..f1e99ca 100644
--- a/src/WindowMediator.hpp
+++ b/src/WindowMediator.hpp
@@ -25,6 +25,7 @@ signals:
void webview_selected(WebViewId webview_id);
void new_window_requested(const QUrl &url);
void close_window_requested();
+ void set_user_agent(const QString &user_agent);
private:
WebViewStack *webview_stack;
diff --git a/src/widgets/WebViewStack.hpp b/src/widgets/WebViewStack.hpp
index b36c389..8f66c09 100644
--- a/src/widgets/WebViewStack.hpp
+++ b/src/widgets/WebViewStack.hpp
@@ -3,6 +3,7 @@
#include <QStackedLayout>
#include <QWebEngineProfile>
#include <cstdint>
+#include <qwebengineprofile.h>
#include <vector>
#include "Configuration.hpp"
@@ -39,6 +40,8 @@ public:
bool has_webview(WebViewId webview_id);
+ QWebEngineProfile *get_profile() { return profile; }
+
/// @deprecated TODO: Remove
std::vector<QUrl> urls();
/// @deprecated TODO: Remove