Home | History | Annotate | Download | only in storage_monitor
      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 
     19 namespace storage_monitor {
     20 
     21 class 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