| Index: base/metrics/histogram_samples.cc | 
| diff --git a/base/metrics/histogram_samples.cc b/base/metrics/histogram_samples.cc | 
| index 9e86a65258d1010a5b629163f56108e6f7e0748f..59f38fc8ab5c24bcc2350b2636a97f56e5a889cf 100644 | 
| --- a/base/metrics/histogram_samples.cc | 
| +++ b/base/metrics/histogram_samples.cc | 
| @@ -7,6 +7,7 @@ | 
| #include <limits> | 
|  | 
| #include "base/compiler_specific.h" | 
| +#include "base/numerics/safe_conversions.h" | 
| #include "base/numerics/safe_math.h" | 
| #include "base/pickle.h" | 
|  | 
| @@ -31,14 +32,14 @@ class SampleCountPickleIterator : public SampleCountIterator { | 
| bool Done() const override; | 
| void Next() override; | 
| void Get(HistogramBase::Sample* min, | 
| -           HistogramBase::Sample* max, | 
| +           int64_t* max, | 
| HistogramBase::Count* count) const override; | 
|  | 
| private: | 
| PickleIterator* const iter_; | 
|  | 
| HistogramBase::Sample min_; | 
| -  HistogramBase::Sample max_; | 
| +  int64_t max_; | 
| HistogramBase::Count count_; | 
| bool is_done_; | 
| }; | 
| @@ -55,14 +56,14 @@ bool SampleCountPickleIterator::Done() const { | 
|  | 
| void SampleCountPickleIterator::Next() { | 
| DCHECK(!Done()); | 
| -  if (!iter_->ReadInt(&min_) || | 
| -      !iter_->ReadInt(&max_) || | 
| -      !iter_->ReadInt(&count_)) | 
| +  if (!iter_->ReadInt(&min_) || !iter_->ReadInt64(&max_) || | 
| +      !iter_->ReadInt(&count_)) { | 
| is_done_ = true; | 
| +  } | 
| } | 
|  | 
| void SampleCountPickleIterator::Get(HistogramBase::Sample* min, | 
| -                                    HistogramBase::Sample* max, | 
| +                                    int64_t* max, | 
| HistogramBase::Count* count) const { | 
| DCHECK(!Done()); | 
| *min = min_; | 
| @@ -220,15 +221,15 @@ bool HistogramSamples::Serialize(Pickle* pickle) const { | 
| return false; | 
|  | 
| HistogramBase::Sample min; | 
| -  HistogramBase::Sample max; | 
| +  int64_t max; | 
| HistogramBase::Count count; | 
| for (std::unique_ptr<SampleCountIterator> it = Iterator(); !it->Done(); | 
| it->Next()) { | 
| it->Get(&min, &max, &count); | 
| -    if (!pickle->WriteInt(min) || | 
| -        !pickle->WriteInt(max) || | 
| -        !pickle->WriteInt(count)) | 
| +    if (!pickle->WriteInt(min) || !pickle->WriteInt64(max) || | 
| +        !pickle->WriteInt(count)) { | 
| return false; | 
| +    } | 
| } | 
| return true; | 
| } | 
| @@ -238,7 +239,7 @@ bool HistogramSamples::AccumulateSingleSample(HistogramBase::Sample value, | 
| size_t bucket) { | 
| if (single_sample().Accumulate(bucket, count)) { | 
| // Success. Update the (separate) sum and redundant-count. | 
| -    IncreaseSumAndCount(static_cast<int64_t>(value) * count, count); | 
| +    IncreaseSumAndCount(strict_cast<int64_t>(value) * count, count); | 
| return true; | 
| } | 
| return false; | 
| @@ -262,12 +263,12 @@ bool SampleCountIterator::GetBucketIndex(size_t* index) const { | 
| } | 
|  | 
| SingleSampleIterator::SingleSampleIterator(HistogramBase::Sample min, | 
| -                                           HistogramBase::Sample max, | 
| +                                           int64_t max, | 
| HistogramBase::Count count) | 
| : SingleSampleIterator(min, max, count, kSizeMax) {} | 
|  | 
| SingleSampleIterator::SingleSampleIterator(HistogramBase::Sample min, | 
| -                                           HistogramBase::Sample max, | 
| +                                           int64_t max, | 
| HistogramBase::Count count, | 
| size_t bucket_index) | 
| : min_(min), max_(max), bucket_index_(bucket_index), count_(count) {} | 
| @@ -284,7 +285,7 @@ void SingleSampleIterator::Next() { | 
| } | 
|  | 
| void SingleSampleIterator::Get(HistogramBase::Sample* min, | 
| -                               HistogramBase::Sample* max, | 
| +                               int64_t* max, | 
| HistogramBase::Count* count) const { | 
| DCHECK(!Done()); | 
| if (min != nullptr) | 
|  |