1*635a8641SAndroid Build Coastguard Worker // Copyright 2014 The Chromium Authors. All rights reserved. 2*635a8641SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*635a8641SAndroid Build Coastguard Worker // found in the LICENSE file. 4*635a8641SAndroid Build Coastguard Worker 5*635a8641SAndroid Build Coastguard Worker #include "base/metrics/metrics_hashes.h" 6*635a8641SAndroid Build Coastguard Worker 7*635a8641SAndroid Build Coastguard Worker #include "base/logging.h" 8*635a8641SAndroid Build Coastguard Worker #include "base/md5.h" 9*635a8641SAndroid Build Coastguard Worker #include "base/sys_byteorder.h" 10*635a8641SAndroid Build Coastguard Worker 11*635a8641SAndroid Build Coastguard Worker namespace base { 12*635a8641SAndroid Build Coastguard Worker 13*635a8641SAndroid Build Coastguard Worker namespace { 14*635a8641SAndroid Build Coastguard Worker 15*635a8641SAndroid Build Coastguard Worker // Converts the 8-byte prefix of an MD5 hash into a uint64_t value. DigestToUInt64(const base::MD5Digest & digest)16*635a8641SAndroid Build Coastguard Workerinline uint64_t DigestToUInt64(const base::MD5Digest& digest) { 17*635a8641SAndroid Build Coastguard Worker uint64_t value; 18*635a8641SAndroid Build Coastguard Worker DCHECK_GE(sizeof(digest.a), sizeof(value)); 19*635a8641SAndroid Build Coastguard Worker memcpy(&value, digest.a, sizeof(value)); 20*635a8641SAndroid Build Coastguard Worker return base::NetToHost64(value); 21*635a8641SAndroid Build Coastguard Worker } 22*635a8641SAndroid Build Coastguard Worker 23*635a8641SAndroid Build Coastguard Worker } // namespace 24*635a8641SAndroid Build Coastguard Worker HashMetricName(base::StringPiece name)25*635a8641SAndroid Build Coastguard Workeruint64_t HashMetricName(base::StringPiece name) { 26*635a8641SAndroid Build Coastguard Worker base::MD5Digest digest; 27*635a8641SAndroid Build Coastguard Worker base::MD5Sum(name.data(), name.size(), &digest); 28*635a8641SAndroid Build Coastguard Worker return DigestToUInt64(digest); 29*635a8641SAndroid Build Coastguard Worker } 30*635a8641SAndroid Build Coastguard Worker 31*635a8641SAndroid Build Coastguard Worker } // namespace metrics 32