summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonatan Pålsson <jonatan.palsson@pelagicore.com>2014-04-10 13:25:12 +0200
committerJonatan Pålsson <jonatan.palsson@pelagicore.com>2014-04-10 13:25:12 +0200
commitda19f5f180300ba02b544e8445c163b68ac237a2 (patch)
tree6ef82495b93debadf4c35baf06e31d1d3e869548
parentea805a2f950f01c3b165f72be344484e989bfbf3 (diff)
downloadbrowser-poc-da19f5f180300ba02b544e8445c163b68ac237a2.tar.gz
Added support for HTTP proxies, with settings read from BrowserSettings
-rw-r--r--browser/browser.cpp54
-rw-r--r--browser/browserconfig.h4
2 files changed, 58 insertions, 0 deletions
diff --git a/browser/browser.cpp b/browser/browser.cpp
index 6dcd0df..5a0834c 100644
--- a/browser/browser.cpp
+++ b/browser/browser.cpp
@@ -15,6 +15,7 @@
#include <QDBusConnection>
#include <QFile>
#include <QWebSettings>
+#include <QNetworkProxy>
#include "browser.h"
#include "browserview.h"
@@ -22,6 +23,9 @@
#include "networkmanager.h"
#include "iwebpagewindow_adaptor.h"
#include "iuserinput_adaptor.h"
+#include "browserconfig.h"
+
+bool restoreSavedProxyConfig();
browser::browser(cachemanager *manager, networkmanager *nm, QObject *parent) :
QObject(parent), m_cacheManager (manager), m_networkManager(nm)
@@ -30,6 +34,8 @@ browser::browser(cachemanager *manager, networkmanager *nm, QObject *parent) :
QWebSettings::globalSettings()->
setAttribute(QWebSettings::PluginsEnabled, true);
+
+ restoreSavedProxyConfig();
}
conn::brw::ERROR_IDS browser::createPageWindow(int a_eDeviceId, const conn::brw::Rect & a_oGeometry, conn::brw::OBJECT_HANDLE &a_hPageWindowHandle) {
@@ -128,3 +134,51 @@ conn::brw::ERROR_IDS browser::getPageWindows(conn::brw::ObjectHandleList &a_oPag
}
return ret;
}
+
+bool restoreSavedProxyConfig() {
+ QString proxyHost;
+ int proxyPort;
+ QString proxyUsername;
+ QString proxyPassword;
+ BrowserConfig *bc = BrowserConfig::instance();
+
+ if (bc->contains(BrowserConfig::CONFIG_PROXY_HOST))
+ proxyHost = bc->getValue<QString>(BrowserConfig::CONFIG_PROXY_HOST);
+ else
+ return false;
+
+ if (bc->contains(BrowserConfig::CONFIG_PROXY_PORT)) {
+ proxyPort = bc->getValue<int>(BrowserConfig::CONFIG_PROXY_PORT);
+ }
+ else {
+ qDebug("Found partial proxy configuration; CONFIG_PROXY_PORT missing");
+ return false;
+ }
+
+ if (bc->contains(BrowserConfig::CONFIG_PROXY_USERNAME)) {
+ proxyUsername = bc->getValue<QString>(BrowserConfig::CONFIG_PROXY_USERNAME);
+ }
+ else {
+ qDebug("Found partial proxy configuration; CONFIG_PROXY_USERNAME missing");
+ return false;
+ }
+
+ if (bc->contains(BrowserConfig::CONFIG_PROXY_PASSWORD)) {
+ proxyPassword = bc->getValue<QString>(BrowserConfig::CONFIG_PROXY_PASSWORD);
+ }
+ else {
+ qDebug("Found partial proxy configuration; CONFIG_PROXY_PASSWORD missing");
+ return false;
+ }
+
+ // All properties found, let's set up the proxy
+
+ QNetworkProxy proxy;
+ proxy.setType(QNetworkProxy::HttpProxy);
+ proxy.setHostName(proxyHost);
+ proxy.setPort(proxyPort);
+ proxy.setUser(proxyUsername);
+ proxy.setPassword(proxyPassword);
+ QNetworkProxy::setApplicationProxy(proxy);
+
+}
diff --git a/browser/browserconfig.h b/browser/browserconfig.h
index 8a43bed..493d9dd 100644
--- a/browser/browserconfig.h
+++ b/browser/browserconfig.h
@@ -24,6 +24,10 @@ public:
enum BrowserConfigKey {
CONFIG_CACHEPOLICY,
CONFIG_STARTPAGE,
+ CONFIG_PROXY_HOST,
+ CONFIG_PROXY_PORT,
+ CONFIG_PROXY_USERNAME,
+ CONFIG_PROXY_PASSWORD
};
static BrowserConfig* instance() {