| Index: components/ukm/ukm_service_unittest.cc | 
| diff --git a/components/ukm/ukm_service_unittest.cc b/components/ukm/ukm_service_unittest.cc | 
| index cc694e1edfef27f0b622d2cdc820abacfe3bc327..f6b91c0dd1c76961cebb82d29ce4dadb27afcff1 100644 | 
| --- a/components/ukm/ukm_service_unittest.cc | 
| +++ b/components/ukm/ukm_service_unittest.cc | 
| @@ -41,6 +41,7 @@ class UkmServiceTest : public testing::Test { | 
| } | 
|  | 
| Report GetPersistedReport() { | 
| +    EXPECT_GE(GetPersistedLogCount(), 1); | 
| metrics::PersistedLogs result_persisted_logs( | 
| base::MakeUnique<ukm::PersistedLogsMetricsImpl>(), &prefs_, | 
| prefs::kUkmPersistedLogs, | 
| @@ -60,6 +61,14 @@ class UkmServiceTest : public testing::Test { | 
| return report; | 
| } | 
|  | 
| +  std::unique_ptr<UkmSource> MakeSource(std::string url, int paint_msec) { | 
| +    auto source = base::MakeUnique<UkmSource>(); | 
| +    source->set_committed_url(GURL(url)); | 
| +    source->set_first_contentful_paint( | 
| +        base::TimeDelta::FromMilliseconds(paint_msec)); | 
| +    return source; | 
| +  } | 
| + | 
| protected: | 
| TestingPrefServiceSimple prefs_; | 
| metrics::TestMetricsServiceClient client_; | 
| @@ -80,6 +89,7 @@ TEST_F(UkmServiceTest, EnableDisableSchedule) { | 
| EXPECT_TRUE(task_runner_->HasPendingTask()); | 
| // Allow initialization to complete. | 
| task_runner_->RunUntilIdle(); | 
| +  service.EnableRecording(); | 
| service.EnableReporting(); | 
| EXPECT_TRUE(task_runner_->HasPendingTask()); | 
| service.DisableReporting(); | 
| @@ -92,11 +102,14 @@ TEST_F(UkmServiceTest, PersistAndPurge) { | 
| EXPECT_EQ(GetPersistedLogCount(), 0); | 
| service.Initialize(); | 
| task_runner_->RunUntilIdle(); | 
| +  service.EnableRecording(); | 
| service.EnableReporting(); | 
| +  service.RecordSource(MakeSource("https://google.com", 300)); | 
| // Should init, generate a log, and start an upload. | 
| task_runner_->RunPendingTasks(); | 
| EXPECT_TRUE(client_.uploader()->is_uploading()); | 
| // Flushes the generated log to disk and generates a new one. | 
| +  service.RecordSource(MakeSource("https://google.com", 300)); | 
| service.Flush(); | 
| EXPECT_EQ(GetPersistedLogCount(), 2); | 
| service.Purge(); | 
| @@ -108,13 +121,10 @@ TEST_F(UkmServiceTest, SourceSerialization) { | 
| EXPECT_EQ(GetPersistedLogCount(), 0); | 
| service.Initialize(); | 
| task_runner_->RunUntilIdle(); | 
| +  service.EnableRecording(); | 
| service.EnableReporting(); | 
|  | 
| -  std::unique_ptr<UkmSource> source = base::WrapUnique(new UkmSource()); | 
| -  source->set_committed_url(GURL("https://google.com")); | 
| -  source->set_first_contentful_paint(base::TimeDelta::FromMilliseconds(300)); | 
| - | 
| -  service.RecordSource(std::move(source)); | 
| +  service.RecordSource(MakeSource("https://google.com", 300)); | 
|  | 
| service.Flush(); | 
| EXPECT_EQ(GetPersistedLogCount(), 1); | 
| @@ -140,9 +150,10 @@ TEST_F(UkmServiceTest, MetricsProviderTest) { | 
| EXPECT_FALSE(provider->provide_system_profile_metrics_called()); | 
|  | 
| task_runner_->RunUntilIdle(); | 
| +  service.EnableRecording(); | 
| service.EnableReporting(); | 
|  | 
| -  service.RecordSource(base::WrapUnique(new UkmSource())); | 
| +  service.RecordSource(MakeSource("https://google.com", 300)); | 
| service.Flush(); | 
| EXPECT_EQ(GetPersistedLogCount(), 1); | 
|  | 
| @@ -153,4 +164,28 @@ TEST_F(UkmServiceTest, MetricsProviderTest) { | 
| EXPECT_TRUE(provider->provide_system_profile_metrics_called()); | 
| } | 
|  | 
| +TEST_F(UkmServiceTest, LogsUploadedWithSourcesOnly) { | 
| +  UkmService service(&prefs_, &client_); | 
| +  EXPECT_EQ(GetPersistedLogCount(), 0); | 
| +  service.Initialize(); | 
| +  task_runner_->RunUntilIdle(); | 
| +  service.EnableRecording(); | 
| +  service.EnableReporting(); | 
| + | 
| +  EXPECT_TRUE(task_runner_->HasPendingTask()); | 
| +  // Neither rotation or Flush should generate logs | 
| +  task_runner_->RunPendingTasks(); | 
| +  service.Flush(); | 
| +  EXPECT_EQ(GetPersistedLogCount(), 0); | 
| + | 
| +  service.RecordSource(MakeSource("https://google.com", 300)); | 
| +  // Includes a Source, so will persist. | 
| +  service.Flush(); | 
| +  EXPECT_EQ(GetPersistedLogCount(), 1); | 
| + | 
| +  // Current log has no Sources. | 
| +  service.Flush(); | 
| +  EXPECT_EQ(GetPersistedLogCount(), 1); | 
| +} | 
| + | 
| }  // namespace ukm | 
|  |