xref: /aosp_15_r20/external/libchrome/base/metrics/metrics_hashes.cc (revision 635a864187cb8b6c713ff48b7e790a6b21769273)
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 Worker inline 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 Worker uint64_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