Commit 484edb9d authored by marq@chromium.org's avatar marq@chromium.org

Metrics fix for data reduction proxy.

Refactors histogram increments into virtual methods for mocking.

Adds unit tests that expect the correct metrics calls.

Fixes timing of RecordDataReductionInit() so that it happens when the
proxy is unavailable.


BUG=328579

Review URL: https://codereview.chromium.org/111113006

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@243201 0039d316-1c4b-4281-b951-d872f2087c98
parent 494d6059
...@@ -37,49 +37,18 @@ ...@@ -37,49 +37,18 @@
using base::FieldTrialList; using base::FieldTrialList;
using base::StringPrintf; using base::StringPrintf;
using spdyproxy::ProbeURLFetchResult;
using spdyproxy::ProxyStartupState;
namespace { namespace {
// Key of the UMA DataReductionProxy.StartupState histogram. // Key of the UMA DataReductionProxy.StartupState histogram.
const char kUMAProxyStartupStateHistogram[] = const char kUMAProxyStartupStateHistogram[] =
"DataReductionProxy.StartupState"; "DataReductionProxy.StartupState";
// Values of the UMA DataReductionProxy.StartupState histogram.
enum ProxyStartupState {
PROXY_NOT_AVAILABLE = 0,
PROXY_DISABLED,
PROXY_ENABLED,
PROXY_STARTUP_STATE_COUNT,
};
// Key of the UMA DataReductionProxy.ProbeURL histogram. // Key of the UMA DataReductionProxy.ProbeURL histogram.
const char kUMAProxyProbeURL[] = "DataReductionProxy.ProbeURL"; const char kUMAProxyProbeURL[] = "DataReductionProxy.ProbeURL";
// Values of the UMA DataReductionProxy.ProbeURL histogram.
// This enum must remain synchronized with DataReductionProxyProbeURLFetchResult
// in metrics/histograms/histograms.xml.
enum ProbeURLFetchResult {
// The probe failed because the internet was disconnected.
INTERNET_DISCONNECTED = 0,
// The probe failed for any other reason, and as a result, the proxy was
// disabled.
FAILED_PROXY_DISABLED,
// The probe failed, but the proxy was already disabled.
FAILED_PROXY_ALREADY_DISABLED,
// THe probe succeeded, and as a result the proxy was enabled.
SUCCEEDED_PROXY_ENABLED,
// The probe succeeded, but the proxy was already enabled.
SUCCEEDED_PROXY_ALREADY_ENABLED,
// This must always be last.
FETCH_RESULT_COUNT
};
void RecordProbeURLFetchResult(ProbeURLFetchResult result) {
UMA_HISTOGRAM_ENUMERATION(kUMAProxyProbeURL, result, FETCH_RESULT_COUNT);
}
const char kEnabled[] = "Enabled"; const char kEnabled[] = "Enabled";
...@@ -126,6 +95,7 @@ void DataReductionProxySettings::InitPrefMembers() { ...@@ -126,6 +95,7 @@ void DataReductionProxySettings::InitPrefMembers() {
void DataReductionProxySettings::InitDataReductionProxySettings() { void DataReductionProxySettings::InitDataReductionProxySettings() {
InitPrefMembers(); InitPrefMembers();
RecordDataReductionInit();
// Disable the proxy if it is not allowed to be used. // Disable the proxy if it is not allowed to be used.
if (!IsDataReductionProxyAllowed()) if (!IsDataReductionProxyAllowed())
...@@ -140,7 +110,6 @@ void DataReductionProxySettings::InitDataReductionProxySettings() { ...@@ -140,7 +110,6 @@ void DataReductionProxySettings::InitDataReductionProxySettings() {
// the feature via settings, in that once set, the preference will be sticky // the feature via settings, in that once set, the preference will be sticky
// across instances of Chrome. Disabling the feature can only be done through // across instances of Chrome. Disabling the feature can only be done through
// the settings menu. // the settings menu.
RecordDataReductionInit();
if (spdy_proxy_auth_enabled_.GetValue() || if (spdy_proxy_auth_enabled_.GetValue() ||
command_line.HasSwitch(switches::kEnableSpdyProxyAuth)) { command_line.HasSwitch(switches::kEnableSpdyProxyAuth)) {
MaybeActivateDataReductionProxy(true); MaybeActivateDataReductionProxy(true);
...@@ -381,7 +350,7 @@ void DataReductionProxySettings::OnURLFetchComplete( ...@@ -381,7 +350,7 @@ void DataReductionProxySettings::OnURLFetchComplete(
net::URLRequestStatus status = source->GetStatus(); net::URLRequestStatus status = source->GetStatus();
if (status.status() == net::URLRequestStatus::FAILED && if (status.status() == net::URLRequestStatus::FAILED &&
status.error() == net::ERR_INTERNET_DISCONNECTED) { status.error() == net::ERR_INTERNET_DISCONNECTED) {
RecordProbeURLFetchResult(INTERNET_DISCONNECTED); RecordProbeURLFetchResult(spdyproxy::INTERNET_DISCONNECTED);
return; return;
} }
...@@ -400,9 +369,9 @@ void DataReductionProxySettings::OnURLFetchComplete( ...@@ -400,9 +369,9 @@ void DataReductionProxySettings::OnURLFetchComplete(
SetProxyConfigs(true /* enabled */, SetProxyConfigs(true /* enabled */,
false /* restricted */, false /* restricted */,
false /* at_startup */); false /* at_startup */);
RecordProbeURLFetchResult(SUCCEEDED_PROXY_ENABLED); RecordProbeURLFetchResult(spdyproxy::SUCCEEDED_PROXY_ENABLED);
} else { } else {
RecordProbeURLFetchResult(SUCCEEDED_PROXY_ALREADY_ENABLED); RecordProbeURLFetchResult(spdyproxy::SUCCEEDED_PROXY_ALREADY_ENABLED);
} }
} }
restricted_by_carrier_ = false; restricted_by_carrier_ = false;
...@@ -417,9 +386,9 @@ void DataReductionProxySettings::OnURLFetchComplete( ...@@ -417,9 +386,9 @@ void DataReductionProxySettings::OnURLFetchComplete(
SetProxyConfigs(true /* enabled */, SetProxyConfigs(true /* enabled */,
true /* restricted */, true /* restricted */,
false /* at_startup */); false /* at_startup */);
RecordProbeURLFetchResult(FAILED_PROXY_DISABLED); RecordProbeURLFetchResult(spdyproxy::FAILED_PROXY_DISABLED);
} else { } else {
RecordProbeURLFetchResult(FAILED_PROXY_ALREADY_DISABLED); RecordProbeURLFetchResult(spdyproxy::FAILED_PROXY_ALREADY_DISABLED);
} }
} }
restricted_by_carrier_ = true; restricted_by_carrier_ = true;
...@@ -553,12 +522,28 @@ void DataReductionProxySettings::SetProxyConfigs( ...@@ -553,12 +522,28 @@ void DataReductionProxySettings::SetProxyConfigs(
// Metrics methods // Metrics methods
void DataReductionProxySettings::RecordDataReductionInit() { void DataReductionProxySettings::RecordDataReductionInit() {
ProxyStartupState state = PROXY_NOT_AVAILABLE; ProxyStartupState state = spdyproxy::PROXY_NOT_AVAILABLE;
if (IsDataReductionProxyAllowed()) if (IsDataReductionProxyAllowed()) {
state = IsDataReductionProxyEnabled() ? PROXY_ENABLED : PROXY_DISABLED; if (IsDataReductionProxyEnabled())
state = spdyproxy::PROXY_ENABLED;
else
state = spdyproxy::PROXY_DISABLED;
}
RecordStartupState(state);
}
void DataReductionProxySettings::RecordProbeURLFetchResult(
ProbeURLFetchResult result) {
UMA_HISTOGRAM_ENUMERATION(kUMAProxyProbeURL,
result,
spdyproxy::PROBE_URL_FETCH_RESULT_COUNT);
}
void DataReductionProxySettings::RecordStartupState(ProxyStartupState state) {
UMA_HISTOGRAM_ENUMERATION(kUMAProxyStartupStateHistogram, UMA_HISTOGRAM_ENUMERATION(kUMAProxyStartupStateHistogram,
state, state,
PROXY_STARTUP_STATE_COUNT); spdyproxy::PROXY_STARTUP_STATE_COUNT);
} }
DataReductionProxySettings::ContentLengthList DataReductionProxySettings::ContentLengthList
......
...@@ -37,6 +37,42 @@ const unsigned int kNumDaysInHistorySummary = 30; ...@@ -37,6 +37,42 @@ const unsigned int kNumDaysInHistorySummary = 30;
COMPILE_ASSERT(kNumDaysInHistorySummary <= kNumDaysInHistory, COMPILE_ASSERT(kNumDaysInHistorySummary <= kNumDaysInHistory,
DataReductionProxySettings_summary_too_long); DataReductionProxySettings_summary_too_long);
// Values of the UMA DataReductionProxy.StartupState histogram.
// This enum must remain synchronized with DataReductionProxyStartupState
// in metrics/histograms/histograms.xml.
enum ProxyStartupState {
PROXY_NOT_AVAILABLE = 0,
PROXY_DISABLED,
PROXY_ENABLED,
PROXY_STARTUP_STATE_COUNT,
};
// Values of the UMA DataReductionProxy.ProbeURL histogram.
// This enum must remain synchronized with
// DataReductionProxyProbeURLFetchResult in metrics/histograms/histograms.xml.
// TODO(marq): Rename these histogram buckets with s/DISABLED/RESTRICTED/, so
// their names match the behavior they track.
enum ProbeURLFetchResult {
// The probe failed because the internet was disconnected.
INTERNET_DISCONNECTED = 0,
// The probe failed for any other reason, and as a result, the proxy was
// disabled.
FAILED_PROXY_DISABLED,
// The probe failed, but the proxy was already restricted.
FAILED_PROXY_ALREADY_DISABLED,
// THe probe succeeded, and as a result the proxy was restricted.
SUCCEEDED_PROXY_ENABLED,
// The probe succeeded, but the proxy was already restricted.
SUCCEEDED_PROXY_ALREADY_ENABLED,
// This must always be last.
PROBE_URL_FETCH_RESULT_COUNT
};
} // namespace spdyproxy } // namespace spdyproxy
// Central point for configuring the data reduction proxy. // Central point for configuring the data reduction proxy.
...@@ -172,6 +208,10 @@ class DataReductionProxySettings ...@@ -172,6 +208,10 @@ class DataReductionProxySettings
// Accessor for unit tests. // Accessor for unit tests.
std::vector<std::string> BypassRules() { return bypass_rules_;} std::vector<std::string> BypassRules() { return bypass_rules_;}
// Virtualized for mocking
virtual void RecordProbeURLFetchResult(spdyproxy::ProbeURLFetchResult result);
virtual void RecordStartupState(spdyproxy::ProxyStartupState state);
private: private:
friend class DataReductionProxySettingsTestBase; friend class DataReductionProxySettingsTestBase;
friend class DataReductionProxySettingsTest; friend class DataReductionProxySettingsTest;
......
...@@ -7,6 +7,8 @@ ...@@ -7,6 +7,8 @@
#include "base/command_line.h" #include "base/command_line.h"
#include "base/md5.h" #include "base/md5.h"
#include "base/metrics/field_trial.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_registry_simple.h"
#include "base/prefs/pref_service.h" #include "base/prefs/pref_service.h"
#include "base/prefs/scoped_user_pref_update.h" #include "base/prefs/scoped_user_pref_update.h"
...@@ -51,6 +53,20 @@ void HeadersToRaw(std::string* headers) { ...@@ -51,6 +53,20 @@ void HeadersToRaw(std::string* headers) {
*headers += '\0'; *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() DataReductionProxySettingsTestBase::DataReductionProxySettingsTestBase()
: testing::Test() { : testing::Test() {
} }
...@@ -119,13 +135,16 @@ template <class C> ...@@ -119,13 +135,16 @@ template <class C>
void DataReductionProxySettingsTestBase::SetProbeResult( void DataReductionProxySettingsTestBase::SetProbeResult(
const std::string& test_url, const std::string& test_url,
const std::string& response, const std::string& response,
ProbeURLFetchResult result,
bool success, bool success,
int expected_calls) { int expected_calls) {
MockDataReductionProxySettings<C>* settings = MockDataReductionProxySettings<C>* settings =
static_cast<MockDataReductionProxySettings<C>*>(settings_.get()); static_cast<MockDataReductionProxySettings<C>*>(settings_.get());
if (0 == expected_calls) { if (0 == expected_calls) {
EXPECT_CALL(*settings, GetURLFetcher()).Times(0); EXPECT_CALL(*settings, GetURLFetcher()).Times(0);
EXPECT_CALL(*settings, RecordProbeURLFetchResult(_)).Times(0);
} else { } else {
EXPECT_CALL(*settings, RecordProbeURLFetchResult(result)).Times(1);
EXPECT_CALL(*settings, GetURLFetcher()) EXPECT_CALL(*settings, GetURLFetcher())
.Times(expected_calls) .Times(expected_calls)
.WillRepeatedly(Return(new net::FakeURLFetcher( .WillRepeatedly(Return(new net::FakeURLFetcher(
...@@ -143,12 +162,14 @@ template void ...@@ -143,12 +162,14 @@ template void
DataReductionProxySettingsTestBase::SetProbeResult<DataReductionProxySettings>( DataReductionProxySettingsTestBase::SetProbeResult<DataReductionProxySettings>(
const std::string& test_url, const std::string& test_url,
const std::string& response, const std::string& response,
ProbeURLFetchResult result,
bool success, bool success,
int expected_calls); int expected_calls);
template void template void
DataReductionProxySettingsTestBase::SetProbeResult< DataReductionProxySettingsTestBase::SetProbeResult<
DataReductionProxySettingsAndroid>(const std::string& test_url, DataReductionProxySettingsAndroid>(const std::string& test_url,
const std::string& response, const std::string& response,
ProbeURLFetchResult result,
bool success, bool success,
int expected_calls); int expected_calls);
...@@ -184,13 +205,19 @@ void DataReductionProxySettingsTestBase::CheckProbe( ...@@ -184,13 +205,19 @@ void DataReductionProxySettingsTestBase::CheckProbe(
bool initially_enabled, bool initially_enabled,
const std::string& probe_url, const std::string& probe_url,
const std::string& response, const std::string& response,
bool request_success, bool request_succeeded,
bool expected_enabled, bool expected_enabled,
bool expected_restricted) { bool expected_restricted) {
pref_service_.SetBoolean(prefs::kSpdyProxyAuthEnabled, initially_enabled); pref_service_.SetBoolean(prefs::kSpdyProxyAuthEnabled, initially_enabled);
if (initially_enabled)
settings_->enabled_by_user_ = true;
settings_->restricted_by_carrier_ = false; settings_->restricted_by_carrier_ = false;
SetProbeResult( SetProbeResult(probe_url,
probe_url, response, request_success, initially_enabled ? 1 : 0); response,
FetchResult(initially_enabled,
request_succeeded && (response == "OK")),
request_succeeded,
initially_enabled ? 1 : 0);
settings_->MaybeActivateDataReductionProxy(false); settings_->MaybeActivateDataReductionProxy(false);
base::MessageLoop::current()->RunUntilIdle(); base::MessageLoop::current()->RunUntilIdle();
CheckProxyConfigs(expected_enabled, expected_restricted); CheckProxyConfigs(expected_enabled, expected_restricted);
...@@ -199,9 +226,14 @@ void DataReductionProxySettingsTestBase::CheckProbe( ...@@ -199,9 +226,14 @@ void DataReductionProxySettingsTestBase::CheckProbe(
void DataReductionProxySettingsTestBase::CheckProbeOnIPChange( void DataReductionProxySettingsTestBase::CheckProbeOnIPChange(
const std::string& probe_url, const std::string& probe_url,
const std::string& response, const std::string& response,
bool request_success, bool request_succeeded,
bool expected_restricted) { 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(); settings_->OnIPAddressChanged();
base::MessageLoop::current()->RunUntilIdle(); base::MessageLoop::current()->RunUntilIdle();
CheckProxyConfigs(true, expected_restricted); CheckProxyConfigs(true, expected_restricted);
...@@ -211,8 +243,11 @@ void DataReductionProxySettingsTestBase::CheckOnPrefChange( ...@@ -211,8 +243,11 @@ void DataReductionProxySettingsTestBase::CheckOnPrefChange(
bool enabled, bool enabled,
bool expected_enabled) { bool expected_enabled) {
// Always have a sucessful probe for pref change tests. // Always have a sucessful probe for pref change tests.
SetProbeResult( SetProbeResult(kProbeURLWithOKResponse,
kProbeURLWithOKResponse, "OK", true, expected_enabled ? 1 : 0); "OK",
FetchResult(enabled, true),
true,
expected_enabled ? 1 : 0);
pref_service_.SetBoolean(prefs::kSpdyProxyAuthEnabled, enabled); pref_service_.SetBoolean(prefs::kSpdyProxyAuthEnabled, enabled);
base::MessageLoop::current()->RunUntilIdle(); base::MessageLoop::current()->RunUntilIdle();
// Never expect the proxy to be restricted for pref change tests. // Never expect the proxy to be restricted for pref change tests.
...@@ -224,8 +259,11 @@ void DataReductionProxySettingsTestBase::CheckInitDataReductionProxy( ...@@ -224,8 +259,11 @@ void DataReductionProxySettingsTestBase::CheckInitDataReductionProxy(
AddProxyToCommandLine(); AddProxyToCommandLine();
base::MessageLoopForUI loop; base::MessageLoopForUI loop;
pref_service_.SetBoolean(prefs::kSpdyProxyAuthEnabled, enabled_at_startup); pref_service_.SetBoolean(prefs::kSpdyProxyAuthEnabled, enabled_at_startup);
SetProbeResult( SetProbeResult(kProbeURLWithOKResponse,
kProbeURLWithOKResponse, "OK", true, enabled_at_startup ? 1 : 0); "OK",
FetchResult(enabled_at_startup, true),
true,
enabled_at_startup ? 1 : 0);
settings_->InitDataReductionProxySettings(); settings_->InitDataReductionProxySettings();
base::MessageLoop::current()->RunUntilIdle(); base::MessageLoop::current()->RunUntilIdle();
if (enabled_at_startup) { if (enabled_at_startup) {
...@@ -497,6 +535,10 @@ TEST_F(DataReductionProxySettingsTest, TestOnIPAddressChanged) { ...@@ -497,6 +535,10 @@ TEST_F(DataReductionProxySettingsTest, TestOnIPAddressChanged) {
AddProxyToCommandLine(); AddProxyToCommandLine();
base::MessageLoopForUI loop; base::MessageLoopForUI loop;
// The proxy is enabled initially. // 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_->enabled_by_user_ = true;
settings_->restricted_by_carrier_ = false; settings_->restricted_by_carrier_ = false;
settings_->SetProxyConfigs(true, false, true); settings_->SetProxyConfigs(true, false, true);
...@@ -525,6 +567,8 @@ TEST_F(DataReductionProxySettingsTest, TestOnProxyEnabledPrefChange) { ...@@ -525,6 +567,8 @@ TEST_F(DataReductionProxySettingsTest, TestOnProxyEnabledPrefChange) {
} }
TEST_F(DataReductionProxySettingsTest, TestInitDataReductionProxyOn) { TEST_F(DataReductionProxySettingsTest, TestInitDataReductionProxyOn) {
MockSettings* settings = static_cast<MockSettings*>(settings_.get());
EXPECT_CALL(*settings, RecordStartupState(spdyproxy::PROXY_ENABLED));
CheckInitDataReductionProxy(true); CheckInitDataReductionProxy(true);
} }
...@@ -533,6 +577,7 @@ TEST_F(DataReductionProxySettingsTest, TestInitDataReductionProxyOff) { ...@@ -533,6 +577,7 @@ TEST_F(DataReductionProxySettingsTest, TestInitDataReductionProxyOff) {
// LogProxyState. // LogProxyState.
MockSettings* settings = static_cast<MockSettings*>(settings_.get()); MockSettings* settings = static_cast<MockSettings*>(settings_.get());
EXPECT_CALL(*settings, LogProxyState(false, false, true)).Times(1); EXPECT_CALL(*settings, LogProxyState(false, false, true)).Times(1);
EXPECT_CALL(*settings, RecordStartupState(spdyproxy::PROXY_DISABLED));
CheckInitDataReductionProxy(false); CheckInitDataReductionProxy(false);
} }
...@@ -616,3 +661,12 @@ TEST_F(DataReductionProxySettingsTest, WasFetchedViaProxy) { ...@@ -616,3 +661,12 @@ TEST_F(DataReductionProxySettingsTest, WasFetchedViaProxy) {
DataReductionProxySettings::WasFetchedViaProxy(parsed)); 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();
}
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include "base/metrics/field_trial.h" #include "base/metrics/field_trial.h"
#include "base/metrics/histogram_samples.h"
#include "base/prefs/testing_pref_service.h" #include "base/prefs/testing_pref_service.h"
#include "chrome/browser/net/spdyproxy/data_reduction_proxy_settings.h" #include "chrome/browser/net/spdyproxy/data_reduction_proxy_settings.h"
#include "net/url_request/test_url_fetcher_factory.h" #include "net/url_request/test_url_fetcher_factory.h"
...@@ -16,6 +17,9 @@ ...@@ -16,6 +17,9 @@
class PrefService; class PrefService;
class TestingPrefServiceSimple; class TestingPrefServiceSimple;
using spdyproxy::ProbeURLFetchResult;
using spdyproxy::ProxyStartupState;
template <class C> template <class C>
class MockDataReductionProxySettings : public C { class MockDataReductionProxySettings : public C {
public: public:
...@@ -24,6 +28,10 @@ class MockDataReductionProxySettings : public C { ...@@ -24,6 +28,10 @@ class MockDataReductionProxySettings : public C {
MOCK_METHOD0(GetLocalStatePrefs, PrefService*()); MOCK_METHOD0(GetLocalStatePrefs, PrefService*());
MOCK_METHOD3(LogProxyState, void( MOCK_METHOD3(LogProxyState, void(
bool enabled, bool restricted, bool at_startup)); bool enabled, bool restricted, bool at_startup));
MOCK_METHOD1(RecordProbeURLFetchResult,
void(ProbeURLFetchResult result));
MOCK_METHOD1(RecordStartupState,
void(ProxyStartupState state));
// SetProxyConfigs should always call LogProxyState exactly once. // SetProxyConfigs should always call LogProxyState exactly once.
virtual void SetProxyConfigs( virtual void SetProxyConfigs(
...@@ -48,10 +56,12 @@ class DataReductionProxySettingsTestBase : public testing::Test { ...@@ -48,10 +56,12 @@ class DataReductionProxySettingsTestBase : public testing::Test {
template <class C> void SetProbeResult( template <class C> void SetProbeResult(
const std::string& test_url, const std::string& test_url,
const std::string& response, const std::string& response,
ProbeURLFetchResult state,
bool success, bool success,
int expected_calls); int expected_calls);
virtual void SetProbeResult(const std::string& test_url, virtual void SetProbeResult(const std::string& test_url,
const std::string& response, const std::string& response,
ProbeURLFetchResult result,
bool success, bool success,
int expected_calls) = 0; int expected_calls) = 0;
...@@ -92,10 +102,11 @@ class ConcreteDataReductionProxySettingsTest ...@@ -92,10 +102,11 @@ class ConcreteDataReductionProxySettingsTest
virtual void SetProbeResult(const std::string& test_url, virtual void SetProbeResult(const std::string& test_url,
const std::string& response, const std::string& response,
ProbeURLFetchResult result,
bool success, bool success,
int expected_calls) OVERRIDE { int expected_calls) OVERRIDE {
return DataReductionProxySettingsTestBase::SetProbeResult<C>( return DataReductionProxySettingsTestBase::SetProbeResult<C>(
test_url, response, success, expected_calls); test_url, response, result, success, expected_calls);
} }
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment