Commit e72dc4ae authored by mathp@chromium.org's avatar mathp@chromium.org

Provide a way to override the request timeout parameter via Variations.

Default will be 200ms.

BUG=None
TEST=None

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@277960 0039d316-1c4b-4281-b951-d872f2087c98
parent a5b98170
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include "base/metrics/field_trial.h" #include "base/metrics/field_trial.h"
#include "base/metrics/histogram.h" #include "base/metrics/histogram.h"
#include "base/metrics/sparse_histogram.h" #include "base/metrics/sparse_histogram.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_util.h" #include "base/strings/string_util.h"
#include "base/time/time.h" #include "base/time/time.h"
#include "chrome/browser/browser_process.h" #include "chrome/browser/browser_process.h"
...@@ -49,7 +50,8 @@ void LogResponseState(SuggestionsResponseState state) { ...@@ -49,7 +50,8 @@ void LogResponseState(SuggestionsResponseState state) {
RESPONSE_STATE_SIZE); RESPONSE_STATE_SIZE);
} }
// Obtains the experiment parameter under the supplied |key|. // Obtains the experiment parameter under the supplied |key|, or empty string
// if the parameter does not exist.
std::string GetExperimentParam(const std::string& key) { std::string GetExperimentParam(const std::string& key) {
return chrome_variations::GetVariationParamValue(kSuggestionsFieldTrialName, return chrome_variations::GetVariationParamValue(kSuggestionsFieldTrialName,
key); key);
...@@ -67,10 +69,7 @@ void DispatchRequestsAndClear( ...@@ -67,10 +69,7 @@ void DispatchRequestsAndClear(
std::vector<SuggestionsService::ResponseCallback>().swap(*requestors); std::vector<SuggestionsService::ResponseCallback>().swap(*requestors);
} }
// Timeout before serving requestors after a fetch suggestions request has been const int kDefaultRequestTimeoutMs = 200;
// issued.
// TODO(manzagop): make this a Variations parameter to enable tweaking.
const unsigned int kRequestTimeoutMs = 200;
} // namespace } // namespace
...@@ -81,20 +80,27 @@ const char kSuggestionsFieldTrialSuggestionsSuffixParam[] = ...@@ -81,20 +80,27 @@ const char kSuggestionsFieldTrialSuggestionsSuffixParam[] =
const char kSuggestionsFieldTrialBlacklistSuffixParam[] = "blacklist_suffix"; const char kSuggestionsFieldTrialBlacklistSuffixParam[] = "blacklist_suffix";
const char kSuggestionsFieldTrialStateParam[] = "state"; const char kSuggestionsFieldTrialStateParam[] = "state";
const char kSuggestionsFieldTrialStateEnabled[] = "enabled"; const char kSuggestionsFieldTrialStateEnabled[] = "enabled";
const char kSuggestionsFieldTrialTimeoutMs[] = "timeout_ms";
SuggestionsService::SuggestionsService( SuggestionsService::SuggestionsService(
Profile* profile, scoped_ptr<SuggestionsStore> suggestions_store) Profile* profile, scoped_ptr<SuggestionsStore> suggestions_store)
: suggestions_store_(suggestions_store.Pass()), : suggestions_store_(suggestions_store.Pass()),
thumbnail_manager_(new ThumbnailManager(profile)), thumbnail_manager_(new ThumbnailManager(profile)),
profile_(profile), profile_(profile),
weak_ptr_factory_(this) { weak_ptr_factory_(this),
// Obtain the URL to use to fetch suggestions data from the Variations param. request_timeout_ms_(kDefaultRequestTimeoutMs) {
// Obtain various parameters from Variations.
suggestions_url_ = suggestions_url_ =
GURL(GetExperimentParam(kSuggestionsFieldTrialURLParam) + GURL(GetExperimentParam(kSuggestionsFieldTrialURLParam) +
GetExperimentParam(kSuggestionsFieldTrialSuggestionsSuffixParam)); GetExperimentParam(kSuggestionsFieldTrialSuggestionsSuffixParam));
blacklist_url_prefix_ = blacklist_url_prefix_ =
GetExperimentParam(kSuggestionsFieldTrialURLParam) + GetExperimentParam(kSuggestionsFieldTrialURLParam) +
GetExperimentParam(kSuggestionsFieldTrialBlacklistSuffixParam); GetExperimentParam(kSuggestionsFieldTrialBlacklistSuffixParam);
std::string timeout = GetExperimentParam(kSuggestionsFieldTrialTimeoutMs);
int temp_timeout;
if (!timeout.empty() && base::StringToInt(timeout, &temp_timeout)) {
request_timeout_ms_ = temp_timeout;
}
} }
SuggestionsService::~SuggestionsService() {} SuggestionsService::~SuggestionsService() {}
...@@ -117,7 +123,7 @@ void SuggestionsService::FetchSuggestionsData( ...@@ -117,7 +123,7 @@ void SuggestionsService::FetchSuggestionsData(
&SuggestionsService::OnRequestTimeout, weak_ptr_factory_.GetWeakPtr()))); &SuggestionsService::OnRequestTimeout, weak_ptr_factory_.GetWeakPtr())));
BrowserThread::PostDelayedTask( BrowserThread::PostDelayedTask(
BrowserThread::UI, FROM_HERE, pending_timeout_closure_->callback(), BrowserThread::UI, FROM_HERE, pending_timeout_closure_->callback(),
base::TimeDelta::FromMilliseconds(kRequestTimeoutMs)); base::TimeDelta::FromMilliseconds(request_timeout_ms_));
} }
void SuggestionsService::FetchSuggestionsDataNoTimeout( void SuggestionsService::FetchSuggestionsDataNoTimeout(
......
...@@ -131,6 +131,10 @@ class SuggestionsService : public KeyedService, public net::URLFetcherDelegate { ...@@ -131,6 +131,10 @@ class SuggestionsService : public KeyedService, public net::URLFetcherDelegate {
// For callbacks may be run after destruction. // For callbacks may be run after destruction.
base::WeakPtrFactory<SuggestionsService> weak_ptr_factory_; base::WeakPtrFactory<SuggestionsService> weak_ptr_factory_;
// Timeout (in ms) before serving requestors after a fetch suggestions request
// has been issued.
int request_timeout_ms_;
DISALLOW_COPY_AND_ASSIGN(SuggestionsService); DISALLOW_COPY_AND_ASSIGN(SuggestionsService);
}; };
......
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