190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// found in the LICENSE file. 490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "chrome/browser/android/resource_mapper.h" 690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include <map> 890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "base/lazy_instance.h" 1090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "base/logging.h" 1190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "grit/theme_resources.h" 1290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace { 1490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)typedef std::map<int, int> ResourceMap; 1690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)base::LazyInstance<ResourceMap>::Leaky g_id_map = LAZY_INSTANCE_INITIALIZER; 1790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} // namespace 1990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 2090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)const int ResourceMapper::kMissingId = -1; 2190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 2290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)int ResourceMapper::MapFromChromiumId(int resource_id) { 2390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) if (g_id_map.Get().empty()) { 2490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ConstructMap(); 2590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) } 2690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 2790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ResourceMap::iterator iterator = g_id_map.Get().find(resource_id); 2890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) if (iterator != g_id_map.Get().end()) { 2990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return iterator->second; 3090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) } 3190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 3290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // The resource couldn't be found. 3390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) NOTREACHED(); 3490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return kMissingId; 3590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 3690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 3790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)void ResourceMapper::ConstructMap() { 3890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) DCHECK(g_id_map.Get().empty()); 3990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) int next_id = 0; 4090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 4190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define DEFINE_RESOURCE_ID(c_id,java_id) g_id_map.Get()[c_id] = next_id++; 4290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "chrome/browser/android/resource_id.h" 4390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#undef DEFINE_RESOURCE_ID 4490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 45