From da19f5f180300ba02b544e8445c163b68ac237a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonatan=20P=C3=A5lsson?= Date: Thu, 10 Apr 2014 13:25:12 +0200 Subject: Added support for HTTP proxies, with settings read from BrowserSettings --- browser/browser.cpp | 54 +++++++++++++++++++++++++++++++++++++++++++++++++ browser/browserconfig.h | 4 ++++ 2 files changed, 58 insertions(+) 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 #include #include +#include #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(BrowserConfig::CONFIG_PROXY_HOST); + else + return false; + + if (bc->contains(BrowserConfig::CONFIG_PROXY_PORT)) { + proxyPort = bc->getValue(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(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(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() { -- cgit v1.2.1