| Index: components/upload_list/upload_list_unittest.cc | 
| diff --git a/components/upload_list/upload_list_unittest.cc b/components/upload_list/upload_list_unittest.cc | 
| index 59c80cefbd3221067bf45ede7f6f9e2fae23156f..393eb514e250833e7d61d55faa2598c0c712700b 100644 | 
| --- a/components/upload_list/upload_list_unittest.cc | 
| +++ b/components/upload_list/upload_list_unittest.cc | 
| @@ -13,15 +13,100 @@ | 
| #include "base/time/time.h" | 
| #include "testing/gtest/include/gtest/gtest.h" | 
|  | 
| -// Test that UploadList can parse a vector of log entry strings to a vector of | 
| -// UploadInfo objects. See the UploadList declaration for a description of the | 
| -// log entry string format. | 
| -TEST(UploadListTest, ParseLogEntries) { | 
| -  const char kTestTime[] = "1234567890"; | 
| -  const char kTestID[] = "0123456789abcdef"; | 
| -  std::string test_entry = kTestTime; | 
| +namespace { | 
| + | 
| +const char kTestUploadTime[] = "1234567890"; | 
| +const char kTestUploadId[] = "0123456789abcdef"; | 
| +const char kTestLocalID[] = "fedcba9876543210"; | 
| +const char kTestCaptureTime[] = "2345678901"; | 
| + | 
| +}  // namespace | 
| + | 
| +// These tests test that UploadList can parse a vector of log entry strings of | 
| +// various formats to a vector of UploadInfo objects. See the UploadList | 
| +// declaration for a description of the log entry string formats. | 
| + | 
| +// Test log entry strings with upload time and upload ID. | 
| +// This is the format that crash reports are stored in. | 
| +TEST(UploadListTest, ParseUploadTimeUploadId) { | 
| +  std::string test_entry = kTestUploadTime; | 
| +  test_entry += ","; | 
| +  test_entry.append(kTestUploadId); | 
| + | 
| +  scoped_refptr<UploadList> upload_list = | 
| +      new UploadList(nullptr, base::FilePath(), nullptr); | 
| + | 
| +  // 1 entry. | 
| +  std::vector<std::string> log_entries; | 
| +  log_entries.push_back(test_entry); | 
| +  upload_list->ParseLogEntries(log_entries); | 
| +  EXPECT_EQ(1u, upload_list->uploads_.size()); | 
| +  double time_double = upload_list->uploads_[0].upload_time.ToDoubleT(); | 
| +  EXPECT_STREQ(kTestUploadTime, base::DoubleToString(time_double).c_str()); | 
| +  EXPECT_STREQ(kTestUploadId, upload_list->uploads_[0].upload_id.c_str()); | 
| +  EXPECT_STREQ("", upload_list->uploads_[0].local_id.c_str()); | 
| +  time_double = upload_list->uploads_[0].capture_time.ToDoubleT(); | 
| +  EXPECT_STREQ("0", base::DoubleToString(time_double).c_str()); | 
| + | 
| +  // Add 3 more entries. | 
| +  log_entries.push_back(test_entry); | 
| +  log_entries.push_back(test_entry); | 
| +  upload_list->ParseLogEntries(log_entries); | 
| +  EXPECT_EQ(4u, upload_list->uploads_.size()); | 
| +  time_double = upload_list->uploads_[3].upload_time.ToDoubleT(); | 
| +  EXPECT_STREQ(kTestUploadTime, base::DoubleToString(time_double).c_str()); | 
| +  EXPECT_STREQ(kTestUploadId, upload_list->uploads_[3].upload_id.c_str()); | 
| +  EXPECT_STREQ("", upload_list->uploads_[3].local_id.c_str()); | 
| +  time_double = upload_list->uploads_[3].capture_time.ToDoubleT(); | 
| +  EXPECT_STREQ("0", base::DoubleToString(time_double).c_str()); | 
| +} | 
| + | 
| +// Test log entry strings with upload time, upload ID and local ID. | 
| +// This is the old format that WebRTC logs were stored in. | 
| +TEST(UploadListTest, ParseUploadTimeUploadIdLocalId) { | 
| +  std::string test_entry = kTestUploadTime; | 
| +  test_entry += ","; | 
| +  test_entry.append(kTestUploadId); | 
| +  test_entry += ","; | 
| +  test_entry.append(kTestLocalID); | 
| + | 
| +  scoped_refptr<UploadList> upload_list = | 
| +      new UploadList(nullptr, base::FilePath(), nullptr); | 
| + | 
| +  // 1 entry. | 
| +  std::vector<std::string> log_entries; | 
| +  log_entries.push_back(test_entry); | 
| +  upload_list->ParseLogEntries(log_entries); | 
| +  EXPECT_EQ(1u, upload_list->uploads_.size()); | 
| +  double time_double = upload_list->uploads_[0].upload_time.ToDoubleT(); | 
| +  EXPECT_STREQ(kTestUploadTime, base::DoubleToString(time_double).c_str()); | 
| +  EXPECT_STREQ(kTestUploadId, upload_list->uploads_[0].upload_id.c_str()); | 
| +  EXPECT_STREQ(kTestLocalID, upload_list->uploads_[0].local_id.c_str()); | 
| +  time_double = upload_list->uploads_[0].capture_time.ToDoubleT(); | 
| +  EXPECT_STREQ("0", base::DoubleToString(time_double).c_str()); | 
| + | 
| +  // Add 3 more entries. | 
| +  log_entries.push_back(test_entry); | 
| +  log_entries.push_back(test_entry); | 
| +  upload_list->ParseLogEntries(log_entries); | 
| +  EXPECT_EQ(4u, upload_list->uploads_.size()); | 
| +  time_double = upload_list->uploads_[3].upload_time.ToDoubleT(); | 
| +  EXPECT_STREQ(kTestUploadTime, base::DoubleToString(time_double).c_str()); | 
| +  EXPECT_STREQ(kTestUploadId, upload_list->uploads_[3].upload_id.c_str()); | 
| +  EXPECT_STREQ(kTestLocalID, upload_list->uploads_[3].local_id.c_str()); | 
| +  time_double = upload_list->uploads_[3].capture_time.ToDoubleT(); | 
| +  EXPECT_STREQ("0", base::DoubleToString(time_double).c_str()); | 
| +} | 
| + | 
| +// Test log entry strings with upload time, upload ID and capture time. | 
| +// This is the format that WebRTC logs that only have been uploaded only are | 
| +// stored in. | 
| +TEST(UploadListTest, ParseUploadTimeUploadIdCaptureTime) { | 
| +  std::string test_entry = kTestUploadTime; | 
| test_entry += ","; | 
| -  test_entry.append(kTestID, sizeof(kTestID)); | 
| +  test_entry.append(kTestUploadId); | 
| +  test_entry += ",,"; | 
| +  test_entry.append(kTestCaptureTime); | 
|  | 
| scoped_refptr<UploadList> upload_list = | 
| new UploadList(nullptr, base::FilePath(), nullptr); | 
| @@ -31,31 +116,75 @@ TEST(UploadListTest, ParseLogEntries) { | 
| log_entries.push_back(test_entry); | 
| upload_list->ParseLogEntries(log_entries); | 
| EXPECT_EQ(1u, upload_list->uploads_.size()); | 
| -  double time_double = upload_list->uploads_[0].time.ToDoubleT(); | 
| -  EXPECT_STREQ(kTestTime, base::DoubleToString(time_double).c_str()); | 
| -  EXPECT_STREQ(kTestID, upload_list->uploads_[0].id.c_str()); | 
| +  double time_double = upload_list->uploads_[0].upload_time.ToDoubleT(); | 
| +  EXPECT_STREQ(kTestUploadTime, base::DoubleToString(time_double).c_str()); | 
| +  EXPECT_STREQ(kTestUploadId, upload_list->uploads_[0].upload_id.c_str()); | 
| EXPECT_STREQ("", upload_list->uploads_[0].local_id.c_str()); | 
| +  time_double = upload_list->uploads_[0].capture_time.ToDoubleT(); | 
| +  EXPECT_STREQ(kTestCaptureTime, base::DoubleToString(time_double).c_str()); | 
|  | 
| // Add 3 more entries. | 
| log_entries.push_back(test_entry); | 
| log_entries.push_back(test_entry); | 
| upload_list->ParseLogEntries(log_entries); | 
| EXPECT_EQ(4u, upload_list->uploads_.size()); | 
| -  time_double = upload_list->uploads_[3].time.ToDoubleT(); | 
| -  EXPECT_STREQ(kTestTime, base::DoubleToString(time_double).c_str()); | 
| -  EXPECT_STREQ(kTestID, upload_list->uploads_[3].id.c_str()); | 
| +  time_double = upload_list->uploads_[3].upload_time.ToDoubleT(); | 
| +  EXPECT_STREQ(kTestUploadTime, base::DoubleToString(time_double).c_str()); | 
| +  EXPECT_STREQ(kTestUploadId, upload_list->uploads_[3].upload_id.c_str()); | 
| EXPECT_STREQ("", upload_list->uploads_[3].local_id.c_str()); | 
| +  time_double = upload_list->uploads_[3].capture_time.ToDoubleT(); | 
| +  EXPECT_STREQ(kTestCaptureTime, base::DoubleToString(time_double).c_str()); | 
| } | 
|  | 
| -TEST(UploadListTest, ParseLogEntriesWithLocalId) { | 
| -  const char kTestTime[] = "1234567890"; | 
| -  const char kTestID[] = "0123456789abcdef"; | 
| -  const char kTestLocalID[] = "fedcba9876543210"; | 
| -  std::string test_entry = kTestTime; | 
| +// Test log entry strings with local ID and capture time. | 
| +// This is the format that WebRTC logs that only is stored locally are stored | 
| +// in. | 
| +TEST(UploadListTest, ParseLocalIdCaptureTime) { | 
| +  std::string test_entry = ",,"; | 
| +  test_entry.append(kTestLocalID); | 
| +  test_entry += ","; | 
| +  test_entry.append(kTestCaptureTime); | 
| + | 
| +  scoped_refptr<UploadList> upload_list = | 
| +      new UploadList(nullptr, base::FilePath(), nullptr); | 
| + | 
| +  // 1 entry. | 
| +  std::vector<std::string> log_entries; | 
| +  log_entries.push_back(test_entry); | 
| +  upload_list->ParseLogEntries(log_entries); | 
| +  EXPECT_EQ(1u, upload_list->uploads_.size()); | 
| +  double time_double = upload_list->uploads_[0].upload_time.ToDoubleT(); | 
| +  EXPECT_STREQ("0", base::DoubleToString(time_double).c_str()); | 
| +  EXPECT_STREQ("", upload_list->uploads_[0].upload_id.c_str()); | 
| +  EXPECT_STREQ(kTestLocalID, upload_list->uploads_[0].local_id.c_str()); | 
| +  time_double = upload_list->uploads_[0].capture_time.ToDoubleT(); | 
| +  EXPECT_STREQ(kTestCaptureTime, base::DoubleToString(time_double).c_str()); | 
| + | 
| +  // Add 3 more entries. | 
| +  log_entries.push_back(test_entry); | 
| +  log_entries.push_back(test_entry); | 
| +  upload_list->ParseLogEntries(log_entries); | 
| +  EXPECT_EQ(4u, upload_list->uploads_.size()); | 
| +  time_double = upload_list->uploads_[3].upload_time.ToDoubleT(); | 
| +  EXPECT_STREQ("0", base::DoubleToString(time_double).c_str()); | 
| +  EXPECT_STREQ("", upload_list->uploads_[3].upload_id.c_str()); | 
| +  EXPECT_STREQ(kTestLocalID, upload_list->uploads_[3].local_id.c_str()); | 
| +  time_double = upload_list->uploads_[3].capture_time.ToDoubleT(); | 
| +  EXPECT_STREQ(kTestCaptureTime, base::DoubleToString(time_double).c_str()); | 
| +} | 
| + | 
| +// Test log entry strings with upload time, upload ID, local ID and capture | 
| +// time. | 
| +// This is the format that WebRTC logs that is stored locally and have been | 
| +// uploaded are stored in. | 
| +TEST(UploadListTest, ParseUploadTimeUploadIdLocalIdCaptureTime) { | 
| +  std::string test_entry = kTestUploadTime; | 
| +  test_entry += ","; | 
| +  test_entry.append(kTestUploadId); | 
| test_entry += ","; | 
| -  test_entry.append(kTestID, sizeof(kTestID)); | 
| +  test_entry.append(kTestLocalID); | 
| test_entry += ","; | 
| -  test_entry.append(kTestLocalID, sizeof(kTestLocalID)); | 
| +  test_entry.append(kTestCaptureTime); | 
|  | 
| scoped_refptr<UploadList> upload_list = | 
| new UploadList(nullptr, base::FilePath(), nullptr); | 
| @@ -65,18 +194,22 @@ TEST(UploadListTest, ParseLogEntriesWithLocalId) { | 
| log_entries.push_back(test_entry); | 
| upload_list->ParseLogEntries(log_entries); | 
| EXPECT_EQ(1u, upload_list->uploads_.size()); | 
| -  double time_double = upload_list->uploads_[0].time.ToDoubleT(); | 
| -  EXPECT_STREQ(kTestTime, base::DoubleToString(time_double).c_str()); | 
| -  EXPECT_STREQ(kTestID, upload_list->uploads_[0].id.c_str()); | 
| +  double time_double = upload_list->uploads_[0].upload_time.ToDoubleT(); | 
| +  EXPECT_STREQ(kTestUploadTime, base::DoubleToString(time_double).c_str()); | 
| +  EXPECT_STREQ(kTestUploadId, upload_list->uploads_[0].upload_id.c_str()); | 
| EXPECT_STREQ(kTestLocalID, upload_list->uploads_[0].local_id.c_str()); | 
| +  time_double = upload_list->uploads_[0].capture_time.ToDoubleT(); | 
| +  EXPECT_STREQ(kTestCaptureTime, base::DoubleToString(time_double).c_str()); | 
|  | 
| // Add 3 more entries. | 
| log_entries.push_back(test_entry); | 
| log_entries.push_back(test_entry); | 
| upload_list->ParseLogEntries(log_entries); | 
| EXPECT_EQ(4u, upload_list->uploads_.size()); | 
| -  time_double = upload_list->uploads_[3].time.ToDoubleT(); | 
| -  EXPECT_STREQ(kTestTime, base::DoubleToString(time_double).c_str()); | 
| -  EXPECT_STREQ(kTestID, upload_list->uploads_[3].id.c_str()); | 
| +  time_double = upload_list->uploads_[3].upload_time.ToDoubleT(); | 
| +  EXPECT_STREQ(kTestUploadTime, base::DoubleToString(time_double).c_str()); | 
| +  EXPECT_STREQ(kTestUploadId, upload_list->uploads_[3].upload_id.c_str()); | 
| EXPECT_STREQ(kTestLocalID, upload_list->uploads_[3].local_id.c_str()); | 
| +  time_double = upload_list->uploads_[3].capture_time.ToDoubleT(); | 
| +  EXPECT_STREQ(kTestCaptureTime, base::DoubleToString(time_double).c_str()); | 
| } | 
|  |