Chromium Code Reviews| Index: components/metrics/file_metrics_provider.cc |
| diff --git a/components/metrics/file_metrics_provider.cc b/components/metrics/file_metrics_provider.cc |
| index 36a60df799006f9684477f5f63ce7be256ed5948..65284556c7dbbdb3147823e83134d238179209b3 100644 |
| --- a/components/metrics/file_metrics_provider.cc |
| +++ b/components/metrics/file_metrics_provider.cc |
| @@ -185,10 +185,11 @@ void FileMetricsProvider::RecordHistogramSnapshotsFromFile( |
| scoped_ptr<base::HistogramBase> histogram = histogram_iter.GetNext(); |
| if (!histogram) |
| break; |
| - if (file->type == FILE_HISTOGRAMS_ATOMIC) |
| - snapshot_manager->PrepareAbsoluteTakingOwnership(std::move(histogram)); |
| - else |
| - snapshot_manager->PrepareDeltaTakingOwnership(std::move(histogram)); |
| + // The "delta" is calculated, which updates the "logged" counts, even |
| + // for "atomic" files that may be read-only. This is possible because |
| + // the file contents are copied into read/write memory which is then |
| + // discarded after the reporting is complete. |
|
Ilya Sherman
2016/04/20 17:10:33
To clarify: What happens to the actual backing fil
bcwhite
2016/04/22 15:18:05
The backing file is atomically overwritten (using
|
| + snapshot_manager->PrepareDeltaTakingOwnership(std::move(histogram)); |
| ++histogram_count; |
| } |