Chromium Code Reviews| Index: chrome/browser/spellchecker/feedback_sender_unittest.cc |
| diff --git a/chrome/browser/spellchecker/feedback_sender_unittest.cc b/chrome/browser/spellchecker/feedback_sender_unittest.cc |
| index ed6ac5be270118f549f5ba04da9623995590d272..318a7f121475d9f9ad7d2fd010b7b01b3ee4bb20 100644 |
| --- a/chrome/browser/spellchecker/feedback_sender_unittest.cc |
| +++ b/chrome/browser/spellchecker/feedback_sender_unittest.cc |
| @@ -62,21 +62,37 @@ int CountOccurences(const std::string& haystack, const std::string& needle) { |
| class FeedbackSenderTest : public testing::Test { |
| public: |
| FeedbackSenderTest() : ui_thread_(content::BrowserThread::UI, &loop_) { |
| - // The command-line switch and the field trial are temporary. |
| - // TODO(rouslan): Remove the command-line switch and the field trial. |
| - // http://crbug.com/247726 |
| + feedback_.reset(new FeedbackSender(NULL, kLanguage, kCountry)); |
| + feedback_->StartFeedbackCollection(); |
| + } |
| + |
| + virtual ~FeedbackSenderTest() {} |
| + |
| + protected: |
| + // Appends the "--enable-spelling-service-feedback" switch to the |
| + // command-line. |
| + void AppendCommandLineSwitch() { |
| + // The command-line switch is temporary. |
| + // TODO(rouslan): Remove the command-line switch. http://crbug.com/247726 |
| CommandLine::ForCurrentProcess()->AppendSwitch( |
| switches::kEnableSpellingServiceFeedback); |
| + feedback_.reset(new FeedbackSender(NULL, kLanguage, kCountry)); |
| + feedback_->StartFeedbackCollection(); |
| + } |
| + |
| + // Enables the "SpellingServiceFeedback.Enabled" field trial. |
| + void EnableFieldTrial() { |
| + // The field trial is temporary. |
| + // TODO(rouslan): Remove the field trial. http://crbug.com/247726 |
| field_trial_list_.reset( |
| new base::FieldTrialList(new metrics::SHA1EntropyProvider("foo"))); |
| field_trial_ = base::FieldTrialList::CreateFieldTrial( |
| kFeedbackFieldTrialName, kFeedbackFieldTrialEnabledGroupName); |
| field_trial_->group(); |
| feedback_.reset(new FeedbackSender(NULL, kLanguage, kCountry)); |
| + feedback_->StartFeedbackCollection(); |
| } |
| - virtual ~FeedbackSenderTest() {} |
| - protected: |
| uint32 AddPendingFeedback() { |
| std::vector<SpellCheckResult> results(1, BuildSpellCheckResult()); |
| feedback_->OnSpellcheckResults(kRendererProcessId, |
| @@ -433,6 +449,55 @@ TEST_F(FeedbackSenderTest, FeedbackAPI) { |
| << "\nActual data: " << actual_data; |
| } |
| +// The default API version is "v2". |
| +TEST_F(FeedbackSenderTest, DefaultApiVersion) { |
| + AddPendingFeedback(); |
| + feedback_->OnReceiveDocumentMarkers(kRendererProcessId, |
| + std::vector<uint32>()); |
| + EXPECT_TRUE(UploadDataContains("\"apiVersion\":\"v2\"")); |
| + EXPECT_FALSE(UploadDataContains("\"apiVersion\":\"v2-internal\"")); |
| +} |
| + |
| +// The API version should not change for field-trial participants that do not |
| +// append the command-line switch. |
| +TEST_F(FeedbackSenderTest, FieldTrialAloneHasSameApiVersion) { |
| + EnableFieldTrial(); |
| + |
| + AddPendingFeedback(); |
| + feedback_->OnReceiveDocumentMarkers(kRendererProcessId, |
| + std::vector<uint32>()); |
| + |
| + EXPECT_TRUE(UploadDataContains("\"apiVersion\":\"v2\"")); |
| + EXPECT_FALSE(UploadDataContains("\"apiVersion\":\"v2-internal\"")); |
| +} |
| + |
| +// The API version should not change if the command-line switch is appended, but |
| +// the user is not participating in the field-trial. |
| +TEST_F(FeedbackSenderTest, CommandLineSwitchAloneHasSameApiVersion) { |
| + AppendCommandLineSwitch(); |
| + |
| + AddPendingFeedback(); |
| + feedback_->OnReceiveDocumentMarkers(kRendererProcessId, |
| + std::vector<uint32>()); |
| + |
| + EXPECT_TRUE(UploadDataContains("\"apiVersion\":\"v2\"")); |
| + EXPECT_FALSE(UploadDataContains("\"apiVersion\":\"v2-internal\"")); |
| +} |
| + |
| +// The API version should be different for field-trial participants that also |
| +// append the command-line switch. |
| +TEST_F(FeedbackSenderTest, InternalApiVersion) { |
| + AppendCommandLineSwitch(); |
| + EnableFieldTrial(); |
| + |
| + AddPendingFeedback(); |
| + feedback_->OnReceiveDocumentMarkers(kRendererProcessId, |
| + std::vector<uint32>()); |
| + |
| + EXPECT_FALSE(UploadDataContains("\"apiVersion\":\"v2\"")); |
| + EXPECT_TRUE(UploadDataContains("\"apiVersion\":\"v2-internal\"")); |
| +} |
| + |
| // Duplicate spellcheck results should be matched to the existing markers. |
| TEST_F(FeedbackSenderTest, MatchDupliateResultsWithExistingMarkers) { |
| uint32 hash = AddPendingFeedback(); |
| @@ -524,4 +589,36 @@ TEST_F(FeedbackSenderTest, IgnoreOutOfBounds) { |
| EXPECT_FALSE(IsUploadingData()); |
| } |
| +// FeedbackSender does not collect and upload feedback when instructed to stop. |
| +TEST_F(FeedbackSenderTest, CanStopFeedbackCollection) { |
| + feedback_->StopFeedbackCollection(); |
| + AddPendingFeedback(); |
| + feedback_->OnReceiveDocumentMarkers(kRendererProcessId, |
| + std::vector<uint32>()); |
| + EXPECT_FALSE(IsUploadingData()); |
| +} |
| + |
| +// FeedbackSender resumes collecting and uploading feedback when instructed to |
| +// start after stopping. |
| +TEST_F(FeedbackSenderTest, CanReumseFeedbackCollection) { |
|
groby-ooo-7-16
2013/11/21 02:48:41
CanResume
please use gerrit instead
2013/11/22 22:06:31
Done.
|
| + feedback_->StopFeedbackCollection(); |
| + feedback_->StartFeedbackCollection(); |
| + AddPendingFeedback(); |
| + feedback_->OnReceiveDocumentMarkers(kRendererProcessId, |
| + std::vector<uint32>()); |
| + EXPECT_TRUE(IsUploadingData()); |
| +} |
| + |
| +// FeedbackSender does not collect data while being stopped and upload it later. |
| +TEST_F(FeedbackSenderTest, NoFeedbackCollectionWhenStopped) { |
| + feedback_->StopFeedbackCollection(); |
| + AddPendingFeedback(); |
| + feedback_->OnReceiveDocumentMarkers(kRendererProcessId, |
| + std::vector<uint32>()); |
| + feedback_->StartFeedbackCollection(); |
| + feedback_->OnReceiveDocumentMarkers(kRendererProcessId, |
| + std::vector<uint32>()); |
| + EXPECT_FALSE(IsUploadingData()); |
| +} |
| + |
| } // namespace spellcheck |