// Copyright (c) 2013 The Chromium Authors. All rights reserved. | |
// Use of this source code is governed by a BSD-style license that can be | |
// found in the LICENSE file. | |
#ifndef CHROME_BROWSER_EXTENSIONS_API_SIGNED_IN_DEVICES_ID_MAPPING_HELPER_H__ | |
#define CHROME_BROWSER_EXTENSIONS_API_SIGNED_IN_DEVICES_ID_MAPPING_HELPER_H__ | |
#include <string> | |
#include <vector> | |
#include "base/memory/scoped_ptr.h" | |
namespace base { | |
class DictionaryValue; | |
} // namespace base | |
namespace browser_sync { | |
class DeviceInfo; | |
} // namespace browser_sync | |
class Profile; | |
namespace extensions { | |
// In order to not expose unique GUIDs for devices to third pary apps, | |
// the unique GUIDs are mapped to local ids and local ids are exposed to apps. | |
// The functions in this file are helper routines to do the mapping. | |
// Gets public id from GUID, given a dictionary that has the mapping. | |
// If it cannot find the GUID the public id returned will be empty. | |
std::string GetPublicIdFromGUID( | |
const base::DictionaryValue& id_mapping, | |
const std::string& guid); | |
// Gets the GUID from public id given a dictionary that has the mapping. | |
// If it cannot find the public id, the GUID returned will be empty. | |
std::string GetGUIDFromPublicId( | |
const base::DictionaryValue& id_mapping, | |
const std::string& id); | |
// Creates public id for devices that don't have a public id. To create mappings | |
// from scratch an empty dictionary must be passed. The dictionary will be | |
// updated with the mappings. The |device_info| objects will also be updated | |
// with the public ids. | |
// The dictionary would have the public id as the key and the | |
// device guid as the value. | |
void CreateMappingForUnmappedDevices( | |
std::vector<browser_sync::DeviceInfo*>* device_info, | |
base::DictionaryValue* value); | |
// Gets the device info for a given client id. If the device is not found | |
// the returned pointer would be null. | |
scoped_ptr<browser_sync::DeviceInfo> GetDeviceInfoForClientId( | |
const std::string& client_id, | |
const std::string& extension_id, | |
Profile* profile); | |
} // namespace extensions | |
#endif // CHROME_BROWSER_EXTENSIONS_API_SIGNED_IN_DEVICES_ID_MAPPING_HELPER_H__ |