1 // Copyright (c) 2012 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 CHROME_BROWSER_STORAGE_MONITOR_TRANSIENT_DEVICE_IDS_H_ 11 #define CHROME_BROWSER_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 19 class TransientDeviceIds { 20 public: 21 TransientDeviceIds(); 22 ~TransientDeviceIds(); 23 24 // Returns the transient ID for a given |device_id|. 25 // |device_id| must be for a fixed or removable storage device. 26 // If |device_id| has never been seen before, a new, unique transient id will 27 // be assigned. 28 std::string GetTransientIdForDeviceId(const std::string& device_id); 29 30 // Get the reverse mapping for a transient ID. Returns an empty string if the 31 // |transient_id| cannot be found. 32 std::string DeviceIdFromTransientId(const std::string& transient_id) const; 33 34 private: 35 typedef std::map<std::string, std::string> IdMap; 36 37 IdMap device_id_map_; 38 IdMap transient_id_map_; 39 40 base::ThreadChecker thread_checker_; 41 42 DISALLOW_COPY_AND_ASSIGN(TransientDeviceIds); 43 }; 44 45 #endif // CHROME_BROWSER_STORAGE_MONITOR_TRANSIENT_DEVICE_IDS_H_ 46