Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / extensions / api / signed_in_devices / id_mapping_helper.h
1 // Copyright (c) 2013 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 #ifndef CHROME_BROWSER_EXTENSIONS_API_SIGNED_IN_DEVICES_ID_MAPPING_HELPER_H__
6 #define CHROME_BROWSER_EXTENSIONS_API_SIGNED_IN_DEVICES_ID_MAPPING_HELPER_H__
7
8 #include <string>
9 #include <vector>
10
11 #include "base/memory/scoped_ptr.h"
12
13 namespace base {
14 class DictionaryValue;
15 }  // namespace base
16
17 namespace sync_driver {
18 class DeviceInfo;
19 }  // namespace sync_driver
20
21 class Profile;
22
23 namespace extensions {
24
25 // In order to not expose unique GUIDs for devices to third pary apps,
26 // the unique GUIDs are mapped to local ids and local ids are exposed to apps.
27 // The functions in this file are helper routines to do the mapping.
28
29 // Gets public id from GUID, given a dictionary that has the mapping.
30 // If it cannot find the GUID the public id returned will be empty.
31 std::string GetPublicIdFromGUID(
32     const base::DictionaryValue& id_mapping,
33     const std::string& guid);
34
35 // Gets the GUID from public id given a dictionary that has the mapping.
36 // If it cannot find the public id, the GUID returned will be empty.
37 std::string GetGUIDFromPublicId(
38     const base::DictionaryValue& id_mapping,
39     const std::string& id);
40
41 // Creates public id for devices that don't have a public id. To create mappings
42 // from scratch an empty dictionary must be passed. The dictionary will be
43 // updated with the mappings. The |device_info| objects will also be updated
44 // with the public ids.
45 // The dictionary would have the public id as the key and the
46 // device guid as the value.
47 void CreateMappingForUnmappedDevices(
48     std::vector<sync_driver::DeviceInfo*>* device_info,
49     base::DictionaryValue* value);
50
51 // Gets the device info for a given client id. If the device is not found
52 // the returned pointer would be null.
53 scoped_ptr<sync_driver::DeviceInfo> GetDeviceInfoForClientId(
54     const std::string& client_id,
55     const std::string& extension_id,
56     Profile* profile);
57
58 }  // namespace extensions
59
60 #endif  // CHROME_BROWSER_EXTENSIONS_API_SIGNED_IN_DEVICES_ID_MAPPING_HELPER_H__