| Index: chrome/browser/spellchecker/feedback_sender.cc
|
| diff --git a/chrome/browser/spellchecker/feedback_sender.cc b/chrome/browser/spellchecker/feedback_sender.cc
|
| index 8943667f175b0551b893541c095acb419f90402a..406fa0bb185dc218a55f5a2574c98ff4853c3542 100644
|
| --- a/chrome/browser/spellchecker/feedback_sender.cc
|
| +++ b/chrome/browser/spellchecker/feedback_sender.cc
|
| @@ -120,11 +120,12 @@ base::DictionaryValue* BuildParams(base::ListValue* suggestion_info,
|
|
|
| // Builds feedback data from |params|. Takes ownership of |params|. The caller
|
| // owns the result.
|
| -base::Value* BuildFeedbackValue(base::DictionaryValue* params) {
|
| +base::Value* BuildFeedbackValue(base::DictionaryValue* params,
|
| + const std::string& api_version) {
|
| base::DictionaryValue* result = new base::DictionaryValue;
|
| result->Set("params", params);
|
| result->SetString("method", "spelling.feedback");
|
| - result->SetString("apiVersion", "v2");
|
| + result->SetString("apiVersion", api_version);
|
| return result;
|
| }
|
|
|
| @@ -138,26 +139,31 @@ bool IsInBounds(int misspelling_location,
|
| text_length;
|
| }
|
|
|
| +// Returns the feedback API version.
|
| +std::string GetApiVersion() {
|
| + // This guard is temporary.
|
| + // TODO(rouslan): Remove the guard. http://crbug.com/247726
|
| + if (base::FieldTrialList::FindFullName(kFeedbackFieldTrialName) ==
|
| + kFeedbackFieldTrialEnabledGroupName &&
|
| + CommandLine::ForCurrentProcess()->HasSwitch(
|
| + switches::kEnableSpellingFeedbackFieldTrial)) {
|
| + return "v2-internal";
|
| + }
|
| + return "v2";
|
| +}
|
| +
|
| } // namespace
|
|
|
| FeedbackSender::FeedbackSender(net::URLRequestContextGetter* request_context,
|
| const std::string& language,
|
| const std::string& country)
|
| : request_context_(request_context),
|
| + api_version_(GetApiVersion()),
|
| language_(language),
|
| country_(country),
|
| misspelling_counter_(0),
|
| session_start_(base::Time::Now()),
|
| feedback_service_url_(kFeedbackServiceURL) {
|
| - // This guard is temporary.
|
| - // TODO(rouslan): Remove the guard. http://crbug.com/247726
|
| - if (!CommandLine::ForCurrentProcess()->HasSwitch(
|
| - switches::kEnableSpellingServiceFeedback) ||
|
| - base::FieldTrialList::FindFullName(kFeedbackFieldTrialName) !=
|
| - kFeedbackFieldTrialEnabledGroupName) {
|
| - return;
|
| - }
|
| -
|
| // The command-line switch is for testing and temporary.
|
| // TODO(rouslan): Remove the command-line switch when testing is complete.
|
| // http://crbug.com/247726
|
| @@ -167,24 +173,6 @@ FeedbackSender::FeedbackSender(net::URLRequestContextGetter* request_context,
|
| GURL(CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
|
| switches::kSpellingServiceFeedbackUrl));
|
| }
|
| -
|
| - int interval_seconds = chrome::spellcheck_common::kFeedbackIntervalSeconds;
|
| - // This command-line switch is for testing and temporary.
|
| - // TODO(rouslan): Remove the command-line switch when testing is complete.
|
| - // http://crbug.com/247726
|
| - if (CommandLine::ForCurrentProcess()->HasSwitch(
|
| - switches::kSpellingServiceFeedbackIntervalSeconds)) {
|
| - base::StringToInt(CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
|
| - switches::kSpellingServiceFeedbackIntervalSeconds),
|
| - &interval_seconds);
|
| - if (interval_seconds < kMinIntervalSeconds)
|
| - interval_seconds = kMinIntervalSeconds;
|
| - }
|
| -
|
| - timer_.Start(FROM_HERE,
|
| - base::TimeDelta::FromSeconds(interval_seconds),
|
| - this,
|
| - &FeedbackSender::RequestDocumentMarkers);
|
| }
|
|
|
| FeedbackSender::~FeedbackSender() {
|
| @@ -318,6 +306,40 @@ void FeedbackSender::OnLanguageCountryChange(const std::string& language,
|
| country_ = country;
|
| }
|
|
|
| +void FeedbackSender::StartFeedbackCollection() {
|
| + if (timer_.IsRunning())
|
| + return;
|
| +
|
| + int interval_seconds = chrome::spellcheck_common::kFeedbackIntervalSeconds;
|
| + // This command-line switch is for testing and temporary.
|
| + // TODO(rouslan): Remove the command-line switch when testing is complete.
|
| + // http://crbug.com/247726
|
| + if (CommandLine::ForCurrentProcess()->HasSwitch(
|
| + switches::kSpellingServiceFeedbackIntervalSeconds)) {
|
| + base::StringToInt(CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
|
| + switches::kSpellingServiceFeedbackIntervalSeconds),
|
| + &interval_seconds);
|
| + if (interval_seconds < kMinIntervalSeconds)
|
| + interval_seconds = kMinIntervalSeconds;
|
| + static const int kSessionSeconds =
|
| + chrome::spellcheck_common::kSessionHours * 60 * 60;
|
| + if (interval_seconds > kSessionSeconds)
|
| + interval_seconds = kSessionSeconds;
|
| + }
|
| + timer_.Start(FROM_HERE,
|
| + base::TimeDelta::FromSeconds(interval_seconds),
|
| + this,
|
| + &FeedbackSender::RequestDocumentMarkers);
|
| +}
|
| +
|
| +void FeedbackSender::StopFeedbackCollection() {
|
| + if (!timer_.IsRunning())
|
| + return;
|
| +
|
| + FlushFeedback();
|
| + timer_.Stop();
|
| +}
|
| +
|
| void FeedbackSender::OnURLFetchComplete(const net::URLFetcher* source) {
|
| for (ScopedVector<net::URLFetcher>::iterator sender_it = senders_.begin();
|
| sender_it != senders_.end();
|
| @@ -377,7 +399,8 @@ void FeedbackSender::SendFeedback(const std::vector<Misspelling>& feedback_data,
|
| scoped_ptr<base::Value> feedback_value(BuildFeedbackValue(
|
| BuildParams(BuildSuggestionInfo(feedback_data, is_first_feedback_batch),
|
| language_,
|
| - country_)));
|
| + country_),
|
| + api_version_));
|
| std::string feedback;
|
| base::JSONWriter::Write(feedback_value.get(), &feedback);
|
|
|
|
|