Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(248)

Unified Diff: components/data_reduction_proxy/browser/data_reduction_proxy_settings.cc

Issue 373153003: Bypass data reduction proxy when using VPN (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/data_reduction_proxy/browser/data_reduction_proxy_settings.cc
diff --git a/components/data_reduction_proxy/browser/data_reduction_proxy_settings.cc b/components/data_reduction_proxy/browser/data_reduction_proxy_settings.cc
index cc575c94c3f6ef5e5cabd93855ed99cb89d94dd7..8ae8763df75d6469a810894928a6a242c5462e75 100644
--- a/components/data_reduction_proxy/browser/data_reduction_proxy_settings.cc
+++ b/components/data_reduction_proxy/browser/data_reduction_proxy_settings.cc
@@ -8,6 +8,7 @@
#include "base/command_line.h"
#include "base/metrics/field_trial.h"
#include "base/metrics/histogram.h"
+#include "base/metrics/user_metrics.h"
#include "base/prefs/pref_member.h"
#include "base/prefs/pref_service.h"
#include "base/prefs/scoped_user_pref_update.h"
@@ -24,6 +25,7 @@
#include "net/base/host_port_pair.h"
#include "net/base/load_flags.h"
#include "net/base/net_errors.h"
+#include "net/base/net_util.h"
#include "net/http/http_network_session.h"
#include "net/http/http_response_headers.h"
#include "net/url_request/url_fetcher.h"
@@ -70,9 +72,11 @@ DataReductionProxySettings::DataReductionProxySettings(
DataReductionProxyParams* params)
: restricted_by_carrier_(false),
enabled_by_user_(false),
+ disabled_on_vpn_(false),
prefs_(NULL),
local_state_prefs_(NULL),
- url_request_context_getter_(NULL) {
+ url_request_context_getter_(NULL),
+ usage_stats_(NULL) {
DCHECK(params);
params_.reset(params);
}
@@ -311,6 +315,10 @@ void DataReductionProxySettings::OnIPAddressChanged() {
DCHECK(thread_checker_.CalledOnValidThread());
if (enabled_by_user_) {
DCHECK(params_->allowed());
+ base::RecordAction(
+ base::UserMetricsAction("DataReductionProxy_IPAddressChanged"));
+ if (DisableIfVPN())
+ return;
ProbeWhetherDataReductionProxyIsAvailable();
WarmProxyConnection();
}
@@ -359,13 +367,13 @@ void DataReductionProxySettings::MaybeActivateDataReductionProxy(
// Configure use of the data reduction proxy if it is enabled.
enabled_by_user_= IsDataReductionProxyEnabled();
- SetProxyConfigs(enabled_by_user_,
+ SetProxyConfigs(enabled_by_user_ && !disabled_on_vpn_,
IsDataReductionProxyAlternativeEnabled(),
restricted_by_carrier_,
at_startup);
// Check if the proxy has been restricted explicitly by the carrier.
- if (enabled_by_user_) {
+ if (enabled_by_user_ && !disabled_on_vpn_) {
ProbeWhetherDataReductionProxyIsAvailable();
WarmProxyConnection();
}
@@ -425,6 +433,13 @@ void DataReductionProxySettings::RecordStartupState(ProxyStartupState state) {
PROXY_STARTUP_STATE_COUNT);
}
+void DataReductionProxySettings::GetNetworkList(
+ net::NetworkInterfaceList* interfaces,
+ int policy) {
+ net::GetNetworkList(interfaces, policy);
+
+}
+
void DataReductionProxySettings::ResetParamsForTest(
DataReductionProxyParams* params) {
params_.reset(params);
@@ -485,18 +500,6 @@ void DataReductionProxySettings::GetContentLengths(
local_state->GetInt64(prefs::kDailyHttpContentLengthLastUpdateDate);
}
-// static
-base::string16 DataReductionProxySettings::AuthHashForSalt(
- int64 salt,
- const std::string& key) {
- std::string salted_key =
- base::StringPrintf("%lld%s%lld",
- static_cast<long long>(salt),
- key.c_str(),
- static_cast<long long>(salt));
- return base::UTF8ToUTF16(base::MD5String(salted_key));
-}
-
net::URLFetcher* DataReductionProxySettings::GetBaseURLFetcher(
const GURL& gurl,
int load_flags) {
@@ -542,4 +545,28 @@ void DataReductionProxySettings::WarmProxyConnection() {
warmup_fetcher_->Start();
}
+bool DataReductionProxySettings::DisableIfVPN() {
+ net::NetworkInterfaceList network_interfaces;
+ GetNetworkList(&network_interfaces, 0);
+ const std::string vpn_interface_name_prefix = "tun";
+ for (size_t i = 0; i < network_interfaces.size(); ++i) {
+ std::string interface_name = network_interfaces[i].name;
+ if (LowerCaseEqualsASCII(
+ interface_name.begin(),
+ interface_name.begin() + vpn_interface_name_prefix.size(),
+ vpn_interface_name_prefix.c_str())) {
+ SetProxyConfigs(false,
+ IsDataReductionProxyAlternativeEnabled(),
+ false,
+ false);
+ disabled_on_vpn_ = true;
+ base::RecordAction(
+ base::UserMetricsAction("DataReductionProxy_DisabledOnVPN"));
+ return true;
+ }
+ }
+ disabled_on_vpn_ = false;
+ return false;
+}
+
} // namespace data_reduction_proxy

Powered by Google App Engine
This is Rietveld 408576698