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