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 keep track of transient IDs for removable devices, so 6// persistent device IDs are not exposed to renderers. Once a removable device 7// gets mapped to a transient ID, the mapping remains valid for the duration of 8// TransientDeviceIds' lifetime. 9 10#ifndef COMPONENTS_STORAGE_MONITOR_TRANSIENT_DEVICE_IDS_H_ 11#define COMPONENTS_STORAGE_MONITOR_TRANSIENT_DEVICE_IDS_H_ 12 13#include <map> 14#include <string> 15 16#include "base/basictypes.h" 17#include "base/threading/thread_checker.h" 18 19namespace storage_monitor { 20 21class TransientDeviceIds { 22 public: 23 TransientDeviceIds(); 24 ~TransientDeviceIds(); 25 26 // Returns the transient ID for a given |device_id|. 27 // |device_id| must be for a fixed or removable storage device. 28 // If |device_id| has never been seen before, a new, unique transient id will 29 // be assigned. 30 std::string GetTransientIdForDeviceId(const std::string& device_id); 31 32 // Get the reverse mapping for a transient ID. Returns an empty string if the 33 // |transient_id| cannot be found. 34 std::string DeviceIdFromTransientId(const std::string& transient_id) const; 35 36 private: 37 typedef std::map<std::string, std::string> IdMap; 38 39 IdMap device_id_map_; 40 IdMap transient_id_map_; 41 42 base::ThreadChecker thread_checker_; 43 44 DISALLOW_COPY_AND_ASSIGN(TransientDeviceIds); 45}; 46 47} // namespace storage_monitor 48 49#endif // COMPONENTS_STORAGE_MONITOR_TRANSIENT_DEVICE_IDS_H_ 50