aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Configuration.hpp22
-rw-r--r--src/LuaRuntime.cpp7
-rw-r--r--src/LuaRuntime.hpp3
-rw-r--r--src/WindowActionRouter.cpp5
-rw-r--r--src/WindowMediator.cpp6
-rw-r--r--src/WindowMediator.hpp1
-rw-r--r--src/main.cpp2
-rw-r--r--src/widgets/BrowserApp.cpp3
-rw-r--r--src/widgets/BrowserWindow.cpp4
9 files changed, 39 insertions, 14 deletions
diff --git a/src/Configuration.hpp b/src/Configuration.hpp
index 1f861fa..7c97b72 100644
--- a/src/Configuration.hpp
+++ b/src/Configuration.hpp
@@ -15,6 +15,7 @@ private:
{"user_agent", QWebEngineProfile::defaultProfile()->httpUserAgent()},
{"downloads_dir", QWebEngineProfile::defaultProfile()->downloadPath()},
{"app_data_dir", QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation)},
+ {"permissions_persistance", "always"},
};
QDir config_dir = QDir(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation));
@@ -42,6 +43,22 @@ public:
QString new_view_url() const { return get_config("new_view_url").toString(); }
QString user_agent() const { return get_config("user_agent").toString(); }
QString downloads_dir() const { return get_config("downloads_dir").toString(); }
+ QString permissions_persistance() const {
+ return get_config("permissions_persistance").toString();
+ }
+
+ QWebEngineProfile::PersistentPermissionsPolicy permission_persistance_policy() const {
+ return to_permission_persistance_policy(permissions_persistance());
+ }
+
+ static QWebEngineProfile::PersistentPermissionsPolicy
+ to_permission_persistance_policy(const QString &persistance) {
+ if (persistance == "session")
+ return QWebEngineProfile::PersistentPermissionsPolicy::StoreInMemory;
+ if (persistance == "never")
+ return QWebEngineProfile::PersistentPermissionsPolicy::AskEveryTime;
+ return QWebEngineProfile::PersistentPermissionsPolicy::StoreOnDisk;
+ }
DEFINE_GETTER(get_config_dir, config_dir)
DEFINE_SETTER(set_config_dir, config_dir)
@@ -53,11 +70,14 @@ private:
void on_update(const QString &name, const QVariant &value) {
if (name == "user_agent")
emit user_agent_updated(value.toString());
- if (name == "downloads_dir")
+ else if (name == "downloads_dir")
emit downloads_dir_updated(value.toString());
+ else if (name == "permissions_persistance")
+ emit permissions_persistance_updated(value.toString());
}
signals:
void user_agent_updated(const QString &value);
void downloads_dir_updated(const QString &value);
+ void permissions_persistance_updated(const QString &value);
};
diff --git a/src/LuaRuntime.cpp b/src/LuaRuntime.cpp
index 07ddb67..e9dc86f 100644
--- a/src/LuaRuntime.cpp
+++ b/src/LuaRuntime.cpp
@@ -35,7 +35,8 @@ void LuaRuntime::start_event_loop() {
luv_set_loop(state, event_loop->get_uv_loop());
luv_set_callback(state, &luv_callback);
luaopen_luv(state);
- lua_setglobal(state, uv_global_name);
+ lua_setglobal(state, "uv");
+ luaL_dostring(state, "web.uv = uv");
}
void LuaRuntime::stop_event_loop() {
@@ -46,13 +47,13 @@ void LuaRuntime::stop_event_loop() {
// Clear the uv global
lua_pushnil(state);
- lua_setglobal(state, uv_global_name);
+ lua_setglobal(state, "uv");
lua_gc(state, LUA_GCCOLLECT, 0);
}
void LuaRuntime::init_web_api() {
luaL_newlib(state, internals_api);
- lua_setglobal(state, internals_global_name);
+ lua_setglobal(state, "__internals");
require_module("null-browser.api");
}
diff --git a/src/LuaRuntime.hpp b/src/LuaRuntime.hpp
index 2af61f7..527501e 100644
--- a/src/LuaRuntime.hpp
+++ b/src/LuaRuntime.hpp
@@ -23,9 +23,6 @@
class LuaRuntime : public QObject {
Q_OBJECT
- const char *uv_global_name = "uv";
- const char *internals_global_name = "__internals";
-
public:
static LuaRuntime &instance() {
static LuaRuntime runtime;
diff --git a/src/WindowActionRouter.cpp b/src/WindowActionRouter.cpp
index 721a3e7..7270855 100644
--- a/src/WindowActionRouter.cpp
+++ b/src/WindowActionRouter.cpp
@@ -34,6 +34,11 @@ void WindowActionRouter::initialize(Configuration *config) {
for (auto &win_match : window_map)
win_match.second->mediator()->update_downloads_dir(downloads_dir);
});
+ connect(configuration, &Configuration::permissions_persistance_updated, this,
+ [this](const QString &persistance) {
+ for (auto &win_match : window_map)
+ win_match.second->mediator()->update_permissions_persistance(persistance);
+ });
// History
connect(&runtime, &LuaRuntime::history_back_requested, this,
diff --git a/src/WindowMediator.cpp b/src/WindowMediator.cpp
index cb677ee..fa9a25e 100644
--- a/src/WindowMediator.cpp
+++ b/src/WindowMediator.cpp
@@ -23,6 +23,12 @@ void WindowMediator::update_downloads_dir(const QString &downloads_dir) {
profile->setDownloadPath(downloads_dir);
}
+void WindowMediator::update_permissions_persistance(const QString &persistance) {
+ auto *profile = webview_stack->get_profile();
+ auto persistance_policy = Configuration::to_permission_persistance_policy(persistance);
+ profile->setPersistentPermissionsPolicy(persistance_policy);
+}
+
WindowMediator::~WindowMediator() {
disconnect(this);
delete webview_stack;
diff --git a/src/WindowMediator.hpp b/src/WindowMediator.hpp
index 0a27f2e..163ab7a 100644
--- a/src/WindowMediator.hpp
+++ b/src/WindowMediator.hpp
@@ -34,6 +34,7 @@ signals:
public slots:
void update_user_agent(const QString &user_agent);
void update_downloads_dir(const QString &downloads_dir);
+ void update_permissions_persistance(const QString &persistance);
private:
WebViewStack *webview_stack;
diff --git a/src/main.cpp b/src/main.cpp
index dc67c8a..ee94ad3 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -12,7 +12,7 @@ QCommandLineParser *create_cli_parser() {
parser->addPositionalArgument("url", "URL(s) to open", "[url]");
parser->addOptions({
{{"e", "expr"}, "Lua expression to execute", "lua"},
- {{"c", "config-dir"}, "Config directory for null browser", "dir"},
+ {{"C", "config-dir"}, "Config directory for null browser", "dir"},
});
return parser;
diff --git a/src/widgets/BrowserApp.cpp b/src/widgets/BrowserApp.cpp
index 32ac598..54fd44a 100644
--- a/src/widgets/BrowserApp.cpp
+++ b/src/widgets/BrowserApp.cpp
@@ -41,8 +41,7 @@ BrowserApp::BrowserApp(Configuration &configuration) : configuration(configurati
auto *event = new NotificationReceivedEvent(std::move(notification));
WindowActionRouter::instance().dispatch_event(event);
});
- profile->setPersistentPermissionsPolicy(
- QWebEngineProfile::PersistentPermissionsPolicy::StoreInMemory);
+ profile->setPersistentPermissionsPolicy(configuration.permission_persistance_policy());
}
connect(&window_action_router, &WindowActionRouter::new_window_requested, this,
diff --git a/src/widgets/BrowserWindow.cpp b/src/widgets/BrowserWindow.cpp
index d1b9c44..8e1555f 100644
--- a/src/widgets/BrowserWindow.cpp
+++ b/src/widgets/BrowserWindow.cpp
@@ -22,10 +22,6 @@ BrowserWindow::BrowserWindow(const Configuration &configuration, QWebEngineProfi
layout->setSpacing(0);
centralWidget()->setLayout(layout);
- // Webengine profile
- profile->setDownloadPath(configuration.downloads_dir());
- profile->setHttpUserAgent(configuration.user_agent());
-
// Stack of web views
auto *webview_stack = new WebViewStack(&configuration, profile);
layout->addWidget(webview_stack);