| Index: base/metrics/persistent_histogram_allocator.cc | 
| diff --git a/base/metrics/persistent_histogram_allocator.cc b/base/metrics/persistent_histogram_allocator.cc | 
| index 6006d31fbee70031acb901fb6a0f04a944f5ff04..e96433677df982570f6110447d7746b803af74ab 100644 | 
| --- a/base/metrics/persistent_histogram_allocator.cc | 
| +++ b/base/metrics/persistent_histogram_allocator.cc | 
| @@ -4,9 +4,11 @@ | 
|  | 
| #include "base/metrics/persistent_histogram_allocator.h" | 
|  | 
| +#include <memory> | 
| + | 
| #include "base/lazy_instance.h" | 
| #include "base/logging.h" | 
| -#include "base/memory/scoped_ptr.h" | 
| +#include "base/memory/ptr_util.h" | 
| #include "base/metrics/histogram.h" | 
| #include "base/metrics/histogram_base.h" | 
| #include "base/metrics/histogram_samples.h" | 
| @@ -47,12 +49,12 @@ PersistentHistogramAllocator* g_allocator; | 
| // Take an array of range boundaries and create a proper BucketRanges object | 
| // which is returned to the caller. A return of nullptr indicates that the | 
| // passed boundaries are invalid. | 
| -scoped_ptr<BucketRanges> CreateRangesFromData( | 
| +std::unique_ptr<BucketRanges> CreateRangesFromData( | 
| HistogramBase::Sample* ranges_data, | 
| uint32_t ranges_checksum, | 
| size_t count) { | 
| // To avoid racy destruction at shutdown, the following may be leaked. | 
| -  scoped_ptr<BucketRanges> ranges(new BucketRanges(count)); | 
| +  std::unique_ptr<BucketRanges> ranges(new BucketRanges(count)); | 
| DCHECK_EQ(count, ranges->size()); | 
| for (size_t i = 0; i < count; ++i) { | 
| if (i > 0 && ranges_data[i] <= ranges_data[i - 1]) | 
| @@ -110,7 +112,7 @@ struct PersistentHistogramAllocator::PersistentHistogramData { | 
| }; | 
|  | 
| PersistentHistogramAllocator::PersistentHistogramAllocator( | 
| -    scoped_ptr<PersistentMemoryAllocator> memory) | 
| +    std::unique_ptr<PersistentMemoryAllocator> memory) | 
| : memory_allocator_(std::move(memory)) {} | 
|  | 
| PersistentHistogramAllocator::~PersistentHistogramAllocator() {} | 
| @@ -174,7 +176,7 @@ void PersistentHistogramAllocator::RecordCreateHistogramResult( | 
|  | 
| // static | 
| void PersistentHistogramAllocator::SetGlobalAllocator( | 
| -    scoped_ptr<PersistentHistogramAllocator> allocator) { | 
| +    std::unique_ptr<PersistentHistogramAllocator> allocator) { | 
| // Releasing or changing an allocator is extremely dangerous because it | 
| // likely has histograms stored within it. If the backing memory is also | 
| // also released, future accesses to those histograms will seg-fault. | 
| @@ -194,7 +196,7 @@ PersistentHistogramAllocator::GetGlobalAllocator() { | 
| } | 
|  | 
| // static | 
| -scoped_ptr<PersistentHistogramAllocator> | 
| +std::unique_ptr<PersistentHistogramAllocator> | 
| PersistentHistogramAllocator::ReleaseGlobalAllocatorForTesting() { | 
| PersistentHistogramAllocator* histogram_allocator = g_allocator; | 
| if (!histogram_allocator) | 
| @@ -229,7 +231,7 @@ PersistentHistogramAllocator::ReleaseGlobalAllocatorForTesting() { | 
| } | 
|  | 
| g_allocator = nullptr; | 
| -  return make_scoped_ptr(histogram_allocator); | 
| +  return WrapUnique(histogram_allocator); | 
| }; | 
|  | 
| // static | 
| @@ -239,9 +241,9 @@ void PersistentHistogramAllocator::CreateGlobalAllocatorOnPersistentMemory( | 
| size_t page_size, | 
| uint64_t id, | 
| StringPiece name) { | 
| -  SetGlobalAllocator(make_scoped_ptr(new PersistentHistogramAllocator( | 
| -      make_scoped_ptr(new PersistentMemoryAllocator( | 
| -          base, size, page_size, id, name, false))))); | 
| +  SetGlobalAllocator(WrapUnique(new PersistentHistogramAllocator( | 
| +      WrapUnique(new PersistentMemoryAllocator(base, size, page_size, id, | 
| +                                                     name, false))))); | 
| } | 
|  | 
| // static | 
| @@ -249,27 +251,28 @@ void PersistentHistogramAllocator::CreateGlobalAllocatorOnLocalMemory( | 
| size_t size, | 
| uint64_t id, | 
| StringPiece name) { | 
| -  SetGlobalAllocator(make_scoped_ptr(new PersistentHistogramAllocator( | 
| -      make_scoped_ptr(new LocalPersistentMemoryAllocator(size, id, name))))); | 
| +  SetGlobalAllocator(WrapUnique(new PersistentHistogramAllocator( | 
| +      WrapUnique(new LocalPersistentMemoryAllocator(size, id, name))))); | 
| } | 
|  | 
| // static | 
| void PersistentHistogramAllocator::CreateGlobalAllocatorOnSharedMemory( | 
| size_t size, | 
| const SharedMemoryHandle& handle) { | 
| -  scoped_ptr<SharedMemory> shm(new SharedMemory(handle, /*readonly=*/false)); | 
| +  std::unique_ptr<SharedMemory> shm( | 
| +      new SharedMemory(handle, /*readonly=*/false)); | 
| if (!shm->Map(size)) { | 
| NOTREACHED(); | 
| return; | 
| } | 
|  | 
| -  SetGlobalAllocator(make_scoped_ptr(new PersistentHistogramAllocator( | 
| -      make_scoped_ptr(new SharedPersistentMemoryAllocator( | 
| +  SetGlobalAllocator(WrapUnique(new PersistentHistogramAllocator( | 
| +      WrapUnique(new SharedPersistentMemoryAllocator( | 
| std::move(shm), 0, StringPiece(), /*readonly=*/false))))); | 
| } | 
|  | 
| // static | 
| -scoped_ptr<HistogramBase> PersistentHistogramAllocator::CreateHistogram( | 
| +std::unique_ptr<HistogramBase> PersistentHistogramAllocator::CreateHistogram( | 
| PersistentHistogramData* histogram_data_ptr) { | 
| if (!histogram_data_ptr) { | 
| RecordCreateHistogramResult(CREATE_HISTOGRAM_INVALID_METADATA_POINTER); | 
| @@ -279,10 +282,11 @@ scoped_ptr<HistogramBase> PersistentHistogramAllocator::CreateHistogram( | 
|  | 
| // Sparse histograms are quite different so handle them as a special case. | 
| if (histogram_data_ptr->histogram_type == SPARSE_HISTOGRAM) { | 
| -    scoped_ptr<HistogramBase> histogram = SparseHistogram::PersistentCreate( | 
| -        memory_allocator(), histogram_data_ptr->name, | 
| -        &histogram_data_ptr->samples_metadata, | 
| -        &histogram_data_ptr->logged_metadata); | 
| +    std::unique_ptr<HistogramBase> histogram = | 
| +        SparseHistogram::PersistentCreate(memory_allocator(), | 
| +                                          histogram_data_ptr->name, | 
| +                                          &histogram_data_ptr->samples_metadata, | 
| +                                          &histogram_data_ptr->logged_metadata); | 
| DCHECK(histogram); | 
| histogram->SetFlags(histogram_data_ptr->flags); | 
| RecordCreateHistogramResult(CREATE_HISTOGRAM_SUCCESS); | 
| @@ -314,7 +318,7 @@ scoped_ptr<HistogramBase> PersistentHistogramAllocator::CreateHistogram( | 
| return nullptr; | 
| } | 
|  | 
| -  scoped_ptr<const BucketRanges> created_ranges = | 
| +  std::unique_ptr<const BucketRanges> created_ranges = | 
| CreateRangesFromData(ranges_data, histogram_data.ranges_checksum, | 
| histogram_data.bucket_count + 1); | 
| if (!created_ranges) { | 
| @@ -346,7 +350,7 @@ scoped_ptr<HistogramBase> PersistentHistogramAllocator::CreateHistogram( | 
| counts_data + histogram_data.bucket_count; | 
|  | 
| std::string name(histogram_data_ptr->name); | 
| -  scoped_ptr<HistogramBase> histogram; | 
| +  std::unique_ptr<HistogramBase> histogram; | 
| switch (histogram_data.histogram_type) { | 
| case HISTOGRAM: | 
| histogram = Histogram::PersistentCreate( | 
| @@ -393,7 +397,7 @@ scoped_ptr<HistogramBase> PersistentHistogramAllocator::CreateHistogram( | 
| return histogram; | 
| } | 
|  | 
| -scoped_ptr<HistogramBase> PersistentHistogramAllocator::GetHistogram( | 
| +std::unique_ptr<HistogramBase> PersistentHistogramAllocator::GetHistogram( | 
| Reference ref) { | 
| // Unfortunately, the histogram "pickle" methods cannot be used as part of | 
| // the persistance because the deserialization methods always create local | 
| @@ -413,7 +417,7 @@ scoped_ptr<HistogramBase> PersistentHistogramAllocator::GetHistogram( | 
| return CreateHistogram(histogram_data); | 
| } | 
|  | 
| -scoped_ptr<HistogramBase> | 
| +std::unique_ptr<HistogramBase> | 
| PersistentHistogramAllocator::GetNextHistogramWithIgnore(Iterator* iter, | 
| Reference ignore) { | 
| PersistentMemoryAllocator::Reference ref; | 
| @@ -441,7 +445,7 @@ void PersistentHistogramAllocator::FinalizeHistogram(Reference ref, | 
| memory_allocator_->SetType(ref, 0); | 
| } | 
|  | 
| -scoped_ptr<HistogramBase> PersistentHistogramAllocator::AllocateHistogram( | 
| +std::unique_ptr<HistogramBase> PersistentHistogramAllocator::AllocateHistogram( | 
| HistogramType histogram_type, | 
| const std::string& name, | 
| int minimum, | 
| @@ -521,7 +525,7 @@ scoped_ptr<HistogramBase> PersistentHistogramAllocator::AllocateHistogram( | 
| // using what is already known above but avoids duplicating the switch | 
| // statement here and serves as a double-check that everything is | 
| // correct before commiting the new histogram to persistent space. | 
| -    scoped_ptr<HistogramBase> histogram = CreateHistogram(histogram_data); | 
| +    std::unique_ptr<HistogramBase> histogram = CreateHistogram(histogram_data); | 
| DCHECK(histogram); | 
| if (ref_ptr != nullptr) | 
| *ref_ptr = histogram_ref; | 
| @@ -575,7 +579,7 @@ void PersistentHistogramAllocator::ImportGlobalHistograms() { | 
| subtle::NoBarrier_Load(&g_allocator->last_created_); | 
|  | 
| while (true) { | 
| -      scoped_ptr<HistogramBase> histogram = | 
| +      std::unique_ptr<HistogramBase> histogram = | 
| g_allocator->GetNextHistogramWithIgnore(&iter, last_created); | 
| if (!histogram) | 
| break; | 
|  |