| Index: chrome/browser/feedback/feedback_uploader_unittest.cc
|
| diff --git a/chrome/browser/feedback/feedback_uploader_unittest.cc b/chrome/browser/feedback/feedback_uploader_unittest.cc
|
| index 407a286c0e3fc347f3398ad0d63f7011792e7bc3..605ce228e1ba2004c3188fedb027eafa6790fad5 100644
|
| --- a/chrome/browser/feedback/feedback_uploader_unittest.cc
|
| +++ b/chrome/browser/feedback/feedback_uploader_unittest.cc
|
| @@ -4,6 +4,8 @@
|
|
|
| #include "chrome/browser/feedback/feedback_uploader.h"
|
|
|
| +#include <set>
|
| +
|
| #include "base/bind.h"
|
| #include "base/message_loop/message_loop.h"
|
| #include "base/run_loop.h"
|
| @@ -37,6 +39,7 @@ class FeedbackUploaderTest : public testing::Test {
|
| FeedbackUploaderTest()
|
| : ui_thread_(content::BrowserThread::UI, &message_loop_),
|
| profile_(new TestingProfile()),
|
| + dispatched_reports_count_(0),
|
| expected_reports_(0) {
|
| FeedbackUploaderFactory::GetInstance()->SetTestingFactory(
|
| profile_.get(), &CreateFeedbackUploaderService);
|
| @@ -54,27 +57,38 @@ class FeedbackUploaderTest : public testing::Test {
|
| }
|
|
|
| void QueueReport(const std::string& data) {
|
| - uploader_->QueueReport(make_scoped_ptr(new std::string(data)));
|
| + uploader_->QueueReport(data);
|
| }
|
|
|
| void ReportFailure(const std::string& data) {
|
| - uploader_->RetryReport(make_scoped_ptr(new std::string(data)));
|
| + uploader_->RetryReport(data);
|
| }
|
|
|
| - void MockDispatchReport(scoped_ptr<std::string> report_data) {
|
| - dispatched_reports_.push_back(*report_data.get());
|
| + void MockDispatchReport(const std::string& report_data) {
|
| + if (ContainsKey(dispatched_reports_, report_data)) {
|
| + dispatched_reports_[report_data]++;
|
| + } else {
|
| + dispatched_reports_[report_data] = 1;
|
| + }
|
| + dispatched_reports_count_++;
|
|
|
| // Dispatch will always update the timer, whether successful or not,
|
| // simulate the same behavior.
|
| uploader_->UpdateUploadTimer();
|
|
|
| - if (dispatched_reports_.size() >= expected_reports_) {
|
| + if (ProcessingComplete()) {
|
| if (run_loop_.get())
|
| run_loop_->Quit();
|
| }
|
| }
|
|
|
| + bool ProcessingComplete() {
|
| + return (dispatched_reports_count_ >= expected_reports_);
|
| + }
|
| +
|
| void RunMessageLoop() {
|
| + if (ProcessingComplete())
|
| + return;
|
| run_loop_.reset(new base::RunLoop());
|
| run_loop_->Run();
|
| }
|
| @@ -86,11 +100,18 @@ class FeedbackUploaderTest : public testing::Test {
|
|
|
| FeedbackUploader* uploader_;
|
|
|
| - std::vector<std::string> dispatched_reports_;
|
| + std::map<std::string, unsigned int> dispatched_reports_;
|
| + size_t dispatched_reports_count_;
|
| size_t expected_reports_;
|
| };
|
|
|
| -TEST_F(FeedbackUploaderTest, QueueMultiple) {
|
| +#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MACOSX)
|
| +#define MAYBE_QueueMultiple QueueMultiple
|
| +#else
|
| +// crbug.com/330547
|
| +#define MAYBE_QueueMultiple DISABLED_QueueMultiple
|
| +#endif
|
| +TEST_F(FeedbackUploaderTest, MAYBE_QueueMultiple) {
|
| dispatched_reports_.clear();
|
| QueueReport(kReportOne);
|
| QueueReport(kReportTwo);
|
| @@ -98,20 +119,21 @@ TEST_F(FeedbackUploaderTest, QueueMultiple) {
|
| QueueReport(kReportFour);
|
|
|
| EXPECT_EQ(dispatched_reports_.size(), 4u);
|
| - EXPECT_EQ(dispatched_reports_[0], kReportOne);
|
| - EXPECT_EQ(dispatched_reports_[1], kReportTwo);
|
| - EXPECT_EQ(dispatched_reports_[2], kReportThree);
|
| - EXPECT_EQ(dispatched_reports_[3], kReportFour);
|
| + EXPECT_EQ(dispatched_reports_[kReportOne], 1u);
|
| + EXPECT_EQ(dispatched_reports_[kReportTwo], 1u);
|
| + EXPECT_EQ(dispatched_reports_[kReportThree], 1u);
|
| + EXPECT_EQ(dispatched_reports_[kReportFour], 1u);
|
| }
|
|
|
| -#if defined(OS_WIN)
|
| +#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MACOSX)
|
| +#define MAYBE_QueueMultipleWithFailures QueueMultipleWithFailures
|
| +#else
|
| // crbug.com/330547
|
| #define MAYBE_QueueMultipleWithFailures DISABLED_QueueMultipleWithFailures
|
| -#else
|
| -#define MAYBE_QueueMultipleWithFailures QueueMultipleWithFailures
|
| #endif
|
| TEST_F(FeedbackUploaderTest, MAYBE_QueueMultipleWithFailures) {
|
| dispatched_reports_.clear();
|
| +
|
| QueueReport(kReportOne);
|
| QueueReport(kReportTwo);
|
| QueueReport(kReportThree);
|
| @@ -124,14 +146,12 @@ TEST_F(FeedbackUploaderTest, MAYBE_QueueMultipleWithFailures) {
|
| expected_reports_ = 7;
|
| RunMessageLoop();
|
|
|
| - EXPECT_EQ(dispatched_reports_.size(), 7u);
|
| - EXPECT_EQ(dispatched_reports_[0], kReportOne);
|
| - EXPECT_EQ(dispatched_reports_[1], kReportTwo);
|
| - EXPECT_EQ(dispatched_reports_[2], kReportThree);
|
| - EXPECT_EQ(dispatched_reports_[3], kReportFour);
|
| - EXPECT_EQ(dispatched_reports_[4], kReportFive);
|
| - EXPECT_EQ(dispatched_reports_[5], kReportThree);
|
| - EXPECT_EQ(dispatched_reports_[6], kReportTwo);
|
| + EXPECT_EQ(dispatched_reports_.size(), 5u);
|
| + EXPECT_EQ(dispatched_reports_[kReportOne], 1u);
|
| + EXPECT_EQ(dispatched_reports_[kReportTwo], 2u);
|
| + EXPECT_EQ(dispatched_reports_[kReportThree], 2u);
|
| + EXPECT_EQ(dispatched_reports_[kReportFour], 1u);
|
| + EXPECT_EQ(dispatched_reports_[kReportFive], 1u);
|
| }
|
|
|
| } // namespace feedback
|
|
|