transient_device_ids.cc 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. // Copyright 2014 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. // TransientDeviceIds implementation.
  5. #include "components/storage_monitor/transient_device_ids.h"
  6. #include "base/check.h"
  7. #include "base/containers/contains.h"
  8. #include "base/guid.h"
  9. #include "components/storage_monitor/storage_info.h"
  10. namespace storage_monitor {
  11. TransientDeviceIds::TransientDeviceIds() {}
  12. TransientDeviceIds::~TransientDeviceIds() {}
  13. std::string TransientDeviceIds::GetTransientIdForDeviceId(
  14. const std::string& device_id) {
  15. DCHECK(thread_checker_.CalledOnValidThread());
  16. if (!base::Contains(device_id_map_, device_id)) {
  17. std::string transient_id;
  18. do {
  19. transient_id = base::GenerateGUID();
  20. } while (base::Contains(transient_id_map_, transient_id));
  21. device_id_map_[device_id] = transient_id;
  22. transient_id_map_[transient_id] = device_id;
  23. }
  24. return device_id_map_[device_id];
  25. }
  26. std::string TransientDeviceIds::DeviceIdFromTransientId(
  27. const std::string& transient_id) const {
  28. auto it = transient_id_map_.find(transient_id);
  29. if (it == transient_id_map_.end())
  30. return std::string();
  31. return it->second;
  32. }
  33. } // namespace storage_monitor