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 5// TransientDeviceIds implementation. 6 7#include "components/storage_monitor/transient_device_ids.h" 8 9#include "base/guid.h" 10#include "base/logging.h" 11#include "base/stl_util.h" 12#include "components/storage_monitor/storage_info.h" 13 14namespace storage_monitor { 15 16TransientDeviceIds::TransientDeviceIds() {} 17 18TransientDeviceIds::~TransientDeviceIds() {} 19 20std::string TransientDeviceIds::GetTransientIdForDeviceId( 21 const std::string& device_id) { 22 DCHECK(thread_checker_.CalledOnValidThread()); 23 24 if (!ContainsKey(device_id_map_, device_id)) { 25 std::string transient_id; 26 do { 27 transient_id = base::GenerateGUID(); 28 } while (ContainsKey(transient_id_map_, transient_id)); 29 30 device_id_map_[device_id] = transient_id; 31 transient_id_map_[transient_id] = device_id; 32 } 33 34 return device_id_map_[device_id]; 35} 36 37std::string TransientDeviceIds::DeviceIdFromTransientId( 38 const std::string& transient_id) const { 39 IdMap::const_iterator it = transient_id_map_.find(transient_id); 40 if (it == transient_id_map_.end()) 41 return std::string(); 42 return it->second; 43} 44 45} // namespace storage_monitor 46