diff options
author | Jonatan Pålsson <jonatan.palsson@pelagicore.com> | 2014-04-10 13:25:12 +0200 |
---|---|---|
committer | Jonatan Pålsson <jonatan.palsson@pelagicore.com> | 2014-04-10 13:25:12 +0200 |
commit | da19f5f180300ba02b544e8445c163b68ac237a2 (patch) | |
tree | 6ef82495b93debadf4c35baf06e31d1d3e869548 | |
parent | ea805a2f950f01c3b165f72be344484e989bfbf3 (diff) | |
download | browser-poc-da19f5f180300ba02b544e8445c163b68ac237a2.tar.gz |
Added support for HTTP proxies, with settings read from BrowserSettings
-rw-r--r-- | browser/browser.cpp | 54 | ||||
-rw-r--r-- | browser/browserconfig.h | 4 |
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() { |