Index: chrome/browser/net/spdyproxy/data_reduction_proxy_settings_unittest.cc |
diff --git a/chrome/browser/net/spdyproxy/data_reduction_proxy_settings_unittest.cc b/chrome/browser/net/spdyproxy/data_reduction_proxy_settings_unittest.cc |
index 67b226416cbd5718c209282777ad6af36c7ad568..5d933974f79da97cd47fe9fd1e65d62d9ec6c0a9 100644 |
--- a/chrome/browser/net/spdyproxy/data_reduction_proxy_settings_unittest.cc |
+++ b/chrome/browser/net/spdyproxy/data_reduction_proxy_settings_unittest.cc |
@@ -7,6 +7,8 @@ |
#include "base/command_line.h" |
#include "base/md5.h" |
#include "base/metrics/field_trial.h" |
+#include "base/metrics/histogram_samples.h" |
+#include "base/metrics/statistics_recorder.h" |
#include "base/prefs/pref_registry_simple.h" |
#include "base/prefs/pref_service.h" |
#include "base/prefs/scoped_user_pref_update.h" |
@@ -51,6 +53,20 @@ void HeadersToRaw(std::string* headers) { |
*headers += '\0'; |
} |
+ProbeURLFetchResult FetchResult(bool enabled, bool success) { |
+ if (enabled) { |
+ if (success) |
+ return spdyproxy::SUCCEEDED_PROXY_ALREADY_ENABLED; |
+ else |
+ return spdyproxy::FAILED_PROXY_DISABLED; |
+ } else { |
+ if (success) |
+ return spdyproxy::SUCCEEDED_PROXY_ENABLED; |
+ else |
+ return spdyproxy::FAILED_PROXY_ALREADY_DISABLED; |
+ } |
+} |
+ |
DataReductionProxySettingsTestBase::DataReductionProxySettingsTestBase() |
: testing::Test() { |
} |
@@ -119,13 +135,16 @@ template <class C> |
void DataReductionProxySettingsTestBase::SetProbeResult( |
const std::string& test_url, |
const std::string& response, |
+ ProbeURLFetchResult result, |
bool success, |
int expected_calls) { |
MockDataReductionProxySettings<C>* settings = |
static_cast<MockDataReductionProxySettings<C>*>(settings_.get()); |
if (0 == expected_calls) { |
EXPECT_CALL(*settings, GetURLFetcher()).Times(0); |
+ EXPECT_CALL(*settings, RecordProbeURLFetchResult(_)).Times(0); |
} else { |
+ EXPECT_CALL(*settings, RecordProbeURLFetchResult(result)).Times(1); |
EXPECT_CALL(*settings, GetURLFetcher()) |
.Times(expected_calls) |
.WillRepeatedly(Return(new net::FakeURLFetcher( |
@@ -143,12 +162,14 @@ template void |
DataReductionProxySettingsTestBase::SetProbeResult<DataReductionProxySettings>( |
const std::string& test_url, |
const std::string& response, |
+ ProbeURLFetchResult result, |
bool success, |
int expected_calls); |
template void |
DataReductionProxySettingsTestBase::SetProbeResult< |
DataReductionProxySettingsAndroid>(const std::string& test_url, |
const std::string& response, |
+ ProbeURLFetchResult result, |
bool success, |
int expected_calls); |
@@ -184,13 +205,19 @@ void DataReductionProxySettingsTestBase::CheckProbe( |
bool initially_enabled, |
const std::string& probe_url, |
const std::string& response, |
- bool request_success, |
+ bool request_succeeded, |
bool expected_enabled, |
bool expected_restricted) { |
pref_service_.SetBoolean(prefs::kSpdyProxyAuthEnabled, initially_enabled); |
+ if (initially_enabled) |
+ settings_->enabled_by_user_ = true; |
settings_->restricted_by_carrier_ = false; |
- SetProbeResult( |
- probe_url, response, request_success, initially_enabled ? 1 : 0); |
+ SetProbeResult(probe_url, |
+ response, |
+ FetchResult(initially_enabled, |
+ request_succeeded && (response == "OK")), |
+ request_succeeded, |
+ initially_enabled ? 1 : 0); |
settings_->MaybeActivateDataReductionProxy(false); |
base::MessageLoop::current()->RunUntilIdle(); |
CheckProxyConfigs(expected_enabled, expected_restricted); |
@@ -199,9 +226,14 @@ void DataReductionProxySettingsTestBase::CheckProbe( |
void DataReductionProxySettingsTestBase::CheckProbeOnIPChange( |
const std::string& probe_url, |
const std::string& response, |
- bool request_success, |
+ bool request_succeeded, |
bool expected_restricted) { |
- SetProbeResult(probe_url, response, request_success, 1); |
+ SetProbeResult(probe_url, |
+ response, |
+ FetchResult(!settings_->restricted_by_carrier_, |
+ request_succeeded && (response == "OK")), |
+ request_succeeded, |
+ 1); |
settings_->OnIPAddressChanged(); |
base::MessageLoop::current()->RunUntilIdle(); |
CheckProxyConfigs(true, expected_restricted); |
@@ -211,8 +243,11 @@ void DataReductionProxySettingsTestBase::CheckOnPrefChange( |
bool enabled, |
bool expected_enabled) { |
// Always have a sucessful probe for pref change tests. |
- SetProbeResult( |
- kProbeURLWithOKResponse, "OK", true, expected_enabled ? 1 : 0); |
+ SetProbeResult(kProbeURLWithOKResponse, |
+ "OK", |
+ FetchResult(enabled, true), |
+ true, |
+ expected_enabled ? 1 : 0); |
pref_service_.SetBoolean(prefs::kSpdyProxyAuthEnabled, enabled); |
base::MessageLoop::current()->RunUntilIdle(); |
// Never expect the proxy to be restricted for pref change tests. |
@@ -224,8 +259,11 @@ void DataReductionProxySettingsTestBase::CheckInitDataReductionProxy( |
AddProxyToCommandLine(); |
base::MessageLoopForUI loop; |
pref_service_.SetBoolean(prefs::kSpdyProxyAuthEnabled, enabled_at_startup); |
- SetProbeResult( |
- kProbeURLWithOKResponse, "OK", true, enabled_at_startup ? 1 : 0); |
+ SetProbeResult(kProbeURLWithOKResponse, |
+ "OK", |
+ FetchResult(enabled_at_startup, true), |
+ true, |
+ enabled_at_startup ? 1 : 0); |
settings_->InitDataReductionProxySettings(); |
base::MessageLoop::current()->RunUntilIdle(); |
if (enabled_at_startup) { |
@@ -497,6 +535,10 @@ TEST_F(DataReductionProxySettingsTest, TestOnIPAddressChanged) { |
AddProxyToCommandLine(); |
base::MessageLoopForUI loop; |
// The proxy is enabled initially. |
+ pref_service_.SetBoolean(prefs::kSpdyProxyAuthEnabled, true); |
+ settings_->spdy_proxy_auth_enabled_.Init( |
+ prefs::kSpdyProxyAuthEnabled, |
+ settings_->GetOriginalProfilePrefs()); |
settings_->enabled_by_user_ = true; |
settings_->restricted_by_carrier_ = false; |
settings_->SetProxyConfigs(true, false, true); |
@@ -525,6 +567,8 @@ TEST_F(DataReductionProxySettingsTest, TestOnProxyEnabledPrefChange) { |
} |
TEST_F(DataReductionProxySettingsTest, TestInitDataReductionProxyOn) { |
+ MockSettings* settings = static_cast<MockSettings*>(settings_.get()); |
+ EXPECT_CALL(*settings, RecordStartupState(spdyproxy::PROXY_ENABLED)); |
CheckInitDataReductionProxy(true); |
} |
@@ -533,6 +577,7 @@ TEST_F(DataReductionProxySettingsTest, TestInitDataReductionProxyOff) { |
// LogProxyState. |
MockSettings* settings = static_cast<MockSettings*>(settings_.get()); |
EXPECT_CALL(*settings, LogProxyState(false, false, true)).Times(1); |
+ EXPECT_CALL(*settings, RecordStartupState(spdyproxy::PROXY_DISABLED)); |
CheckInitDataReductionProxy(false); |
} |
@@ -616,3 +661,12 @@ TEST_F(DataReductionProxySettingsTest, WasFetchedViaProxy) { |
DataReductionProxySettings::WasFetchedViaProxy(parsed)); |
} |
} |
+ |
+TEST_F(DataReductionProxySettingsTest, CheckInitMetricsWhenNotAllowed) { |
+ // No call to |AddProxyToCommandLine()| was made, so the proxy feature |
+ // should be unavailable. |
+ EXPECT_FALSE(DataReductionProxySettings::IsDataReductionProxyAllowed()); |
+ MockSettings* settings = static_cast<MockSettings*>(settings_.get()); |
+ EXPECT_CALL(*settings, RecordStartupState(spdyproxy::PROXY_NOT_AVAILABLE)); |
+ settings_->InitDataReductionProxySettings(); |
+} |